From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30414 invoked by alias); 19 Feb 2013 20:45:28 -0000 Received: (qmail 30200 invoked by uid 22791); 19 Feb 2013 20:45:25 -0000 X-SWARE-Spam-Status: No, hits=-4.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL X-Spam-Check-By: sourceware.org Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Feb 2013 20:44:59 +0000 Received: from svr-orw-exc-10.mgc.mentorg.com ([147.34.98.58]) by relay1.mentorg.com with esmtp id 1U7u3d-0003DN-W9 from Maciej_Rozycki@mentor.com ; Tue, 19 Feb 2013 12:44:58 -0800 Received: from SVR-IES-FEM-01.mgc.mentorg.com ([137.202.0.104]) by SVR-ORW-EXC-10.mgc.mentorg.com with Microsoft SMTPSVC(6.0.3790.4675); Tue, 19 Feb 2013 12:44:58 -0800 Received: from [172.30.64.249] (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.1.289.1; Tue, 19 Feb 2013 20:44:54 +0000 Date: Tue, 19 Feb 2013 20:45:00 -0000 From: "Maciej W. Rozycki" To: Richard Sandiford CC: Catherine Moore , , Subject: [PATCH 2/2] MIPS: Compressed PLT/stubs support test cases In-Reply-To: Message-ID: References: User-Agent: Alpine 1.10 (DEB 962 2008-03-14) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323328-213282803-1361306258=:6762" Content-ID: Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2013-02/txt/msg00520.txt.bz2 --8323328-213282803-1361306258=:6762 Content-Type: text/plain; charset="US-ASCII" Content-ID: Content-length: 18734 Hi, Not much to say here, except that it's a huge pile of stuff. ;) I believe that the selection of samples I made is representative for the functionality covered. It certainly proved itself in that it revealed a number of corner-case problems that I have either addressed with separate patches already posted to cover individual issues or by adjusting the compressed PLT/stubs support change itself. Which is also why I'm making this submission now rather than a fortnight ago as I originally expected. I realise this piece is extensive, which is why I have designed this test case subset with long-term maintainability in mind. Therefore the mips-elf.exp part is relatively simple (for a reasonable definition of "simple"), in that it's a loop over 16 cases tested for various o32 configurations. The selection of sources chosen for these tests is meant to cover various internal paths of code being examined, it is meant to be exhaustive. There is some redundancy however, for example for lazy binding stubs some of these individual tests add no value. I have decided however, that it will be easier to maintain this uniform set of selections rather than having more individual tests prepared for each of the individual configuration covered. This is also why I decided there's less harm from some sources being assembled multiple times (i.e. some performance hit with testsuite runs) than gain from having the individual test cases self-contained. Similarly, there's a smaller loop for NewABI tests that just have 2 cases to verify compressed code does not sneak into PLT there and check lazy stubs at the same time. The tests may be merged back into the loop used for o32 configurations if support for compressed PLT is ever added for NewABIs, except that currently we have some restrictions on what MIPS16 code we can produce for the NewABIs due to missing relocations. I had to address it already in one of the MIPS16 cases where the corresponding standard MIPS and microMIPS code uses the DLA macro, but there's no equivalent, perhaps using the %higher and %highest operators, in the MIPS16 mode. Now the good side of this approach is the dumps are easy to maintain. Assuming a legitimate regression occurs in the future because of a change in functionality, then the testsuite can simply be run to produce all the binaries required and failures ignored. Then dumps can be easily updated with a script and differences examined for correctness. I can post the script I used (although it's a bit rough) -- I don't suppose anybody might have even briefly thought I produced these dumps manually. ;) I did review the results to match expectations though (and actually adjusted code accordingly in a couple cases till they matched). Comments are welcome, as usually, and I hope this is OK once the change proper goes in; this part isn't supposed to change as the test patterns are meant to serve as a conformance check. Apologies about the ChangeLog entry. ;) 2013-02-19 Maciej W. Rozycki ld/testsuite/ * ld-mips-elf/mixed-dyn-aux-micromips.dd: New test. * ld-mips-elf/mixed-dyn-aux-micromips.nd: New test. * ld-mips-elf/mixed-dyn-aux-mips.dd: New test. * ld-mips-elf/mixed-dyn-aux-mips.nd: New test. * ld-mips-elf/mixed-dyn-aux-mips16.dd: New test. * ld-mips-elf/mixed-dyn-aux-mips16.nd: New test. * ld-mips-elf/mixed-dyn-aux-n32-mips.dd: New test. * ld-mips-elf/mixed-dyn-aux-n32-mips.nd: New test. * ld-mips-elf/mixed-dyn-aux-n64-mips.dd: New test. * ld-mips-elf/mixed-dyn-aux-n64-mips.nd: New test. * ld-mips-elf/mixed-dyn-n32-pic-cmm-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-n32-pic-cmm-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-n32-pic-cst-cst-cst-st.dd: New test. * ld-mips-elf/mixed-dyn-n32-pic-cst-cst-cst-st.nd: New test. * ld-mips-elf/mixed-dyn-n32-plt-c16-c16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-n32-plt-c16-c16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-n32-plt-cmm-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-n32-plt-cmm-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-n64-pic-cmm-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-n64-pic-cmm-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-n64-pic-cst-cst-cst-st.dd: New test. * ld-mips-elf/mixed-dyn-n64-pic-cst-cst-cst-st.nd: New test. * ld-mips-elf/mixed-dyn-n64-plt-c16-c16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-n64-plt-c16-c16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-n64-plt-cmm-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-n64-plt-cmm-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-c16-c16-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-c16-c16-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-c16-cst-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-c16-cst-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cmm-cmm-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cmm-cmm-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cmm-cst-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cmm-cst-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-c16-cst-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-c16-cst-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-c16-cst-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-c16-cst-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-cst-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-c16-cst-cst-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cmm-cst-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cmm-cst-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-cmm-cst-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-cmm-cst-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-cst-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-cst-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cmm-cst-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-c16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-c16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-cst-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-cst-cst-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-cst-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-cst-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-c16-dst-cst-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-dst-cst-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-dst-cst-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-d16-dst-cst-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cst-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cst-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-cmm-dst-cst-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-dst-cst-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-dst-cst-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dmm-dst-cst-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cst-dst-cst-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cst-dst-cst-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-cst-dst-cst-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-d16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-d16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-d16-c16-st.xd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-dmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-dmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-cst-dst-dmm-cmm-st.xd: New test. * ld-mips-elf/mixed-dyn-pic-dst-d16-dst-16.dd: New test. * ld-mips-elf/mixed-dyn-pic-dst-d16-dst-16.nd: New test. * ld-mips-elf/mixed-dyn-pic-dst-d16-dst-16.xd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dmm-dst-mm.dd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dmm-dst-mm.nd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dmm-dst-mm.xd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dst-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dst-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-pic-dst-dst-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-c16-c16-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-c16-c16-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-c16-cst-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-c16-cst-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cmm-cmm-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cmm-cmm-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cmm-cst-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cmm-cst-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-c16-cst-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-c16-cst-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-c16-cst-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-c16-cst-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-cst-c16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-c16-cst-cst-c16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cmm-cst-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cmm-cst-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-cmm-cst-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-cmm-cst-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-cst-cmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-cst-cmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cmm-cst-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-c16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-c16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-cmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-cmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-cst-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-cst-cst-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-c16-dst-cst-d16-c16-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-cst-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-cst-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-c16-dst-cst-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-dst-cst-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-dst-cst-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-d16-dst-cst-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cmm-dst-cst-dmm-cmm-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cst-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cst-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-cmm-dst-cst-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-dst-cst-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-dst-cst-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dmm-dst-cst-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-c16-d16-cst-dst-c16-d16-cst-dst-c16-d16-16.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cmm-dmm-cst-dst-cmm-dmm-cst-dst-cmm-dmm-mm.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cst-dst-cst-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cst-dst-cst-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-cst-dst-cst-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-d16-c16-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-d16-c16-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-d16-c16-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-dmm-cmm-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-dmm-cmm-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-cst-dst-dmm-cmm-st.xd: New test. * ld-mips-elf/mixed-dyn-plt-dst-d16-dst-16.dd: New test. * ld-mips-elf/mixed-dyn-plt-dst-d16-dst-16.nd: New test. * ld-mips-elf/mixed-dyn-plt-dst-d16-dst-16.xd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dmm-dst-mm.dd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dmm-dst-mm.nd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dmm-dst-mm.xd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dst-dst-st.dd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dst-dst-st.nd: New test. * ld-mips-elf/mixed-dyn-plt-dst-dst-dst-st.xd: New test. * ld-mips-elf/mixed-dyn-aux-micromips.s: New test source. * ld-mips-elf/mixed-dyn-aux-mips.s: New test source. * ld-mips-elf/mixed-dyn-aux-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-n32-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-call-n64-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-1-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-n32-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-call-n64-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-2-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-n32-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-call-n64-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-pic-3-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-n32-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-call-n64-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-1-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-n32-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-call-n64-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-2-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-n32-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-n32-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-n64-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-call-n64-mips16.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-data-micromips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-data-mips.s: New test source. * ld-mips-elf/mixed-dyn-plt-3-data-mips16.s: New test source. * ld-mips-elf/mixed-dyn-pic.ld: New test linker script. * ld-mips-elf/mixed-dyn-plt.ld: New test linker script. * ld-mips-elf/mips-elf.exp: Run the new tests. Maciej binutils-umips16-plt-stubs-test.diff [Patch attached compressed due to its size.] --8323328-213282803-1361306258=:6762 Content-Type: application/octet-stream; name="binutils-umips16-plt-stubs-test.diff.bz2" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="binutils-umips16-plt-stubs-test.diff.bz2" Content-length: 29996 QlpoOTFBWSZTWWS6pPcCO7d/gH88AgBe///////fbr////5gmb8Prtnm3yOO 7opQEzM0PePr7slbMLe7kAAo5hPr3n1KBVFVRQopIADufHru1uY66fRS3HUj KjdKHRzzHQB1wjdYC9u0Ab0PXX06ANPken30c5bu6NbyDXUIAJtnhu6iJfYc ez7bwNABQAAD58+JtGe+102a7bQByUADVeig21D4AD77cNHo8vtvpXocXttG OncfXswCrM8K673e6HlJd989XycH3p96sXrQirXkc0z7vAXDtx1QAD304a77 FclAAfQB9bM9MSfb6fFceO+lPu3oym0B9j5D6bvt3wAOfOevT19Mj6gId10C 3Wdy4333gAAAAAOeMT0cGgApVH3vdwd3dJvcALlnw3OGJW+86hAB7V8+R7ug D0+8Y5AFUO+yuiBFVXyVY1BprBbjOFXVEZWloBjakNrQM1vhJEaDQKUjIQU9 IA9RtQD1GQaAAAAAABImhCpTCmQ0n6imnqPU0yAAAAAAAAAAEmUpIQQmTUxT 1MgZAD1Gg9QAAAAABoASeqUiIiGhNT2k0gNBp6gAMQaAAAAAABNSoo00agGk xJPyTIyk0HqeU2U0GmmQ0B+pAAyYj1AKSkRCBGjQCaaKZMENCajyJtGmk8jT Ue0pk9DTRqPU0/MpJ/DCr5AKMyqVkVZSZqk0hlQTMjVhFKzIFMJVMn4FS9+2 I1rbbMyOalwmhNWIc1U42zVrWSf876L8a/q/5X9N/w/ml/QXfOZ0rr/blm2p m2pnO1XaTzIdCxMQYIiVKwo0LWK1xeVIu1XhH8lJfISp5WlFduapR2H/aS/n XYkdqud3/BmmaZNkyMbUGi2NEZzpKl/v1OIZCuFTAY2P3sex6v+vMLaEhFEu 45DsRJQHHduwm6Ae7kcdSOKI8Aqqvcl2EnmPJ/Ut5eHPL2Q84vdd6ZyNO/sk 5/XlPtJ9Kp6heV8BXwrar9NWsREtpLaJTCzSlJpiWZRikkiyY2szbWbWwllZ UOWonBfUVHveziqeBeLwtK6JdHHFKXH1viPW+Vlw4cOHDhxcXFxkREREWkPv VBLdk3BBBBBBGjRoSIiIiIArIEEEEEEEaNGhIiIiIQPmbY30yHYqnpVPb6Ed rRMjSemzU2ksVRiJmxFDVMWrhpMpcouNm1MzWljJjajaNoqNk1GsSbIambaZ kGFosVSVMqZoMERAjZqW1utTVlOC1LOVkOTIRpWVcDNtpLaS2lJmbNIzRSWS mliiZZNEyEjVBgaNVznsF3CdK7KOzbDZSwmLZIZYJasANNsrrZVa9aXiKgiZ BJEkkZEqQskUGwaZU0mkxSbRsRRjEYixI1TFrFtaNppppalLGqZKakym0mZt lNpmSLElRqxiqM1yvmq+q+7W1sWY1gxlZpMwto2GamytYtp7gU+BLyOh5eSn lV5bbbbZsXNzbThVdlFMjuyNylxRXFaLNFiVM1FNLKbNNGllKTMpSZMimZGZ JFkrXwOzF6DCsVYjkF8ZWldVGveR8tWabGxrVZoZoW0WxNam0rWFtWs7V6Az CmaL0piONmWbNKePni9KjyLsXkr1FwV4K5pXYuhfeLr7Sr0Pk+Tf8v93/noB xhc/+d1uv1/fzx28bb/rqr1++Q+lt8kfXX5n9a/Yw9EE/qheql+E/oqKfswS sPtJVUJQJJVUk1LA8CNEQ6BCNEWIII0RaIgRRIRESIiIiI79b9YII0RFUEEa IhpCCNER69jGHElvQRZCFpKUpgSAmog/iiVQRdh0JkcDWIRAJ2JEdRZQVAlD JgShx0Oi1K+dtwmMVFi+7a8Ji+YJi+aoBtaoLdq0Dzue77/v+h6M4U/eEyh8 qx8siie4pqFI1CkFiFPL1g8wfK+r86vC89eVU3VKlVFEAtO9x47IQYzSBTLy owpMWRbZVt62/dAXwVEdEDVflnRnSiIiI+efyBL5aXy0rkVeSyvJSbbaY41Q 5ahJn3Hx9D+fVQw0/rED+msHndLbbvd8d6qwURFqTyXJUqC5mvDyPPNS1VQN Ek2qpopiU8Acd2gRj2YuDh7KlDZ9bwCGN4A6ERVRGhlUUZYiXNDIPTKhSWpr dzKqm3m0RmjOciWG5vDJVG3ZBzTR6csmLdu+MvGVisx4GZlzaMs3dHNrWzOc 5y7sznCPC1pZro41lQOi9yHI0WZCcfG2A+uPrqbMZMo2vWuzdukl+zev71da j0vG4g5MBtDyf74cVZqab0CmNtJjY0jUg3gt43WKmRkLN9pQIyKjvA4xb227 05DvZgREPY1rP+SuAHvjXno9zgKmtVt7er1bJm23jaOJXM4xsJUdU9VKinSG PRQYB1KoCzG6AdUVHy6XExqFWRNO+Rpq4DeqmyCfJ0Cf7GBr8J9WQbVAZi17 TZTKqgr0pXmEGxu2MUPHH5CzG3rfux+E2WqoIUMris25RWFI6vAezOBqY4Oj w1JCrdunZUPUUrKyVDJVRh1Piw5zwQH2dp23UkkxMousOHr4XetGB5vy8cY9 2qfkUdJcsGvWylVatzXelVIPhpl8b4ttZnG9DDWOizfPHyrdnlqs0OUdtlFM argVbpXhT8rUirJ7gWHFblVkszKr3i+4Lh2oOm2NkbumPx3QJrGN+2pQYOm+ s0292Y25SvtUddazOcmSXduSYzCPm1reVdrLUktmStqntkpYWxyXNvGOSUzI 6mU9LEFyPlz4R53Pq853dx4XnleT5VQdWOpJLq7uOn8j5flf96viq5MyzP0y sLzctuX9/4TLuufou+7k/Vnfi/Pjrd+ff1VO78vHwYfnOHD5Hjhw4QhCEIQh D7foPsz+CJID9Akgvz2pJazU2jbMTJmxlKSICIyX2XTfi6ufnst0USK1owjt YjQVrQOzWIpSKEYoRy5VFX82AT7iPLcCgcNHl3Z2TtHbOOTLgq0VagXU6Una FEIPDfmMb0eEeb1wT551ndNm0bNLMtGNBg1eW3qy179s3m3q9ZrssilQY22r ZbVsraNYSeuFXkX8lkvwy8t+vWZCmkomWkksVmGyuP1/iUr9qh4/LsnD7z61 0dBAgoECBBSfT5/m/P98m72qqqqhJKhJKw/aLFxdAX6SjBIhS97m79qlDdfa Djlhg/OsiQyOKpjMCQwCcdSrkFuJHDIkM80/go0SGePmOKh/cUReGJFjC4Uj bDjCRcaoxQZVMFDVUkbLGCkG0knSRpI3/b65QDTIIGXSWzIOmCnSiRZcwkh0 izi8fHfLW8ptlJ8yH0atHFRyl9CwIwmWjRVFbzlPnKslboAuJRhk4AVZBiQv UTgws7aiUIwAyLBjfMRlF0OjNHwhlyOls5ayYZEmAZDjIgdOdqH6RhtEXRxb ClRwsnbRWUMhjbkohFEWDwko8HCZHReqQdQxgGRcP7nDRCTjHKUDXy/loHFY 2V2xloCUMi6ZOmuMmGWWTF+iWtDT9o6NZPKi16vepX9ThF+RqtCmRtEuMKrj TApTYTvCakBKqFT4JGFpER9U+S9+egH3JjOK5Sz5V3EaMaq1iG7yFGV0WWXL obAmTw6o7umIqzqa5PeKWsjQwnYwtu4UGda6Pd3OqE6Yq4wYNdQyCFVV7ZGM DKCwodR0QsSFNsDlN3obsgNaMKOhFSs54wm18UX8ZvPgIDoNNkpO0E8sEBtN kYcZihlqLVS96gibJnKao9Wp/NYvrK4Y0RUvfMTCSsKThQ/gddvmwqFq9AW0 4dSapYWFUF0w5AMrfKB8vpR5RLwMDT6+IyY2mGjIMz4+kXeXC4HzD3qk7I4X YccGco7LB6NkEeqnoxYDiYpQcavqlBgkZGSDRBUyAGNFAyMFLUQLgzPcoQfH N3hPzFNVICnsjEhAQ1liVFGDKylulXwobA+FVAd0pPo5ZmBjXXGr0ioxiuVk cgYyBIwOXtFBgyvkLdTwIwcKJQJ6FC/hLhhyQYNrNB/WmsEqwqSGVQKj0izr oqDi1jBQrlmHZhUqL54xBoYU509KJlgj4rRyzrb2QtjLray6TXzfrC59RAMP q12hI8/yM1NLHiI4n0FrB3sEPogIAGVBuWgyiqCiveiTsvNYwmB5GjsKEZws KdZyJPcZUCqosFegFrLgwWSo9EiRsDF68cLuXTJVFlwk+4T0YK0Ul6B8zqs+ tkcOpAykfRnARcfaZWcSztzhl9m7bosZMlExWhxA479elxwLF/liqVhjUHiv hq1EYGBynB7xUaIJad0CsZD6fdOrr3fl87cUSZQ6wv47iXM1wp9+PqTd72WW I5Cfcef3F9QuamNcTMYGIZU5G4WhtlSxDuGxMtNurmhkrMjNhsDZV6nrFg08 CsOSx3DnRDLF+hws+GRxS27cWcxIxR0dbtXrdDlM3oRtM5WvSFEdcITWOR2q ewJiqC7ENldxbl4lysjQFYqb01i9qUHeCa7oVJLIahO3VCUooYymaGTlddYi u4dS1DQ9rHaRgqPN4MojZY2KINq41muzGclrraZaYywbGRu+TFKm4WYDV7Kw NRrOXNj9Jy1xmUlKaJgpqMag6VCCmdWMixAwM189bI1IyaTnCaEEpSlOTGGz 3NIh2y2Zop1UfbXdlrF7Vzfea2M5zmsazTGdWVmMQz1GwYq2u5sZLP18y0zS 5SkwKpY5u5ccoSJx6lRyoQd9cqDGRyc5fNSuY+RixtrfKy1ZtNJh4e1KRFKR UQkvuQgTJIL7q+z7L8UCDr7b1dvXohEuvV6m9d7NszZ26dz9vCP/J99/oKV/ cfyZs2JlWiMq0R8/yKV4evv93Oc8c51zZV/N9W5X8fG9PUoLUtqFV3nPKrKr KqqzK36fery8qqrvLzyqqqqqq+PbvUraaVBqVd9098ldT6um5bbbbu5G7nMq vjK2qqqlVuVl1tV7V5XyqqrtgP2gADYwfrPzbbvQor+hrn42uctf9lFkNShY 2iTTVpjfH+/prVcUlmPi44zOViLOctiLFotVVKtVfuG25PT8r83/B6jzPK9n 2etTptjTNY1hJKgyCD86tfrXdfhI/B9X19fhpaJFV2F2WVJKIoqQSAQIEByV TJRCSfNIEUhHxPD5ToOZSo4EIRwiroWJxmGZo6h8nmHvF7/FTkk0FzJw809K OqphL0nSXKXUXCPEXO++Duujk6uXApuxEBaIKiokUaKkC26Oo573m2Jbm0nx tMxmtmZixYiJEk/bravpagiRmba0lh5R1B8JX3Suij2Evkg8IPcg81TzT89J 8KfI6Ff7YVdKK6CroKugq6Cr1gftUPhUPvgFI/vJT/zqI/ZUPm+pXBQ0ctbS 4oNlB1VLqp1TqQYYg2qVznFFlYVcwOblciZVYlxhc0n9fTqdB3VDod6roO6N VoamwzXaUbiGSXCKfeFX9yiU/GJWp98KvFK6MWffV+8raNtiqotiq+pkc236 V4aJRFjju7btcLh4zWAOTLjbJ+x4qK5URe2g6OelxWTWTTpNuQN3Q/gnCemc KI1By4zZ1rmZuc5SO9STKrwsMTbZPy/e5RRHO82xZHVSpQ1Nfkra4cchwieI uuzNtszbqrNxzDac5TNrnkg4+tI+bkMHre8bAe3Rk7i2bOu1E4nQtKChA7c8 awXIoxXFHGuO3F0ovcqIh25kzgketFBcW3Ol3Ojcmzc88s2QxJsgZIkpjq86 WNddnGuy60J0qJDNSI0ogg62sE06C7IFCRukpds2uu27i1UuqJJQSEJiKlXE RGhw4i2nKgl3HAiq7u4josUccd2tMCKHEdwsypEKLtm3Tc5znPeqH9dVGVD1 XlTqnVCrmuYtuEQ604g6cwq9rwhfhewX5r2C2VheLu4j1htVP3WizkHFPM9k O4vy9V+IL8pXI8Cr6VTjpJ5JyMWH0HepF6r7nsC9hfyqh8k8/pKV81Q+1I/B UOJD90pXalV/4oKmkh+uU7bhFqhpJdqh6kHVSjllrTWsZrNjMNiIFbKtpSJl Y2IKWma2ZjMmVD/uP8f2B+MN1f+7r+d/id1fh0t/W6Bf1F/kORP+gr5Kh/uf dQz/mJ/cMjP8xSvr/hs/X9/67rrrn8e3dyFLb9ujftuPDjUsERDEXXO8vCY5 yFhPWvfKcdOjL4UWeHiPLkmPBRMtjawTVxkqrljLdS5RZZGOsohlVcmOp+48 MKbX7O/RIQlP4qSA/l/zVJX0lW1T8fz+AbfZ/IwflR3DkPFGfcPT+uFf1EX7 qh1/Gf9Qy/8NX7zE5SV2Po+8X0+ar5m+kkT4Ja33TUxgkkxkiSRakafdA6in 8SvV0j29RcFl2c3Imv2zaZm20neja/Kkrjjn58x1aZnox+YK9Rfb34/DoPsI ufzPe6iN6y4oc9HKpz4kXAc1Nj+k5+c+gv2dcFu/hxcOphYj6lOTrJ5O1cyP kLk0aO9XI/aTrr0j5/dx9jWbbbfEIV4PPqL+5HVB09wXwi+rUbKsydeYn+t5 vR4fa/4vuv+L7Hbr/nfq52/vrj5viovtlP8HJxZDsmKNGM4+s+BUuja2cbYP xTk5zjawYZSOtWyl6vvvw/m8bb8+OVbp06af2bZkOeoyqKqtJkkkkn6+Vj49 qLH2qfCyzLM5b3Ku+0TM7vKfe0Tn7Wezm52+Shz3FYzm+AsYxioIHJAvKGHG eOy2HYGi3tG4dqjKPSR9g29fl7np33435T9FKr+xqF/gIWJRiGpGSYKymqhM iGqGZUMqS1MkbFH2PCkfDfb9rScbYTBzyTfThBRETKq9awQusZqaaYbqr1aq 16o88LIqqY558cY5OF8pHKiI4kdTqszscYYZOMy2220dVzXaai69CD+ogyoZ ivS4UcyoapaoY1Q0TKhqNUNVkGkyDVkGMqmSl/X+6/8PRKj+ZUPCocpI9+qH 8P50j6+qiq8EHaoZBT1P1/23vf1f8z/F9f+verlzrQ5FzdOsVDOyOMa2DWA7 AM2AgxSjbj58/cl87JT9lIe2vsK+nGle+rNefttcczXaIflRflfv2aZjbbYU mRTfsdyusJC1w211dGZavAvli6Cr/C2Fv03p/b+r9H6NttsAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ABttttttv7FQ/gV60fzFf4/l8fuOfX83SkoorjFC/zlJvP3q1fibjTLtfj07 u7+NFPj149Xpvbr18d/1/d++H8f8C+P+L+aofGfoSaYL9ziqzIsnByYhjC2B xwpmFacS4Zsgxitk44lZlL971+7Bvfde61/kr6PHXHg5/h4/lT3lVVVVVf0V VVVVVVfwsB3W3l048P73z/w/CH8pX8iVej2+PPb9I/dmNaJkX7F23aUsu7i7 uNilJs2zbNv51I/b6enw/yKh/h46/P+nn3v6s/0fzqDYH2F9lDDXY/R/Z/eE g/Pr8vv/hMfP4wGfy2UMR+qv7jpfDf3vTwza21t+/2/t/tz+HN/R/D+f+PN8 n9Hyh6B9XPq+Pf3/9LQzQ39RuBtDeSfj9222bKr+sq/dD2PYcA4BVwCgfq7Y CwZpNi1/tP8Cc+KjcBM9dV/phPDyuvA9791tZa1i0sZmyMMWMbNtthcUOi8x eBOJNEeYpqLkZrY1hs2bNGlhZplqjGWGMZo3IyOWMZMdtJ/RUP2qH6ldJJ+p 9H60H65bWsOR/mSeHuq1D6Z9d9L97+Q3HTx0+ZSfBDRBeQ/Zks0fkxXGNjMc ZdSUJcSWzBgzdADM6QEkQSfD6lP2mz+QX/aR2+jy+5e7x6Pk/ZfVv47n2v8s qH3JMfmyofzBRJ0/eUrmKVpKOCo1V8hwSOEFVWxJWFWQvGvC9nwlwuzsXxxh ecT8zO84rXjcNPws7Sf60np14GndJp7F7ppbToGTlq1ovH8Dx595xXn/693R 6i/dK5xRW20syjpnHKyak2Ns1moEZQElJG22povhHXFHW1JXBydbWGbWs1ms 3TOouMKzHcr73uepYktW1TCz92xWqwaILIQLopK0mJPoNMkOU3mDfGDzO1hw ecgHAjQk4lyFsy41lZliFnDUaBYrXBkEOh0G3Cx2jE1iWJWommqiDSKlDJWl kNcKxEAZY0JNDSYxppNjWMlSZLJFi0lJtJkDSSZe/Wvd728t5dK951TMs6cu HwReGBmqMaLTUMsVpksaTWozBjVtLZSWxpDUlPW9+rq+PheceultCKpSqbLh ct/RYEuynEVVCUr4QEAPQm9eK+o7HVS2x4OBAdvQlh0vIYdPg1XA7MWxez2z ZtM2KK11vg+CZsWxZlFJjbaaxm2YXMLqt6e96xe6gvV7rNVtDaLOSkdHvNSj kXowrMeiupe50dNTTTWWzZTorUKKQyWaYkYZW4g3cneXZjNjNbMTp8/4lK/d f37+2u21r9OW1X4ujRowaeWuvu9xtlrW1s3HE4bm+q8KI+FEeJI9xI9BI9qI 4qva22371Xv9W223FbuASBLq7gO13HzVv6dW+2vEBo0GgojQaDRFGM+dbW3l tvjV58QO27gEgS7dwHbdx1ruA613AJAl1dwHa7j4tXrVW2Vp+EMo+dF8/DZs 16Lhxtk5zbbtsqU0ElJfXoiIiIiB8SquAhERERMZqmZmcVtKsrLZMmSSkkpI ib5/P6W0BYJWJqqqqqoCHKlkdqqqqqqqqqqqqqqqqqqqqv4B6PZVVRFVEVcH 8QMiCIIgmCpmZmZQxlZWasiIiIiUAaSSwBpJLfTfSrzofXM3ZZbvIEgewGoA 6ruAAOqu4DUAe6u4AA4BCCq9b3vdXv2AAe6vXm8Z3bmc2sqUpVuAAABrAAAA AAawAGre6vK91b16AAAD3VvXnh3cd3HKpXcAAAGq8qbV9u1L4REVSpa+ERER ERERVZVlW+YfL551VVVVVVVVIpWEKqqquAN7gZAyigooooops2bN5PJdFwxH CxHRdF0tXVq8rV9aVvqADWAAqWpalkA4Mnq9cSRRUcnJy00VHJyctNFRyfxs Bgx9MYSEvuQH4I/N8v3fzwhCRSpRVDLclySSSSSSSSSewDqBISeZVVcqU6ky 72EjcImrd3ckkkkbbYwGMG2NMaGDE2MLxhUqihrMlOiqt2225ckkkk+dV9l9 iKKMYxgijRjNbWZbW1vb0L1MX1hi4YuCx8fIRGDYqqaawbBSqsBTmbig/1xS vaT19+se7jXxtuXHOcakZK1NFSqsFVKsFXA5ZVOFKmGiiiIIaKlVYKqVYKty gl0aoGgq3P83CleB+yKfVpHP9nVQ5JL3Pi/jUOqh+n5Ula/d/d+z6/y7BX5e fHPX2z+Vt9VBX9JUe6aqdp0V2+p4z7I+mdbnE1CS1TLkVURmWlHInCkBPJZs hDE2qmSzZCGLcuc4+ma1rNu/y9vsPc9mZnuqHHZEH2Wk4hFYc3RXX1/nQJAW MjMww7jn6eM37MgD6MY8PWR+X2h9fgD8jJUFLoaVRiqFlVkZYaa45ICeSzZC GJtVMlmyEMTao/JkU8ocn5Pkbb9Qd8j5lfdPfQ23hCIvtFfWvtWSk2k2ZUyW URYixFiAiAiAn1uNEZDIkZmSlKCgENpjTbTwBBhhX0zMMPg6hEGkgIe5sBxH bYDnbJg+D55+siMK2aGiGJtUQxNqj65F/WfGNjb7sRH6+6ojzUR+0kfaoj5y kBFAH5hJfrKUPnQP9K/TCO2R/wP2MeVDYbwEOPd07ZEkwoHjsEgoA+9VhIgZ JmBkgP1B+pfkfs4jv7h/Dm3P11O2Om1wn67D7kd4LyR08unUb0tAITrgCE5o qcHQyIXb59vnE2VreJCpxIVu9QQgqF+YpRcKiruCrcuF1cuw5Q2ZOlUdEwhQ CDqVUOr41O+1SvwYQlpBQBZEAaUmMexa+Gtc1qjV97aui7WL3vfNAjJvnOX5 vNnbFawuTHMahmEKqlgy6PUUV81Dh8jY0xrte/IfuYblOchmzZrX3nFqxTvc tbkuxgo4QVMxNB35xt7xDNXtu8oe7uhYrXsbijPYZmb2L7qQMRERohstdqcd nbTavUvYL0sF735ti77Z9eeFVRSIeWYryMV3fkjJjLplNKUTqek0wR3tuxbX BRzHr9nPKU67FzJ6/a3sWYxIvXm82bdqU3Oq3aM43irxNNUtV9LJjMTWznsV rFdwzte2QchqWWNW7WuM+5A/aaC/DVFtbzTo5eou1wnW+75NOVSzu7PjXIsK xYpa1qR1m3t2hm7S9Io5CiK1uG8wzDFnMU11ytc5fc6ubN+3MYfWQdl6KuN3 enZht623c8fJm9q2Ik0KlGNDrBvvb65vm9KwU5wN9HWuK9VrWc9K+pQXShHv YdOrhpijShYF9YM+ofNyhlLo0/oVv3eR6nOP3sd6zcL2F2O2QcTMXDbjHUbB ju6N05w6dOu/OM2yyqKmysk3jdOXvxiF6fTFrFa1lJogZMtLyOTO5nObK/cU 9Y17Itli8xHmIT4rcmDNIxmfd97rUfuOHJpvjbkNZ4u0GWuUJnOblBmvNhqz 3E7xEUexkZuZkavMa1Oog1rDRnVa0d9APStXpTNfFRs8szbYsC9jGM3eHaiA 4kkXQJhI2ksAh0CAUseJXC7MctzD3330NTuL23SuIt9yQhL4LwqKysZDK7bn DhzhrRo0a1DVu79hrU0nw6gQjWirNgZctt1hjww2UAb0fN9pSkAKyS2IGExQ 4sLS5necdnk50bPAOLiXebNXCfYMevYLWsWta9dxEdyRCwsqp1XNnZHW1CLD p0OOnTnc1VVWlFRUrUk9ZtdqUK1rkg9rnIrrb8vbzvlo8PqRqEKqK2Vg1jM6 ocCoivAg92Lq7hcuXvc5rGWWQyZWDHeWwYHDBhYFiemcmMRypWtfVQ/mbjuV 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 2c4X+zi4gYcYGcOKi4Mn37Jgh3gucoLo2E3HkdkCnrcrYlCQip0oUCly1LTa jVKpRRER7KHKzzp5LoOeSTk7y5DzI5EXPnlBsczSn27se2HbwQc7IOybFGJm KZnVavPlfK0W2eNzNj4Y5q5XV3brsfofWndqbWlWb7G7aMzKWzNF9xl0v0o5 hZk+ynv6XwZZy4uMj8MdK7Qjw1jA52cIlLrUpp0IojrROcLNkdDoExRoRURX UiSiEucOmcwlosi6cm11fq7lPf8u6Lo8LLzGtGuSuAH2SQGpSTeQL7MMy/C/ j6RfbjHMULmAwjrw57ql+Pw+M+Rb7BcUsOpSv3SB7lj7dhdsDsfVYIQyg0Yg le46q6NspjUZksy291e7l3D7T4/G65dnQX2unTkc9eq1qZpWbYs9Qfc6XS9o 4+qovOJtSzKHJ7elTiX8Xk8pGV8kcE92sDkIxvtOI2yOx0a2CtGxaxYCsuLG iF1jWoxfbx23a0CgSxGIW0aIivf93Afl+wD6/Z9mAPreyHEcKer12EtqJw/U YxjlcHJCYOQgExRGyAmPoRJ32vAvEuskG6bVezJ6qfD6SiGvYOCDffpUsNAJ ShDpCwwDIlkyMbd+x47KH3evRupXLuOLlek1NlmgYMSNQGpCxbrwLEkzBLQO N4lOUYM/F12q4MTGtQvkJIlo4jF+3CtB4cjGsemsb2x4TwP18efBlbI22Zk7 Hg9i+Sued1dJeGVorwPUr0fXr1Wly4bM1czVZdZrMr+kOLQWcLHOPcS4yd27 Z6jkkcK9ApCjjLgqUETE1YCWXdpSSBAaY0UMJLgSOQoalODyhEVNt2gj1sIq ZNwjnAg7WdDpNCSCULMOaLVp3APxL6qvZdsn1KdVccx+Enc9vgLpU4l+r7CU 8x5NJmNlY0VNaW0nmU5kr2KvTOfL6eznwzr0u/lP1M6+N6UxmqrScgm3YMhV Mf4pBoQTN7UMsfqXoLHtfnxsquR8qqhT6GKlcoB0Y2G1uC5fO8OBVI+ySAyZ /UsRN/uuXuote966g3Hy284urdPlDC9k6dlTfuryKDhHzOKR6NaFSywXWl3s 3uXzrF7cv45gxMTrlao3U2u+jHi9rW1ttIzk7Kua7rvfTPr8L2jVp3Wugqj3 DSnTa3WsBXO78z5+P5+MbrFS9rczpCFta0wjt6IOlsGPRcqmz94Bm/4B9KOB QBhMgYj8AQELbTuBz7exEBIYdpufJDGn768C46kzNtLG2HPbnt12OvA+2OOk xhmjMNeq9wt5+2D2R5jJmVfqYD55nnLlttbR39ffw35+/jxzxdOp01sGaNZG 0e8e6eKLtYvqi71dK9bXVc+njtDYOXWSNaD4A/FAjuHLSBmjnAQV8pBrRpDM FgGhI+n5yT2BLgCMJVyimC1MjfcAwi1QeLoCb8yhJEhkdCE1BIHQkwIeoYZh kmGAGTAlcXkkTDpEF6BM0E9S9JXso9poutR5OuvmT3ez5dkaZKyLrRlJBmDa QFllPcdDCwQDFGmbM3vzOdvL2+V5eY9pa2vZR1pTAmBGkek0wyBMwIksBS2k aqosWGZhMURlK4dWepb99x9j8TGLVlUm1BWqiZDAfgtBpan8T8N83ltAOLKW L9LwbbdvW8Rp7s01wnDp3eenNew+tDDa7Pc3clUF3XibG+2WbcOcxqxBOjGr rer38etorzlUVYbnKDs/HlgNpIiAiAyZ4G1rvjfPZMs1aenFo6u43uPa9ypm k4gszFvjN3MEZPjto7m3ctmmDNTdy5dXLq5c57WskXtjJlQPN3YZEIuFrK+9 nj3zZSrLhVc5vetObpQknZJvhbWQcDAYGGDyZmMp/M7nnTpx3c1o9rbN4912 F0XEt6kysrCMoyLyk8SbEjGAxgMBgwG16fHd86JDjrqOo6Lq6dNmCyLK1ix2 5o9ott863rR40eO4jF6NrHu2xotwxOc2Ls2DlCmi9CmJPd5N75xk3vRqnSuv dnXOad3hPRA/4pFD1wRxoyHgjnZVLvGBqHwz5gUwzxu50zU3l5ea8lphJ4Mn EedYHyy7y7coacSI587tw90dRJZFRjaybQntvNsfZj8m+7d7qJ263XHeu+bq nJedX3hZwfadaZXOs1M1VdSdKXn6nfh5+H18e3jW+jeueh9Kh08fVfGT1ZZr k2o83eXh6bz8vVJ4PM9Lx3E7+WPVqrGaraNLMU0WTPjt01kmlZLWnrSR+D0H j4/felHoxbDaWbYz+IffU1guAELSS3LXyF7oSZSkVYWE9wrw9fq6fCTxh2hz dXlrdcs84vbJ1l32q9qryD3q8nrfWD0Ve4e8Hd6MNhsWzaTfG+PXuqvFV6Tu Zr5KvdQ6Ox2L96B9fwZrNNZnv96nwrzpV7pd/rGHXL/RhbUa1BwP7cp1ptIf VptNk2RbVsasbGLVjad62vLlqrxRaKKqE21EaLVGnmt4sdE5gOtG0bCtk2tk 58N10NkNou460Vyk5knWRtWi0VRtrFi1itRsW081daHT7jrkLvS2ktlWxTY2 qbEbE2R3daq8rx2TvJ4yraJsRtR1lOZG1GwtgeInhcl3pd5FsTmlzKO2uai2 psK4V2u+rYm0pNlLpHjW1GajjjLprZWMLw0jsyZaqcZXNVxqjNE4ZYrHTW2N TZHTQdLKcaqcrVxknLzwumi6YZXjbEcTxmZrVttstOnFdtUejwuIumLNVOHm 4p0yOmWq8bWE5eZq105S7ZHll4xHTHJcclM0nEnpc83lxOMy0PDKamjDUqBK xihCESSpAsKFBoRDTVPLDNGaTwdeM1jGTYrzdzirdcFxzlTjWB4ZeK6dmNs0 2peO1nE5DStGpZ6OVOJPC54a22NidNTJhYspqduuuaXTGSdzl3my2h4duHfD knk5Zjx0jlZWaYXTTtdO9tR4a6dk4rjlOS0eeK5VdHHjbZqvBp2sGnllyGvP jounjjhPNzvbS7O3GrVZOuFyaBEdjJKimODht5xiwUaM7eOTgbxtjYeG6mGj yxys8eOqgg2RLS0FCaJQqGJpFkiCoikVWH1aAODzgOEHAg+WtjwIhQyrtYs2 ioHbRnYcOA9hyRyMZWMmspsW1UXGDNMZVmB8ZXa76OQzUtlsVrNYxlie6nqz 2HneL2xyXf36uam2n3Onh8fjeiW9PG1tRtNkeLwCuPR5V9j4we4LT18T3NcU 1zr8R2ORjbQnhCwRQasgOOE1ny1vF2nJ3nLs+Np28GJgUHoy45M9AuUFCo52 PHKeG3gx8OaNr33iLn4xu3Wu26lmq2Tank7Rwut32Q74XqPAnwMS+w+/H59x hcdYsfUQ6sdEBUCIeN5ZSd6he47HkXlHMJI3p2h3zPcu6A+qSAYQjUJMw1b0 u34vkLBJthlVKuubzK79ynX2GXWu51h5oZSLpaql67yB321zGo0losqDHfXG 6PlVl1kzFsvZ7ScUfi9I4l41TYbWfjevbdHJXpfa3zBQFwS+nMFiQL4aQLvA g1YOIGL9vpKQkRGm901iG0NiG0IbDFTRsXC+AJCPmBpSSF+GjlLGI+yDhasS W8UqMTJVQsvf09MZrnhx566i7GJJtA2DkAXXX3HbPy5P095vz+ufHbPH352Z ht739VNj9H4+NdLns05R2GRwOHFZX5zxzeymyVJvdCi2t7NrOzZuSzmlRZ3q 0yuEq2eY5mXfuc4IxhnvrGI5h9DLI5QZC/ESVSnQoBBW1o8C4kBsg7o87EGX lQjyokBcQ0JbcniHmQTwsEwOIfHaQFHibzjt5XlplclbXRPbU8uGd2vfc7qy i+MfeL3Dm4VwnGbbE22Tasi6dK3xFOwvgFmmWNsYzLbLLTWZjTTWsa2zNvl5 qlePPr49ufDx9pu5ep2K9BVc3TM7rn6US7XlsNprary89Dpo1lZi9nypK7nr Pw46C6Q/X9PRL10bLYbHi+vbaza2UAaLX1+lVPuvh3lfVXz7URhLejberY2n Y99+P3/nlkRimqq9x6s8/LnjqVO1XWLYbvqo+xWc66TNMKjJmZoIgI/ID5sQ kGDDiAB/xQZfXtr5PAd+3BUC94vWF3VYajNmboDxaRORdY2VvF7heAb0RO5j KYatvva00cvbxubXRw4hRLzbny5DgFPOtw4XcJurKCg9rC7FqPygbfG5BQXu 9rUS11zdM2yT9y0ucHLF63PPV9DHXnAWdhz2rC4OX77AQm5wDa2ygN1wZQ5J B78dsfvj5ePr7vx/Mj834I0t/T7e9nJ0yO6/BUlHVPp9Pr26wdy+ah7dXt3e vg/JFWeyM972j0QMI10DqOr5cWQLrPDnvHPnT5RBIgkEg+JIDvend71ERERa Mg2S9939t7HvWU1piG26a1/iXTgpXDGcs2Mt3GDKr0iijk86y5kUkFZzamc0 OigxWp07epWtKd3qCIsUXZ+RctGu98braDA1RWpBUow1s+1PIm5B1SKIYfUk 463t7uX93FxkXlu49Vuj46cOm0+vY10a5p7bMV2ICgAaANDkUzYtznXpSkmQ CzDME7meqsCko1+YQgdDS5bAv70lSM+1CZMtaaraY2YaYzNPWr7gJ7eL28XH t758V1HCujZpa2amss72c5r1Jw+fUONVtT8O4Q+9VY7lYGLSFU+rFJbFLGkN WRZalGZVZhKs1VNkNaQ+z5euNrWaszGMzuu6kzRaYq1iGYjWlU2C2U2ibCti bUlsU2JtQ2pzpqstyS60NrNsVRY1t59iYJF62EwhmzpI+LrruccsW22tuXn7 l5EeJqTx4650EzLc4Q4zxO7hdVyuYri785uOPApcly5diXjptbHyWCwjAyUj sCIwsMYYiwoKMkRRQfHoOO9Fo9RCJ27uOItai1DuHcT0e9TmF3q9HVHTyxrX d3t27C48fVq87Ld3fv7j1g9Fci85tKw9aSyIUA6QGoQQzMff0SdPpqioyN3A AyyqCCrJMwQlnSmyECM0n59czkiD7Hiu8gWFZBYVgMpfEfNGtnw4fO8H8A6X V0F073pxcOGt56RAdVlbp3vTsl8uJEuE1CQk8Glreze+cOLiOI4Li4cNFp+t yxVxOLqVvlzbY5mvOM0m2bXfmryZToyPKHDqPBsNra+L50+c3jW02qE47U3X RGvanTad+6VdHdSTJfxqaGc4pavT2XTjgVFk4pWOZ8d7spVlwquc3vWqcBuV Nd17uLy+U9CaEkvARUICDoaXtbPd50SPALy8V9QrXju73LQQrL3jC902bktm ioiVSSS2Tp3pZjskyZtWtaFTOaT6mtETZmoI0FHE6070dOyb7DgyLYs7oGtk h09tNEaSFBxJtDXjwr5BUE+OXC4gEfMfZ5X5ayKK2ijVgok22KjUWiNSasas W0WKokbE2U2iMXV1168XjbNVfhuUNocA+tcdadKVclfNnp7/q+8nhaJ5Yt38 Fe20bRLYlsVsRsk7yspPog9658BfNHX0gLhuiESnFurufX7uId020IuFW+3U gQHy02Eee9VS6V7bbYmMa2a2Z1ccMNhewvbr7xw+O+PF8nOrA7Jrjuw4TDnG 6hZ0rlFD3xHnQ+6w+j3vRXiua59IbxLdV34vs6HzQYr1CtggghaJQS/JjN2M FVpJFeoXyB302nfOWW5l68t38CPbQ2F0rz5yTuD4KLincV3D0+7mxfSjKCcV BEpky+FqpBdp3O5orkDutwnIYkxo4j0AGvQL5i99Wh0n2yJvo16H3J7iuvki d8tqj7z5Qwul9v16zNpptlrGM22bbMleKfGexT3e/66N70USt61O00oykpLS Y5pXNH3/X4jwDV4qcObDNVtrRUauSxpU2bKZlYhDRFJ787b8jYtq8bRbL4vd Es1vJsymlNe+11lTLJS7tt0tul6aymywJjJ1+ZoteXrra+KvzMSDKNvduX1v jReuuxmd12QJCR83xbZeJAAevfvfCAeTnce/aZIEbO9eaPR2Xjh1Bddp1Flx hstkMLEulXqplOptMabLGsZmYZlru9dXgaO+Ou+VznEdlwk8KaeNTZWaLdu8 4xYYjjSbEaXoJEYxttsLONFZZ6QR6hqqhnw9vAN7nwIqqqqjenUHAptjQ2IY Rps6UUskhKHGTlwxXx9Lyaa+kvNFlJkzbGMY2m1VIrivhT2lTY2nvuTmKSG8 fe6igBeMYB0oGmmMQYYJIbOHNSQu73reXe5mZmZmZmUsMMIYYYsRiMAxGJYG IwMFgYjDAwwwwLtWrVizFixYsFmZmYZmZmLMMzDAwwwwxGLMzMxMzMywxYYY YYYmMYPMzMzVm2+dt723l8TTN6uu5EjJMyS+23m3pERXHOPYBB1bscFh4AdS 0XVHVS6SOk5pjLawiCOBHb3wHo8Peyglq0OlHARbzbe7Wr4tpo0posplJJUm tdfM0WUmTCSRptQBWg0pWJrkoCtZKooVR7u1ZnbyL19Beleg8VaPGx5a2mbL bNNtmy8vKnT11s809XVXFwdNZtoaYMdR7bEBYguMt9F04gXWcXsm9/iPEEeo aqr47jhFVVV9bej04FN8YBD2N9h954yqjVVVVVMoKqxqULMECJEQxOzuffCf xZZatbNmZszP9QZUX8dHfyIP0Qq/gFXu9N8V6Ze+e16a9SXlhGDBgL7VrFcC SWMJUMpGIWFYusliJLyCxI8LBI8GpHl4DouLeCS7R3vec8+51IgYN5KytXNK 7HMbxlubqgF9iPI8tOHA5wXOcN3cgkolFti6GGLy3VvPdOEEFC6TAQBRR1Lq 5oYd57POiTOm+3Dr5zpfoQhvKLKPGl+XTh48et9Jgd75eow5naK9BHQLNG+3 hwb5l8MGz2xrFape81LVssPLiflT6XnOXVSq7M73vgu+9LWpMOatXfHDpXTQ NCxZV+5wSShA1nuUQ6HaVucI+wlc7669fQs7vB86em9kL6Mvicl3YMWixJ9O mu5J6FZvVtHOLTmNzxhnjH7TnvV66YzKkUOCYuEdh3X5QzaDqqhWB6752uHb 1y77TVim0R86dHg+ZtEFSxVsOBBeygNguTm8fANDK9y93r33b1h6EylfNa5D YL1cYzvt5lcMPSqUpWp1mEoFWdp+y+cNOYcY6K7dLi90s0GYsN7a6lqoRkw1 Ji8X6zHxjXqOduGQpSkpzvPZU04d6cs5hbENL13L5ynde2A6N9CxjFwVKg3U uiqQnszuZJ66fr01Zoe8bdA9VKRdH4tNYsDgvXdmrB8crmQzi73CPhp0U6lC VtTN02zDO7pui3PXdnC0So/Z2ju4eLs3Pe7flqpFeDD3Jzah1UVd2uGU6L9O erw13rG7fVaIQteG0eRCTWuYTl4opT6+rgeuG89UKOnV3t6cXCcItPb2Xu12 dpervsqUc6e3C98veu+HFdl9K5N3p41Z6DLrUdLOWY+HQvO9kLzM6qr3T0dX VE9OHYZbLLXV3vdzSZVmM41Y9R1bjJveniVDi7197zYziy+0qlzO11TvVzjq ndb3lc7t3Rdizd72r97vD3Oydj7ynct5s2SVlchfLuzHm0+3x873ine7SJdD u79e7k9W7mzbLS5T7xbu3ycuo5N5d2d7eGlb1nFy4jXXHRlkrEMaO5Ik9wuL Hkex+uFlhzlwZYZRRA1u7hCrq6CwdtRkjtF3R6rx5lKWU3MlXUb9d3kVOmqo vcu7lVM0t7NzByOqmF07g4MWjKhA4rjaTGSmYpaZHTp+ddpzW7Z2794a7R5t syve9Jy3vW+nTx46/QpX5KO1JXv3jyCuuuuc55uS/1IvXgK/6HrBJ/jKV/oI U+57t8tPcTbFrEGrQC7FFiIhd+dOtx3JHF3cCOUvBRP5Z6N9geB5iq2DJrEF oLbWC2sBbaALBZugIU0RBGDRSuBZVBQrRYXYiMYQg04DAhQWJ0WoWK1bZct1 RcQXUSqmSDVhVhBO7tRWAyrULZeduluPLZ87uSeyF1u84i8O8OK4SVOSZEUf HneJz5zwr4e4bG36JT/NUR2JHaiN0uubrcXFxmZBpZEYpqqsuUdkciKqiORV XkjoDQaMI7CQxOILFpIJsoUIqFUozVwfq37mR/nSLpSq/3lX/ggqf7gSOmVD /upF/7EHb/0Qon/CCS/7wKf/CT+dUP+FQ9RUXhBU+LFXUqf6SpJiDslD/4cf FCif5n9jyVfnSL+wg/xpVlSv+khX/srt/WUL1KQedDtSqJxUPg/4Q9ki+oq/ 9Cr5IUT5qh5Uj7lQwqL4EH3FX0IXSKWSQ+xUPo6faV94kf8Xye5SPyIOAX5x KrxCT0vmj7X7FK/Sip9YF9aFE+hB9SkdpF0+sC+ipE90o+xTVDCYlSykZKWL 9EKJ+dI8qh/lfrD1IOqh/ylTEGSP7KPY8rqUaT8pU80nfvfm7qKr/lSL4FKT n1EJ6eiVHTKh/7qhlQ/FUiagWlUL3UO+FWQugoPPWSo+og9yVHpSPJV4hJ29 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 9VHrFReT7CDh22dOiRdKV/TR+pX2f0qhjxCJ1DjNCfT/1p/Ok1/8+/iFdKh/ BV85+n8v834+qoeV/QqH3Kh/Isn5mPf6oVcCr7/zypfgoj1+VSaP4tWZV9qz jM1L5wH8vxJfwNFdQu0P2Xh+JXT9wtS9Z7enSX3Wl+sAEwWMeMazUCtINX7z ejX7h9uvue/h0Lxg7MMZTha1i2MYzlhksoyEilEnTS/Ovh9FtSWw0XvYsiVO CTNz8TvS0ndBpaUaN64bku2E9+Y93URWvuke176r6JKgH5CAdJWWjp6ZdMj+ H4JR6Q9DIieLxXpVPsEPCYr9ipXPv9Uq7/YkdKh2rpX6vzo/cJY+D+2qHldK keJF4Ej8/++jiiPK/SVLKvsvS4/t+NKX1fD5Xj9dePz/c+T532HlfO6HVT6S fC+4m/oUjg/CKVipX73izRo+bGaq9uZw4xmR0+dU/h+wuJHvLEsEsPrdE8i0 HTXKMWeQuPxBZORfTd08vnJ33SZ3T3b3/Pb1g9Z3VsQ5GjRqrxvHj4EOiT7Z evJei9l48yeCHmLZIzuHheY1Lh2q+hL0Lyu12JdiXi809fULk/ldpyXuqz1L 6iyrzcuCXR7699HRfB8QvaStMTup3QxJ8q223qRx+wVc3mwaG/O/oH6nn2f3 blQ8JP5IpXdOVFmLMlmS/WcVcVTV+wr3mVODoMcnRg4XRMul0jh0GdOg4dDO nQ4dDOnQ1ipw/5+04GVDR4WHCseDwlyPTtzDOcGdmd7Q7LtTFYoCKCAJkIAq CCZCCoIJkIb2tY2DzzLjfO1aMZcvtbQpjLW1NkGOpsvTs66HYmPJ5Ucjomuj onC6Fl0ulOHQY44Ag4BOOAg4BOOA8LJtZWTAe6V+v6nr+4yh1Knnj++xjgVf qU19lXCS7RGqsQysgtJNC+JSdofvUfa/qrL09j2m6P4T+6powqYjVYX6vta9 Bv8M1ck1gWMRqjs/jD+5lmtAcg4FV3/2YVfk+Xu56oX0FX9hRHpUR/LCrt+/ X8F1Mq+3i8RfCFXuK99dVEd3agvalQ6qv2Qq7/B76jfwyHfFdUPWojpXKhTq qUv5vj/DCrvveCrUtAOZL7qoPGqHsid/Cs4WFo1TSxPnK6Fuj+KodKh/E1mj oyD1+DW02i/BR+r59Uvuak0n+RFK/Y+BqPjVR/aqHxAPCSv1XjepC8K6lfH8 UPNfEkaDyKM0B/PD+SfyV6PdfsofLs+FdZFfAHsUR394o4URkF2qH1iJaT5p V/xfuaIxFPZCryvRNfVJeYq59Eh4Qq8alPc1TUu181L/xC/Ol0Zs2dR9+atr b/jtqniKMURISUpFNJqAAAADDW21oWPMm8T3ztrCb4C9ZTqHgL8fL+36lbRb FddNmzZs2ERjGMYxitfmX5eq7d+C3lMusVVmVFn5g/cRpbbTbNBoaVaVZWqC EgTa2yYZmZmZmZmZmGpPJUutUPML8yr3ErmC+SF7/XB3WkMUpfR4QlTteNFw SnHCm4dDup9tQ9EjVD8lVXw4K/3URz8MquqiML0oKsqHwPaqPZI4qHVTiofH 50ldJSvxF8X630nHQT64f0Idl+FH5cqj9PCkeT8lQ1SfwmC95VPyVDqFD70P +tD5q/NfUvFeOVD977S8PiFX2T/nZD7pJeKnGrLZbRlMmiR2xbW3NrbLKMtE 1ZG0bUs1bE6x+JeKPEfU/R6N2Vp2l00Rx25KczJJaimKwVaKWEWlIygxbSVm SymUiDYtqKymbIaWtMyUa2WbQ0ymqhLEpZNssqaUymmrFKQppspKZQ01jRks aMWYgWjFElpEIppsUIs22ysZbZtQ/gV4h8D8qoei/T9T7KqPnD6i8Hczugmh 9a/wWvTJsKS60uoRCxFGaCEisiDJCmVBNmsFaNoHZzhirMLJTCk0zYD8D7z4 N6D9GMYK4WC+1D3B/cYZhmFmWZZgzDMM98Ur/7KX7mqixqossolJUUS02FlY y01LKklRFRMjSCFIxISDEUpJiADTKIxJj9NV+zfTVL9eZZlK+9E+y/raUbW0 rDFmsLKZo00mymlSaEKGtattrGabbkRyEXoF+iL7LiVeqh+Wj6V8S5PA+udo Vc5X4qvB9VHdQwl4PpUHD5qdvRXX77cKI8rxB0p9kXdXkTkHcK+1UP2CPr8X k8UHPuoy8/Fyn7KPV6/W7Kle6KV7uRC7k9FQ91Hw9ylPiK9fxK8GSr3JVwh3 68tXlT3qI8Reu63guZLwivjcvyCvRRlavjDNUZiS7/lttbbNpa1UzNWVpisY ssNbUpUzZNmWmFIWUxja1NJTGxZNERsmJm01lVL7qIr0VTiHjQdEPLtq+375 BIAGlWVS2qVVgMFopiVqjDAYSqysrKyrWmqEAkAkAAACpkRTKJtaxsaxtW1H FKfNfQ/nj+t9bWu6COv4RVyL0Q+KiMqpdaR1SNedUNQfsofJ8eOVDQ/R+Nx4 n40rLpxsnbtutnhd1wmJhMqsWExhH6OFwGMqWMMGGLDFqlixZGLLCyMGLVBZ YsWBWaUbtwrgpX3HvMY+4xcLDhYVwVirgriVwjStIX3w0c2SyWTNa0rKTNNK i0paKlNWU2pKsWymsm1mbFtGkkg3as2225axaYWmasbK2WzaNknjd9iq1GsC eE9kq9j+SkY+aofjD6lQ7VTx8VEci866fgojzir+QrErxVSvzVfclGP8MPuX qx0pXuVDkPzilfA4VQ/Avd1KP0shsUZJaAfYjDjUauNU48PyQXhD6iRf/lEc KI7iR/HCrwC/KpCfFCOtPleVU9yrqoj4lN6yR86r5pfOxayzLZrWMRQaMYsb EbJsW3JacKNgmNDaH6knR1V4hGaJMpkwwhOrtU58aoe09k02rLWmNa2CtGKM KYoZSkSykpQUKEUyIUltLaVsktpRTS0bNNJZNpU0zRZss0pLLMzaZNSpJoWb KUqaKUWaJZSWqqbJgkkJJCRVr5+2T68XUn0HSodlfA/Gi/yCK6KVzlXoB0pT 60RNST/q9lDzuxK/TCrErsQL3/OFXiUPsPtJlZ9oH1/on87FXWeHzf1P8ZkB 1vwKv67bL5+f2i67Wrn1yrxAbP/4u5IpwoSDJdUnuA== --8323328-213282803-1361306258=:6762--