diff --git a/meta b/meta deleted file mode 160000 index 4c052b5..0000000 --- a/meta +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4c052b5e22fb9900f0a965f42b62c9793435c8ac diff --git a/meta/.gitignore b/meta/.gitignore new file mode 100644 index 0000000..383a41f --- /dev/null +++ b/meta/.gitignore @@ -0,0 +1,180 @@ +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 + +## Intermediate documents: +*.dvi +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.brf +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.snm +*.vrb + +# cprotect +*.cpt + +# fixme +*.lox + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc +*.mtc[0-9] +*.mtc[1-9][0-9] + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# mylatexformat +*.fmt + +# nomencl +*.nlo + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# Kile +*.backup + +# KBibTeX +*~[0-9]* +*.vim diff --git a/meta/LICENSE b/meta/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/meta/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + 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 +state 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) {year} {name of author} + + 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 3 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, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +. diff --git a/meta/Makefile b/meta/Makefile new file mode 100644 index 0000000..18f778b --- /dev/null +++ b/meta/Makefile @@ -0,0 +1,89 @@ +# Copyright 2016, Marcel Großmann +styles := $(styles) gitinfo2.sty gitexinfo.sty +hooks := post-checkout post-commit post-merge +# Git Prepare message +gitprepare := "Initialized Git Foo $(main)" +# Git hooks +gitinfohook := $(meta)/style/gitinfo2-hook.txt +githooks := $(base)/.git/hooks +# Docker adjustments +uid := $(shell id -u $$USER) +gid := $(shell id -g $$USER) +dockerabsvol := $(shell git rev-parse --show-toplevel) +dockerincontainer := $(shell dirname $(shell git ls-tree --full-name --name-only HEAD Makefile)) +dockerimage := "whatever4711/latex" +# config +prepared := .prepared +latexmk_version := $(shell latexmk --version 2> /dev/null) +ifdef latexmk_version +initial := all +goal := $(main) +else +initial := alldocker +goal := docker +endif + +.PHONY: all alldocker prepare init clean docker +ifeq ($(wildcard $(prepared)),) +.DEFAULT_GOAL := gitmodules +else +.DEFAULT_GOAL := $(goal) +endif + +# Call make init to create structure and update the meta files +init: updateMeta $(styles) $(bibtexstyles) $(classes) + @echo "\nCopying styles and creating initial structure\n" + @mkdir -p graphic code images content + +# Call make on LaTeX's main file +$(main): $(main).tex + @echo "\nCompiling $(main)\n" + @latexmk -pdf -use-make $< + @latexmk -c + +# Call make clean +clean: + @echo "\nCleaning up latex crap\n" + @latexmk -c + @rm -f *.synctex.gz *.bbl *.nlo *.nls *.nav *.snm *.loa + +# Call make docker +docker: + @echo "\nDockerizing the build process\n" + @docker run -it --rm -v $(dockerabsvol)/:/src/ -w /src $(dockerimage) /bin/sh -c "apk add --update make git && cd $(dockerincontainer) && tlmgrinstall && make && make clean && chown $(uid):$(gid) $(main).pdf" + +all: init $(main) clean + @echo "\nEverything is done and cleaned\n" + +alldocker: init docker + @echo "\nEverything is done and cleaned\n" + +# Internal Targets +# Call make prepare only once after checkout +prepare: $(hooks) + @echo "\nInitializing git, modules and hooks" + @test -f $(prepared) || sed -i 's#\\newcommand\\meta.*#\\newcommand\\meta{${meta}}#g' $(main).tex + @test -f $(prepared) || ln -fs $(base)/.git/gitHeadInfo.gin gitHeadLocal.gin + @echo "Performing first commit for $(main)\n" + @test -f $(prepared) || git add . + @test -f $(prepared) || git commit -m $(gitprepare) + @test -f $(prepared) || touch $(prepared) + @make $(initial) + +updateMeta: + @test -f $(prepared) || make gitmodules + @echo "\nUpdating meta repository\n" + @cd $(meta) && git pull origin master + +$(styles): %.sty : $(meta)/style/%.sty + @cp $^ $@ + +$(bibtexstyles): %.bst : $(meta)/style/%.bst + @cp $^ $@ + +$(classes): %.cls : $(meta)/style/%.cls + @cp $^ $@ + +$(hooks): + @cp $(gitinfohook) $(githooks)/$@ + @chmod u+x $(githooks)/$@ diff --git a/meta/config/commands.tex b/meta/config/commands.tex new file mode 100644 index 0000000..0606c02 --- /dev/null +++ b/meta/config/commands.tex @@ -0,0 +1,453 @@ +%=============================================================================== +% Zweck: KTR-Meta-Vorlage +%=============================================================================== +\input{\meta/config/language} +\newif\ifgit +\newif\ifseminar +\newif\ifpresentation +\newif\ifposter +\newif\ifthesis +\newif\iftodo +% Input files from meta package +\IfFileExists{config/metainfo}{\input{config/metainfo}}{\gitfalse} +\input{\meta/config/packages} +\input{\meta/config/unibaColors} +\ifgit + \newcommand{\gitkeys}{\gitAbbrevHash, \gitAuthorIsoDate, \gitAuthorName } +\fi + +\ifpresentation +\usetheme{UniBa\ratio} +%\usefonttheme{ +% default | professionalfonts | serif | +% structurebold | structureitalicserif | +% structuresmallcapsserif +%} +\usefonttheme{professionalfonts} +%\useinnertheme{ +% circles | default | inmargin | +% rectangles | rounded +%} +\useinnertheme{rectangles} +%\useoutertheme{ +% default | infolines | miniframes | +% shadow | sidebar | smoothbars | +% smoothtree | split | tree +%} +%\useoutertheme{split} +\setbeamercovered{transparent} + +% Without navigation symbols +\beamertemplatenavigationsymbolsempty +\fi + +\makeatletter +\ifposter +\else +\hypersetup{pdftitle={\@title}, pdfauthor={\@author}, linktoc=page, pdfborder={0 0 0 [3 3]}, breaklinks=true, linkbordercolor=unibablueI, menubordercolor=unibablueI, urlbordercolor=unibablueI, citebordercolor=unibablueI, filebordercolor=unibablueI} +\fi +%% Define a new 'leo' style for the package that will use a smaller font. +\def\url@leostyle{% + \@ifundefined{selectfont}{\def\UrlFont{\sf}}{\def\UrlFont{\small\ttfamily}}} +\makeatother +%% Now actually use the newly defined style. +\urlstyle{leo} + + +\graphicspath{{images/},{\meta/config/images/},{\meta/images/}} +\pgfplotsset{compat=1.9} + +\ifpresentation +\else +\makeatletter +\renewcommand{\maketitle} { +\begin{titlepage} +\ifthesis +\ThisCenterWallPaper{1}{\meta/config/images/titlepage.pdf} + +\setstretch{1.2} +\vspace*{55mm} +\begin{minipage}[t]{2cm} +\textsc{Thema:} +\end{minipage} +\begin{minipage}[t]{12cm} +\textbf{\Large \@title}\\[10mm] +\textbf{\large \@subtitle \normalsize} +\end{minipage}\\[25mm] +\centering +\Huge \textbf{\degree arbeit}\\ +\vspace{1cm} +\Large +im Studiengang \studycourse\ der Fakultät Wirtschaftsinformatik und Angewandte Informatik der Otto-Friedrich-Universität Bamberg\\ +\normalsize +\vfill +\begin{flushleft} +\begin{tabbing} +xxxxxxxxxxxxxxx\=xxxxxxxxxxxxxx\kill +Verfasser: \> \@author\\ +Themensteller:\> \advisor \\ +Abgabedatum:\> \@date\\ +\end{tabbing} +\end{flushleft} +\else + \centering + \begin{minipage}[t]{16cm} + \hfill + \begin{minipage}{12cm} + \centering + \uni + \\[12pt]% + {\Large \chair\\[.5em]% + \large \chairsub}% + \end{minipage} + \hfill + \begin{minipage}{3cm} + \includegraphics[height=28mm]{\meta/config/images/logo} %height=26mm + \end{minipage} + \end{minipage}\\[70pt]%[50pt] + {\Large\bf \ifseminar\seminar\else\project\fi}\\[36pt] + {\LARGE \@title}\\[80pt] + \ifseminar% + {\Large\bf \topic:}\\[36pt] + {\LARGE\bf \subtitle}\\ + \fi% + \vfill + \begin{minipage}{\textwidth} + \center + \submitter:\\ + {\Large \@author \\[18pt]} + \lsupervisor: \supervisor \\[12pt] + Bamberg, \@date\\ + \semester + \end{minipage} +\fi +\end{titlepage} +} +\makeatother +\fi + +\ifgit + \renewcommand{\gitMarkFormat}{\color{unibagrayI}\ifpresentation\tiny\else\small\fi\sffamily} +\fi + +\ifthesis +% Schönere Kapitel? +\renewcommand*{\chapterformat}{% + \thechapter\enskip + \textcolor{gray!50}{\rule[-\dp\strutbox]{2pt}{\baselineskip}}\enskip +} +\renewcommand{\headfont}{\normalfont\sffamily\itshape} % Kolumnentitel serifenlos +\renewcommand{\pnumfont}{\normalfont\sffamily} % Seitennummern serifenlos +\pagestyle{scrheadings} +%\pagestyle{scrplain} +\ihead[]{\headmark} % Kolumnentitel immer oben innen +\chead[]{} % Mitte leer lassen +\ohead[\pagemark]{\pagemark} % Seitennummern immer oben aussen +%\ohead[]{} +\ofoot[]{} % Seitennummern in der Fusszeile loeschen +\cfoot[]{\ifgit \gitMarkFormat{\gitMarkPref\,\textbullet{}\,Branch: \gitBranch\,@\,\gitAbbrevHash{} \textbullet{} Release:\gitReln{} (\gitAuthorDate)}\fi} % Seitennummern in der Fusszeile loeschen +\fi + +\numberwithin{equation}{section} +% +%=============================================================================== +% zentrale Layout-Angaben und Befehle +%=============================================================================== +% +%#1 Breite +%#2 Datei (liegt im image Verzeichnis) +%#3 Beschriftung +%#4 Label fuer Referenzierung +\newcommand{\image}[4]{% +\begin{figure}[H]% +\centering% +\includegraphics[width=#1]{#2}% +\caption{#3}% +\label{#4}% +\end{figure}% +} + +%#1 Breite +%#2 Datei (liegt im image Verzeichnis) +%#3 Beschriftung +%#4 Label fuer Referenzierung +\newcommand{\pic}[2]{ +\begin{figure}[H] +\centering +\includegraphics[width=#1]{#2} +\end{figure} +} + + +%#1 Datei (liegt im graphic Verzeichnis) +%#2 Beschriftung +%#3 Label fuer Referenzierung +%#4 Skalierungsfaktor +\newcommand{\scaletikzimage}[4]{% +\begin{figure}[H]% +\centering% +\scalebox{#4}{% +\IfFileExists{graphic/#1.tikz}{\input{graphic/#1.tikz}}{ +\IfFileExists{\meta/exampleGraphic/#1.tikz}{\input{\meta/exampleGraphic/#1.tikz}}{% +\colorbox{red}{Put your tikz file in the \texttt{graphic} folder}% +}}}% +\caption{#2}% +\label{#3}% +\end{figure} +} + +% You must include \usepackage[font=footnotesize]{subfig} to use this command +% #1 relative width of both figures at most 0.5 +% #2 picture one in /taskXX/P1 +% #3 caption of figure 1 +% #4 label of figure 1 +% #5 picture two in /taskXX/P2 +% #6 caption of figure 2 +% #7 label of figure 2 +% #8 overall caption +% #9 overall label +\newcommand{\twofigures}[9]{% + \begin{figure}[H]% + \centerline{% + \subfloat[#3]{% + \includegraphics[width=#1\textwidth]{#2}% + \label{#4}% + }% + \hfil% + \subfloat[#6]{% + \includegraphics[width=#1\textwidth]{#5}% + \label{#7}% + }% + }% + \caption{#8}% + \label{#9}% + \end{figure}% +} + +%#1 algorithm name +%#2 algorithm label +%#3 file name in code-folder +\newcommand{\pseudo}[3]{% +\small% +\begin{algorithm}[H]% +\caption{#1}% +\label{#2}% +\IfFileExists{code/#3.tex}{\input{code/#3.tex}}{% +\IfFileExists{\meta/exampleCode/#3.tex}{\input{\meta/exampleCode/#3.tex}}{% +\colorbox{red}{Put your code file in the \texttt{code} folder}% +}}% +\end{algorithm}% +\normalsize% +} + +\newcounter{saveenumi} +\newcommand{\seti}{\setcounter{saveenumi}{\value{enumi}}} +\newcommand{\conti}{\setcounter{enumi}{\value{saveenumi}}} + +\ifpresentation +\resetcounteronoverlays{saveenumi} +\fi + +\ifthesis +\makeatletter +\newcommand{\erklaerung}{ +\newpage +\section*{Eidesstattliche Erklärung} +\vspace{25mm} + +Ich erkläre hiermit gemäß § 17 Abs. 2 APO, dass ich die vorstehende \degree arbeit selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.\\[20mm] + +\begin{minipage}{0.4\textwidth} +\location , \@date \hfill \\ +\textcolor{white}{M} +\end{minipage} +\begin{minipage}{0.6\textwidth} +\begin{flushright} +\begin{center} +\textcolor{white}{M}\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\\ +\@author \vfill +\end{center} +\end{flushright} +\end{minipage} +\newpage +} +\makeatother +\fi + +%=============================================================================== +% Listing Styles +%=============================================================================== +\lstset{basicstyle=\ttfamily,showstringspaces=false,commentstyle=\color{unibagrayI},keywordstyle=\color{unibablueI},breaklines=true} +\DeclareFixedFont{\ttb}{T1}{txtt}{bx}{n}{9} % for bold +\DeclareFixedFont{\ttm}{T1}{txtt}{m}{n}{9} % for normal +\lstset{ +language=Python, +basicstyle=\small, +otherkeywords={self}, % Add keywords here +keywordstyle=\small\bf\color{unibablueI}, +emph={MyClass,__init__}, % Custom highlighting +emphstyle=\small\bf\color{nounibaredII}, % Custom highlighting style +stringstyle=\small\color{nounibagreenII}, +commentstyle=\small\color{unibagrayI}, % Any extra options here +showstringspaces=false % +} + +\newcommand\YAMLcolonstyle{\color{nounibaredII}\mdseries} +\newcommand\YAMLkeystyle{\color{black}\bfseries} +\newcommand\YAMLvaluestyle{\color{nounibagreenII}\mdseries} + +\makeatletter + +% here is a macro expanding to the name of the language +% (handy if you decide to change it further down the road) +\newcommand\language@yaml{yaml} + +\expandafter\expandafter\expandafter\lstdefinelanguage +\expandafter{\language@yaml} +{ + keywords={true,false,null,y,n}, + keywordstyle=\color{darkgray}\bfseries, + basicstyle=\YAMLkeystyle, % assuming a key comes first + sensitive=false, + comment=[l]{\#}, + morecomment=[s]{/*}{*/}, + commentstyle=\color{purple}\ttfamily, + stringstyle=\YAMLvaluestyle\ttfamily, + moredelim=[l][\color{orange}]{\&}, + moredelim=[l][\color{magenta}]{*}, + moredelim=**[il][\YAMLcolonstyle{:}\YAMLvaluestyle]{:}, % switch to value style at : + morestring=[b]', + morestring=[b]", + literate = {---}{{\ProcessThreeDashes}}3 + {>}{{\textcolor{red}\textgreater}}1 + {|}{{\textcolor{red}\textbar}}1 + {\ -\ }{{\mdseries\ -\ }}3, +} + +% switch to key style at EOL +\lst@AddToHook{EveryLine}{\ifx\lst@language\language@yaml\YAMLkeystyle\fi} +\makeatother + +\newcommand\ProcessThreeDashes{\llap{\color{cyan}\mdseries-{-}-}} + +% Tikz grid +\makeatletter +\def\grd@save@target#1{% +\def\grd@target{#1}} +\def\grd@save@start#1{% +\def\grd@start{#1}} +\tikzset{ +grid with coordinates/.style={ +to path={% +\pgfextra{% +\edef\grd@@target{(\tikztotarget)}% +\tikz@scan@one@point\grd@save@target\grd@@target\relax +\edef\grd@@start{(\tikztostart)}% +\tikz@scan@one@point\grd@save@start\grd@@start\relax +\draw[minor help lines] (\tikztostart) grid (\tikztotarget); +\draw[middle help lines] (\tikztostart) grid (\tikztotarget); +\draw[major help lines] (\tikztostart) grid (\tikztotarget); +\grd@start +\pgfmathsetmacro{\grd@xa}{\the\pgf@x/1cm} +\pgfmathsetmacro{\grd@ya}{\the\pgf@y/1cm} +\grd@target +\pgfmathsetmacro{\grd@xb}{\the\pgf@x/1cm} +\pgfmathsetmacro{\grd@yb}{\the\pgf@y/1cm} +\pgfmathsetmacro{\grd@xc}{\grd@xa + \pgfkeysvalueof{/tikz/grid with coordinates/major step}} +\pgfmathsetmacro{\grd@yc}{\grd@ya + \pgfkeysvalueof{/tikz/grid with coordinates/major step}} +\foreach \x in {\grd@xa,\grd@xc,...,\grd@xb} +\node[anchor=north] at (\x,\grd@ya) {\pgfmathprintnumber{\x}}; +\foreach \y in {\grd@ya,\grd@yc,...,\grd@yb} +\node[anchor=east] at (\grd@xa,\y) {\pgfmathprintnumber{\y}}; +} +} +}, +minor help lines/.style={ +help lines, gray!20, +step=\pgfkeysvalueof{/tikz/grid with coordinates/minor step} +}, +middle help lines/.style={ +help lines, gray!40, +line width=\pgfkeysvalueof{/tikz/grid with coordinates/major line width}, +step=\pgfkeysvalueof{/tikz/grid with coordinates/middle step} +}, +major help lines/.style={ +help lines, gray!80, +line width=\pgfkeysvalueof{/tikz/grid with coordinates/major line width}, +step=\pgfkeysvalueof{/tikz/grid with coordinates/major step} +}, +grid with coordinates/.cd, +minor step/.initial=.1, +middle step/.initial=.5, +middle line width/.initial=.5pt, +major step/.initial=1, +major line width/.initial=1pt, +} +\makeatother + +\lstdefinelanguage{JavaScript}{ + keywords={break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with}, + morecomment=[l]{//}, + morecomment=[s]{/*}{*/}, + morestring=[b]', + morestring=[b]", + ndkeywords={class, export, boolean, throw, implements, import, this}, + keywordstyle=\color{unibablueI}, + ndkeywordstyle=\color{unibagreenI}, + identifierstyle=\color{black}, + commentstyle=\color{unibagrayI}\ttfamily, + stringstyle=\color{unibaredI}\ttfamily, + sensitive=true +} + + +%% Fancy Quotes +\makeatletter +\tikzset{% + fancy quotes/.style={ + text width=\fq@width pt, + align=justify, + inner sep=1em, + anchor=north west, + minimum width=\textwidth, + }, + fancy quotes width/.initial={.8\textwidth}, + fancy quotes marks/.style={ + scale=8, + text=white, + inner sep=0pt, + }, + fancy quotes opening/.style={ + fancy quotes marks, + }, + fancy quotes closing/.style={ + fancy quotes marks, + }, + fancy quotes background/.style={ + show background rectangle, + inner frame xsep=0pt, + background rectangle/.style={ + fill=unibagrayIV, + rounded corners, + }, + } +} + +\newenvironment{fancyquotes}[1][]{% +\noindent +\tikzpicture[fancy quotes background] +\node[fancy quotes opening,anchor=north west] (fq@ul) at (0,0) {``}; +\tikz@scan@one@point\pgfutil@firstofone(fq@ul.east) +\pgfmathsetmacro{\fq@width}{\textwidth - 2*\pgf@x} +\node[fancy quotes,#1] (fq@txt) at (fq@ul.north west) \bgroup} +{\egroup; +\node[overlay,fancy quotes closing,anchor=east] at (fq@txt.south east) {''}; +\endtikzpicture} + +\makeatother + +\ifpresentation +\changemenucolor{gray}{bg}{named}{unibablueV} +\changemenucolor{gray}{br}{named}{unibablueI} +\changemenucolor{gray}{txt}{named}{unibablueI} +\fi diff --git a/meta/config/hyphenation.tex b/meta/config/hyphenation.tex new file mode 100755 index 0000000..51b1a1b --- /dev/null +++ b/meta/config/hyphenation.tex @@ -0,0 +1 @@ +\hyphenation{op-tical net-works semi-conduc-tor} \ No newline at end of file diff --git a/meta/config/images/logo.png b/meta/config/images/logo.png new file mode 100644 index 0000000..1813e18 Binary files /dev/null and b/meta/config/images/logo.png differ diff --git a/meta/config/images/logow.eps b/meta/config/images/logow.eps new file mode 100644 index 0000000..6469f22 Binary files /dev/null and b/meta/config/images/logow.eps differ diff --git a/meta/config/images/logow.png b/meta/config/images/logow.png new file mode 100644 index 0000000..838b3d5 Binary files /dev/null and b/meta/config/images/logow.png differ diff --git a/meta/config/images/titlepage.pdf b/meta/config/images/titlepage.pdf new file mode 100644 index 0000000..a922a5f --- /dev/null +++ b/meta/config/images/titlepage.pdf @@ -0,0 +1,3139 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + titlepage + + + + + 2012-01-26T15:42:18+01:00 + 2012-01-26T15:42:18+01:00 + 2012-01-26T15:42:18+02:00 + Adobe Illustrator CS5 + + + + 180 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAC0AwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A5FnVvMOxV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxVtVZmCqCzMaADcknFUQ+m6ikYle1mWJqUcxsFNSVG9O5Rh9B yPEO9l4cu4p75Z/Mnzv5amV9K1adIlO9rKxlgYeBifkv0ih98ryaeE+YbcepnHkX0z+VH5zaV53j NjdIth5giXk9oGrHMo+08BO+3dDuPcb5ptTpDj3G8XbafVDJ5F6PmG5T8+c6t5h2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KvRdKgj0nQIby9hXSrW6grJJEqzXzkpIiyKWUmBJeQU1rTkr CgYVw5HilQ3+52OMcELPp+9MrGe+utOtmtLi9uJry7WKaG2WKadfrNvPOnqwt8FZTJLKHU7KWrwI yBAB3rYNglYFXufLrv8AtSrzR5au5xHE0Ful48zA3ao0BEzguLWRCq8XZ2PxTEAACgRacrMWQD8f a158JPdf42/tYRpmpX+k6nb6hYymC9s5BLDKp3V0NfpHiO+ZMoiQo8i4EZGJscw+xf8AlZun/wDK rP8AHXAcfqnqfV67fWq+l6Na1p6/w18N85/8ufF4PN33jjw+PyfF+dE8+7FXYq7FXYq7FXYq7FXY qyTRPKqanpC36mU+nNdLemMApDFBaieN3NPh5sHG/Wm2Uzy8Jr3fe5GLCJRvzP3Jn/yq++NzJZRX 9tNdCSNI3UyLGfjuknU841NYvqMhJ6UG1a5D8yKuvxt+tn+U3q9/7f1Ol/KrVYp7eGXULRGuvqf1 cn1uLG9V5EHIR0+GOMszfZ98RqR3Hr9iToz3hEaV+VN1qE1pAlyVuJ5nt5IeD0VkDfE0hUKnJkIC tv8AqyMtVVs46K+qH0DyBY3mvS6ZeXcnpDTbXUEnjQxENdNbilHVwwT6yepUEjdk3pKeciNgda+9 rx6YGXCT0v7lGP8ALLUxaW11eX9rZRXcENxAZhOaidZnCERxSEMqW7MdqU6E7YfzAugLUaQ0LNWj 4Pyi1O9itTZXcIcrML15fUCB4nuSrRUj+IPFaH4RVgdyApyB1QHMfjb9bL8kTVH8bpReeQri00m8 1KfUbVVs4baSSD976jS3Sq6wJVAC4jdXO9KfI0sGeyBXNrlpqiSTySvyrp51DzDY2ojWVWlDyRuH KskfxuCIwW3VT0/DJ5ZVElrwR4pgPafy5k1bVfN3pvawz6dqVrFeardSoEFvHPze3ijYKkbk0JP7 payGRge+a7UARh5g7fj8bO0wyJl5EX+r8e96HBZpPIi2to1jNpVJNNlMiiJ5bS2e3CMzo3wn1ShN SSN1+ycxCa5m7cqvseP/AKW1XVbvU08zwelqtw8ula2IYS4KrF6lvIFhdKsnpcF4EqdmYGgrsOER A4eXMOFGRlfEN+RYJ57gX69Z3hkiae7tYjcxRNGfTliX0mT04ooEiA4jinxGlCW3oMrAdiHC1Udw e9kv6Ruv+hd/Q5fu/wDEv1am/wDd/U/Xp/yM3ynhH5j/ADf0s+M/l6/pV+l5pmY4bsVdirsVdirs VdirsVdiq5XdQyqxCtswBoCPfFbbM0x6ux+k+/8AzUcFJ4i368/wn1G+CnD4jtxrSnyrjS8RaWaZ acZGFOlCR2I/icaXiLhNKK0dhVeBoTuv8vyxpbLvWmoB6jUHQVNBQU/VjS8RbFzcAqRK4KElDyOx PWmNBeI96Nt/MGs22lXOlQXTR2F4ytcwgD4+IAA5U5AbCoBoaCvTInGCb6shlkI8N7FboWoRafqs F1MnqQKWWZOCS1R1KNRJQULUb4eQpXGcbFLinwysvefyDm0zUNJ1a69JPrFoY7YQ8yJjAFkEbOyL 8G0rBXjVSCpqQDmr1oIIDttHMSB8npfmbzDqum6XFe6bCJ5LicpL6kFxOEENVYenGRIKhDvuK+OY eOAJouXIkDZ5Z+YFwV1h9REKlmNpe6hLIGRprl7d7eO1WCWKZEmeGrBXAHEJUBt2zsA2r3j9rjZd jfx/Q8l883avd2ViJBK1jbKkxUMieq/xvwRgAo324/DSlNtsz8A2J73XaqW4HcE8/wDXf/8AwbP+ 7blX/Ij/ADP0o/yH+f8Aoee5luM7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUdo2uax ol8t9pN5LZXabCaFipIrXiabMNuh2yM4CQoi2UMkomwaZ7H+bs17pUNv5invNTuIm9QxmO0EPqiR irqwjWQERyNStaNSm2Yh0tH00Pm50NYK9Vk/BiXmvzjqfmS5SS5VIYYg3pQJvQyNzkYu1XYs+/xE 9vDMjFiEBs4ubOchSJmZ2LMSzHqSanLWkm3oP/rv/wD4Nn/dtzE/5Ef5n6XJ/wAh/n/oZD/0Lnef 9X2P/pHb/qplX58dzd+R8/sd/wBC53n/AFfY/wDpHb/qpj+fHcv5Hz+x3/Qud5/1fY/+kdv+qmP5 8dy/kfP7Hf8AQud5/wBX2P8A6R2/6qY/nx3L+R8/sd/0Lnef9X2P/pHb/qpj+fHcv5Hz+x3/AELn ef8AV9j/AOkdv+qmP58dy/kfP7Hf9C53n/V9j/6R2/6qY/nx3L+R8/sd/wBC53n/AFfY/wDpHb/q pj+fHcv5Hz+x3/Qud5/1fY/+kdv+qmP58dy/kfP7Hf8AQud5/wBX2P8A6R2/6qY/nx3L+R8/sd/0 Lnef9X2P/pHb/qpj+fHcv5Hz+x3/AELnef8AV9j/AOkdv+qmP58dy/kfP7Hf9C53n/V9j/6R2/6q Y/nx3L+R8/sd/wBC53n/AFfY/wDpHb/qpj+fHcv5Hz+x3/Qud5/1fY/+kdv+qmP58dy/kfP7Hf8A Qud5/wBX2P8A6R2/6qY/nx3L+R8/sd/0Lnef9X2P/pHb/qpj+fHcv5Hz+x3/AELnef8AV9j/AOkd v+qmP58dy/kfP7Hf9C53n/V9j/6R2/6qY/nx3L+R8/sd/wBC53n/AFfY/wDpHb/qpj+fHcv5Hz+x 3/Qud5/1fY/+kdv+qmP58dy/kfP7Hf8AQud5/wBX2P8A6R2/6qY/nx3L+R8/sZT/AMqWuf8AlV/+ G/0qnP8ATf6R+s+iaU+qej6fHn9Na5R+bHi8Vfw19rd+V/d8N/xX9j0XMRyXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf8ApS/9HP8AzLyP8TL+FBZJi7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/ANKX/o5/5l5H+Jl/CgskxdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqN/6Uv/AEc/8y8j/Ey/hQWSYuxV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVG/9KX/AKOf+ZeR/iZfwoLJMXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf+lL/ANHP/MvI/wATL+FBZJi7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/0pf+jn/mXkf4mX8KCyTF2KuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ko3/pS/9HP/ADLyP8TL+FBZJi7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/wBKX/o5/wCZeR/iZfwoLJMXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf8ApS/9HP8AzLyP8TL+FBZJi7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/ANKX/o5/5l5H+Jl/CgskxdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqN/6Uv/AEc/8y8j/Ey/hQWSYuxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVG/9KX/AKOf+ZeR/iZfwoLJMXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf+lL/ANHP/MvI/wATL+FBZJi7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/0pf+jn/mXkf4mX8KCyTF2KuxV2KuxV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ko3/pS/9HP/ADLyP8TL+FBZJi7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/wBKX/o5/wCZeR/iZfwoLJMXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf8ApS/9HP8AzLyP8TL+FBZJi7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/ANKX/o5/5l5H+Jl/CgskxdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqN/6Uv/AEc/8y8j/Ey/hQWSYuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVG/9KX/AKOf+ZeR/iZfwoLJMXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf+lL/ANHP/MvI/wATL+FBZJi7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/0pf+jn/mXkf4mX8KCyTF2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ko3/pS/9HP/ADLyP8TL+FBZJi7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/wBKX/o5/wCZeR/iZfwoLJMXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqjf8ApS/9HP8AzLyP8TL+FBZJi7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUb/ANKX/o5/5l5H+Jl/C//Z + + + + + + uuid:dc6e1db4-d42a-45a7-86f4-5b6d46ccde7c + xmp.did:2CC44EF02B48E11198129A4F92CDCD9D + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:3834d963-23da-49ee-9604-51b7c8b420c8 + xmp.did:9E2245C52548E111B7948A2A1A9C3972 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:9D2245C52548E111B7948A2A1A9C3972 + 2012-01-26T14:58:05+01:00 + Adobe Illustrator CS5 + / + + + saved + xmp.iid:9E2245C52548E111B7948A2A1A9C3972 + 2012-01-26T14:58:16+01:00 + Adobe Illustrator CS5 + / + + + saved + xmp.iid:2CC44EF02B48E11198129A4F92CDCD9D + 2012-01-26T15:42:15+01:00 + Adobe Illustrator CS5 + / + + + + + + Print + + + False + False + 1 + + 210.001652 + 296.999959 + Millimeters + + + + Cyan + Magenta + Yellow + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + Weiß + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + Schwarz + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + CMYK Rot + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + CMYK Gelb + CMYK + PROCESS + 0.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Grün + CMYK + PROCESS + 100.000000 + 0.000000 + 100.000000 + 0.000000 + + + CMYK Cyan + CMYK + PROCESS + 100.000000 + 0.000000 + 0.000000 + 0.000000 + + + CMYK Blau + CMYK + PROCESS + 100.000000 + 100.000000 + 0.000000 + 0.000000 + + + CMYK Magenta + CMYK + PROCESS + 0.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=15 M=100 Y=90 K=10 + CMYK + PROCESS + 14.999998 + 100.000000 + 90.000004 + 10.000002 + + + C=0 M=90 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 90.000004 + 84.999996 + 0.000000 + + + C=0 M=80 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 80.000001 + 94.999999 + 0.000000 + + + C=0 M=50 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 50.000000 + 100.000000 + 0.000000 + + + C=0 M=35 Y=85 K=0 + CMYK + PROCESS + 0.000000 + 35.000002 + 84.999996 + 0.000000 + + + C=5 M=0 Y=90 K=0 + CMYK + PROCESS + 5.000001 + 0.000000 + 90.000004 + 0.000000 + + + C=20 M=0 Y=100 K=0 + CMYK + PROCESS + 19.999999 + 0.000000 + 100.000000 + 0.000000 + + + C=50 M=0 Y=100 K=0 + CMYK + PROCESS + 50.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=75 M=0 Y=100 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 100.000000 + 0.000000 + + + C=85 M=10 Y=100 K=10 + CMYK + PROCESS + 84.999996 + 10.000002 + 100.000000 + 10.000002 + + + C=90 M=30 Y=95 K=30 + CMYK + PROCESS + 90.000004 + 30.000001 + 94.999999 + 30.000001 + + + C=75 M=0 Y=75 K=0 + CMYK + PROCESS + 75.000000 + 0.000000 + 75.000000 + 0.000000 + + + C=80 M=10 Y=45 K=0 + CMYK + PROCESS + 80.000001 + 10.000002 + 44.999999 + 0.000000 + + + C=70 M=15 Y=0 K=0 + CMYK + PROCESS + 69.999999 + 14.999998 + 0.000000 + 0.000000 + + + C=85 M=50 Y=0 K=0 + CMYK + PROCESS + 84.999996 + 50.000000 + 0.000000 + 0.000000 + + + C=100 M=95 Y=5 K=0 + CMYK + PROCESS + 100.000000 + 94.999999 + 5.000001 + 0.000000 + + + C=100 M=100 Y=25 K=25 + CMYK + PROCESS + 100.000000 + 100.000000 + 25.000000 + 25.000000 + + + C=75 M=100 Y=0 K=0 + CMYK + PROCESS + 75.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=50 M=100 Y=0 K=0 + CMYK + PROCESS + 50.000000 + 100.000000 + 0.000000 + 0.000000 + + + C=35 M=100 Y=35 K=10 + CMYK + PROCESS + 35.000002 + 100.000000 + 35.000002 + 10.000002 + + + C=10 M=100 Y=50 K=0 + CMYK + PROCESS + 10.000002 + 100.000000 + 50.000000 + 0.000000 + + + C=0 M=95 Y=20 K=0 + CMYK + PROCESS + 0.000000 + 94.999999 + 19.999999 + 0.000000 + + + C=25 M=25 Y=40 K=0 + CMYK + PROCESS + 25.000000 + 25.000000 + 39.999998 + 0.000000 + + + C=40 M=45 Y=50 K=5 + CMYK + PROCESS + 39.999998 + 44.999999 + 50.000000 + 5.000001 + + + C=50 M=50 Y=60 K=25 + CMYK + PROCESS + 50.000000 + 50.000000 + 60.000002 + 25.000000 + + + C=55 M=60 Y=65 K=40 + CMYK + PROCESS + 55.000001 + 60.000002 + 64.999998 + 39.999998 + + + C=25 M=40 Y=65 K=0 + CMYK + PROCESS + 25.000000 + 39.999998 + 64.999998 + 0.000000 + + + C=30 M=50 Y=75 K=10 + CMYK + PROCESS + 30.000001 + 50.000000 + 75.000000 + 10.000002 + + + C=35 M=60 Y=80 K=25 + CMYK + PROCESS + 35.000002 + 60.000002 + 80.000001 + 25.000000 + + + C=40 M=65 Y=90 K=35 + CMYK + PROCESS + 39.999998 + 64.999998 + 90.000004 + 35.000002 + + + C=40 M=70 Y=100 K=50 + CMYK + PROCESS + 39.999998 + 69.999999 + 100.000000 + 50.000000 + + + C=50 M=70 Y=80 K=70 + CMYK + PROCESS + 50.000000 + 69.999999 + 80.000001 + 69.999999 + + + UB Blau + PROCESS + 100.000000 + CMYK + 100.000000 + 56.999999 + 0.000000 + 38.000000 + + + + + + Grautöne + 1 + + + + C=0 M=0 Y=0 K=100 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 100.000000 + + + C=0 M=0 Y=0 K=90 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 89.999402 + + + C=0 M=0 Y=0 K=80 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 79.998797 + + + C=0 M=0 Y=0 K=70 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 69.999701 + + + C=0 M=0 Y=0 K=60 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 59.999102 + + + C=0 M=0 Y=0 K=50 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 50.000000 + + + C=0 M=0 Y=0 K=40 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 39.999402 + + + C=0 M=0 Y=0 K=30 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 29.998803 + + + C=0 M=0 Y=0 K=20 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 19.999701 + + + C=0 M=0 Y=0 K=10 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 9.999102 + + + C=0 M=0 Y=0 K=5 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 4.998803 + + + + + + Leuchtende Farben + 1 + + + + C=0 M=100 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 100.000000 + 100.000000 + 0.000000 + + + C=0 M=75 Y=100 K=0 + CMYK + PROCESS + 0.000000 + 75.000000 + 100.000000 + 0.000000 + + + C=0 M=10 Y=95 K=0 + CMYK + PROCESS + 0.000000 + 10.000002 + 94.999999 + 0.000000 + + + C=85 M=10 Y=100 K=0 + CMYK + PROCESS + 84.999996 + 10.000002 + 100.000000 + 0.000000 + + + C=100 M=90 Y=0 K=0 + CMYK + PROCESS + 100.000000 + 90.000004 + 0.000000 + 0.000000 + + + C=60 M=90 Y=0 K=0 + CMYK + PROCESS + 60.000002 + 90.000004 + 0.003099 + 0.003099 + + + + + + + + + Adobe PDF library 9.90 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 595.28 841.89]/Type/Page>> endobj 8 0 obj <>stream +HlWd; S ̙8g BF ]cWt74_ױ8);_w|k~k9:i8UO䓤BS !/h.U\^%keO@:Ӕ(UG@U'c_SP bbc}6UcA7L Jhɘު5j9 +bWz@wQl)*M^(t+r%lbgځl@|eC3ᰯUHY&s:ui,?z 2la%┢Bu}>'!NmUo4yQщśq%*UY"'h]ɶ,nYl * 1B͜SF+1Pɉ\ڂ]$?)0'|V x3/᪣Zt,%t+B+PJ8'lVpX`k[?s96C,,a4oR*~s@1E17tRl蘭E'v#N_m0Wh HqDU,dҦXy :i17> J;g%?qʹ% W5$r, ozۯ-6I]mƺiPk4j <թlx`W|afNa Q0p.zeWev\c܉nMsyF.V]9@X9aD~6izՒAYg;%l3rS5BH$)PUj$_"tYR.d>:-sRa\-:60'6F5ആWVCl`&ҁ${s +ž 畗N76F;T}(x.G'Rdd_ڪG{nl5:h#䞖0\3.7MMucERY62ikFsËfO +$1?dPq!GHw XHګ[N +ZAhThlFwGH'EV'786ICQwT^if .{nuf? ,rl|q$dhb 5C@P1p0Э+2Ή`C$ePSs1 (JjĠ3rc*89] ?2ؕ!=*Or[վ]^ZtߛYaٌ\>j.Q2x˯q ঄=N9-!:p%އ8*^r-D8|g?t_y{c'Y"9ȹ*A?b$Q8%=w0 2Fƺ搒Rt d X:wX~1P$ E439ghb|eEw_2Ċd9ּPvt`48l> +HvTTWŁ@=M$:]kA2epp 8@GPfѺxk%^Ue}6r +^M' +?v@wXp|GtiRQg@U X(z3 k5PLGɋӧsVe[y])]%뼫!Zաh5G\9eB)½cGS՜(8| HuaŠQfb.|1yp*u ^Mgf4EOeQ&Zy a"Up(R>?@#)k޶ZpN8Eꋮ勧=%㍷"}1r;|s={ 8o IL GSqXhXF&\iMx* P4âY\OmQ3gŅ惪 $ \ůl$Ɯ8o)*ߴ 3b5j9p&uဌVݳpK]9k3eFAޯGԃ 2'@?F]أQ[%'~@zƝgU f</9|FǃMH1o},BioG)[uL:26 +Ln;mU akxӱ/`YtCWo S5G[ѱb4~&D~ӲcG@$˞OJ8$s<߳IhlMEoUf.P7K DӘxuaiY)Zh3. n1Bvn1@^{0_ϭRT"דA1Z_IV8fiAfD5TOR̬?%QO3,70L]|@P56E.O0KAo;-,9ni;ΌmCC ,'ƨJGK0i]w%y^H@Y-0gJK=PyR]FiѴzBd՟_ +~GelxʄJ[58 գv}ٴy[QLrW*8z`YD||9_ֺweEbDb5(BPQx +%#ÜhR-XIE۠ew&S3 +{:"-s*iPDwBzhXO%$ IeeE9^#La\ }?q4B8Af(Fl Pkms&U͋w|Yf{o![j/ٝ=Rm]Z +-TWM6[WQ+ 0TUP [R| A[fuQ(v\iC㨌!:?;_@K0Unފly=QZ!gåA;R!P+[,cKfl z֦:7M]=+ +"H޴NژcOAbt ~RTHyҰ'~w,cI;-qBR-#ߘmb_=g[Z8.c+ߓq[7|8 *~),#9Leedmjr>S'0c; Kt/l^Q$b"x哹rM K% QdA6#E{S/^6G8V "Th_Nh.qW +8{,F.nL#ˉod &0\Yc;AS׳YzBi\놽+8kx]jtE@l,y+kH7D@@d@GhX +* TftBlM(Yi\x:Jt-!])-I$qQPoniv$?%YL*s֢yEq~Aۛ/B>θX~K*>HH[SA3κ ̓zjd2>%rnNDnzC׭}p|8B1-#R=/t YuL.8^3}y`np`g(&x,^CRrNU}ϸI`TuɀMJ…83f"r-@"2hsȕ, qdizL+vzc095'%Y$+SҪ6 eVtbC΃fE| 1#YNҦJIv4ħwDr-B$lJN >癉j.T"v"z }57~E(Y^<^+.V]Ai]iJ< 9EaY؉WtlGu2ىL8]F_׮-|e;mE^M-|3("UG&t 4Kꏖ[S^kV%KL /5|UB%|~`"ڕX3'݇Fళ J4>^%޳h4Y%۞8M+ +0,W#W-RljeRy>vu>D'cY -tnR!VDEnw% i*")jIu>L -C-c9ݚCmĘ5_^QBiL{F]W49x쾪j 'La)-r!/b|=(hᗇ4`ϴsU1uzoX'ǔ^:4/&Y{VP +kxS4Q?,O^kwFB'}'5's*?J\ʾsarw&Hji 6T̬=A`ߑn} %hY"~I{NRۮ䇶Tv7M/,b U<-ΠEd%X df],+trz#-tk=20xlI5ͤw~&*ޟZx#ԧFPvMytLNR%3#S58TEEA\xcdA+*@ڋwe*XJTLAgZ-ZYVU-E䈤0!s U8iwu?~_3$ƴXj #[uOroU&$EQؖs/5g>Q;Z5õt}{v[ 0P$-k`:ȂvQM*`Vdoq;50=<`jx}#=kԽ`x~ 4s6ށ43ntwFw;,|fO=ReK)vin=DBa6*BJ&3IugqY 3_xGVjmmpw,%<0}1l$a*7|<Fr &rXt|8BÇ3l]grwT+{Iau<PaZ 1/l-&Oz8vV @w*kmoPgCJ`ʷ;`FL|Rv^ު+ӗtZLZĂ+GEO3'wV^#fqӫ&P{KP:MM~//U9P0`j‹hh_ֳZ2n_tÔ|ysgJt h2_Rټwsߤ=( ڶH^|td`Xb4^Ւ:Kʞ52z0If])/hI XvwH?}FMlv)͕%Gžnf=xib*]q$ŕ jTQ^UQ؈7m L㮎>p^;ת5'lßrc}+%VTc>#)Y=p9F_xgDZLQk|r{rtVp:Z Y#{)C&­]\{9c(ϸQ"/Kzu(qw>#<8=Y)R^:oLRhq>^r>vr!g̹\e05uDT> eu э/Y:֑.54z|#5Ҽf.Ņu2Tg^aivG;?&|y_sAwk$K韜%)_3Rpwc +iW0Yd* oB[F| +vIq9;wf[u` 9.UY2ܨbSOW,8;׏Ps6.^(F2ۿfݎlZu!;D7nǀфvtCዻJjuvT{J>O3CnPjk[вmscC$$qʐOQ줬GJ(l@ݧ\6I 5I RmFIadRjyC#/t61 ! idpǰkҶUaS.U)ѓ4.W+x[" *A# +\'xAIB;vCY9v*2l+KmkIÅ%Q2?zL%[ c2FHaPUi[4X-Ql:æ~$odBUh!۲|(ÿ*-P +ё&ND T#fNyCtc٪4ʎq^LCJ5kF--Iޢ(#8y_}(ȼbTuYMCdZ@ju@zKߪp}-  CXͰu"r`kWxC~xܲlS ) +R`qѭ/X`e-9pdn,#jNP%D6kne݋oO-0⁣4jlz>rDp7`y36 `yIpՏ.lVS +Kꥱiz?t >56U7<ҎIwz`mP:چ%O:P +7`:Э 'ym8?=7P4taz~P5&ΏvBm}΁#}~nɕ(=@iDŽK`rяe!*#~T-i>KCKd\, fBMxB5VD-&v77*VɝɁ_ H/ZZ3!w][XM0==m,N@9cf +2͑NjH>f6Q|\]uu7v`=NSu2'e>P v` s[]۷,Ɔz&ZPq'݀h8 W$Kݪ8#6AȒkTHEE(W 7>itoSHFXdr#8ljɼUBqD7Aȼ9ݭ6)AJ7XuX I_ia>S|AFSWt2VE%1סU%@T7ȖWWҢ2gLt@aJR-c2Rm z._,JuHkEAK ++l*1a=uPv]ӨW >AM-1VUߠ+olj,)Sd[݈[.f%2TxD62M(}a)P(3rve=ly| jmVK\-q<#^+InbU'l< [N,n:K yTBm7b :Fg.v 퐒cHh)1cвlVƊ:Zyy5S`-)UQg9A+iU/ұ+r8Jy}bmEkgA. |gvY6΃#TTSwS6~u!y"o4gϑ$^ƲEU~@9ށ_ lfR6[!bNTp ãg0h<̿ 4z5J3? >NRtR_Pjx.yM#?cµ{C nW[G%KSvQl]FuSJn:cՀ6w̹z J@ +;,*4vGw*l(AC '/rs1[K',  @'BsOu"SM͇?pH8/PGz.'3#4:BD3al|+(˚"hNN++?lH X$e|߳SYUO\"&}:5rz}]P{ƃ6ǛS. mRi94XPmmhBŠJ:[RNsiboT0萍Q5(jK/]' +FK(0,2pwhγ;", 9 +Sg]m?έ$'9#&Ii7Cv"lr=ȓJ<µK !UKˡ&4ܪ0grgpkwi8m^V}#K69 FDR(@%U`~r"akM(WM)eӜq +;EȤG{:պ ]JQ-aMh܃ 0~٤3uĐ37))5ނGCAjR2Ņ[{L TOz-Vk,;@fK)xt> z }u6JπP P$ϕs$EZE'HHb +~ÛP+V]eJ)e(f W +9yћa{Dʫrɺ{oYѕb؋%3ޕq7xrMSU4[Ћ2p`ˬعB-T(VW8k7b[TwA4y뮮[PmtPՂHlȝ[g.[]q% Fdo6aQk c {SJw>Ж>Vw>R|yuyi}i0Mw[d袉C>%J:<3ȟ+Kd}Kr4AKs_sv^rašb3 3fP׾3O\ri\>S1ď.zQ*#oi@/}lluJ*+?M T{QQB>OYQ( ~im_<؊㿭<hT9 4)x=kN,-v:%r:/?0Bh@L| xcr6f^ +|NF>GGW]9hΆDVEKdC${(WW}mt-œ d &vflexk,`k]j0Lː6{zo`JfoI'*z_j,wY8H "6?S/\9UwWTC]VewhY@)چ7TqJR{ ^Km[9Ӆ{Sq;<)1:°n[;<-Dl{X],tGTEWM>Y hK[Չ)BAM Dɐ3LVg<{oTtG0=FAϥ'vzP Fk 1 +"T e7=,;UvX 13 ;Tc[TuzjW)j-LIl'>"]:TRCԦBk![$ ȢxҦ/-t׏QƲ\ncBa\$]yE GB3l^d_Zq#~BI«sW`iڊ(-댻hv*duNkާZH Щ.7oti4 N&Y ye~Cε#UDU7g.$q/[J_wŔ!d^H?3Ij!]K3C?nCx{|W':Z`Sqxu mNbjYK 6\RS\WICn-en3]|ۗ>Y2$luD %v%p<85?LߋkDhYI)o!5T + aMt+,gY u2{(ؙY9(Wn`95>/`1_+]VC6H|bq8>9*,`y4٦Wt 8` +'3ur"Z\fqwHs' }(mOBeov'o`)0Ȩu3^&]P;ٿ@?#Lp[\|sL{IUfu*-˜[E;loiqɗ%;(ָy*7G9n5W,o_+mݩLPCǐs}F۱tw<^yp29#څdo(%%k +#Ww<,4I'H=w]yʿw+*vdp;V畼ˮrG*v:22 U`|xyip %~7"NgyS(*zC_G=zB[Dh\}wȉfUɚLrRTL`hx +<%{1 YȬVsZiPUc BGjE idžm nQx4R<@9>G<Qa56Vƽ :n㍪GJHA> X@iz 8B˲c4 1eMhעe}{E0dBc&̑!JEhe9o|ПOŌ󔅃_Q%2fdƩ%,t 9$:#-鰘#՚0&. S\ +1QaS-b$z!\%, `#ސmpY! rT lh"YJ\0=+ uּ+Ti2ò6QsM:'N]9)\HRyd}xzE5/l%_8a/K/)d:oex| 1j8ڸ$̠>+* zF[ \eh{~`WN+zVxV_wId9ʊ! }DE[-TgR+PLoK-)XQT; PGȵ4zH`j ,L 1[@C±@ -?. ;#YE`P5}L'=0`\"CS 2x +^TU"n^6dт p1|/px'o&5UX 3U4ɵ냳b.xXk8ުm89&9 goU*_q(2%EC nRˁeÂS]-Yr8lS=OyErj6%Z)r~׼nb}MtXP"/Vη[f0Uh1mfái 9;x.څ?L۫kW3SjUy?UW:PQU_H'5٘PJe&8%4K-HR|TX}Tc[ XӾK I<^&ڌ&4{',!VRԽP a/753\- K `׀r1PD.6i+4갾CdB˄4ztiFt=zq4i:eك|eֱk,4yWlflu8UIzQA +em_ś +9 C=CnNeSCâU=p$6sk/ +5rqʁp:W`XP5eMY6=X BHz߾r"Ze\gК6'ϾWooNBs!G-] j7떼SA9U!AX& gx[$ g1֊-ÇRr?S~UA;<`Sۂi~8_}\D]Bo&_[xe]upiANU4Ld,ٻ¬a9yx`ߟemw딅^W=ڥU> +%:VI}Q} JBჷ%%՚= 4Ծ !(ԁmGWUg*maCfl?cXQ@w.F}arJJ῅iw787G!#VG|uڜ05g?%adU5\xzPMi%:-™J.ЮpU羈b' + y$s_ nv}e}}gE}(K۴ ?zfU' ^!5PPH6Ťxw۫]/,~yK50(1[Z_9įB/KMzO$RF 󰲚[/M7Eϳ{_Ɔ3U"idU0)q:y!UU1\^ê`LsZ*\UR͝>"Cdţf*I]}ծUlτ9"q{u+VS ǧًY+e]!R't)*RlB +64e LeJ}hޭ>߭VL[:}&豴y8И + aFP$K} lK61DKk-̒lM,TyKp=2@y8Od`"ֲڟ_EJv %_!Ţ70zDp:ָoh}CTWK$9)Uyz۽pd*S! ]=ƽ$h֖R lƧ۸8]`Dw)5o4ַé8MʰghȡD+-:f]uEP\alfwި3bdͤ!# eEp(BȒ _h +g%D!аc5ʛM#%6CLU≶>tSJkou^v-evuāͥ4\teoJ@8oPGqpqt% 7uwB7 +)_TDfs!8A,zU?أ6Y3ּ˔-Rad!$>ȴX7][flu*-fJE]lX)y}# C`6j`Qdvll,L;WbFϩd4'X,wઃ$>N0D.TC$MI:1{Gg c;^&iQ~@ tP jfH;-U}WrfBTsm3$ +oZθ;?}3?hl>Fl{δs;L‚RhC\j F{psܦ( +mWv\5{"JU2-/24nZ<B vǚqA!AY|zGy1.Sԉ '܃\̩)#}r*,}%5 +:3QD!,E& +˘Bˉ@Qb?h_OrEvAm,>]Cb$(4KqW_A[=~KlgI/(@RŨy~䭺 B{4ȄQ R4`SG|jefJ:Z%A6S$%B&N٠T@Hf12[#U A%(mrhN+!/kGsSYcn3`^kd!rYǘ1Lukv<{QGL`E 4R\+@L@V$JzG"tzک꘰nTI>8YŴ?}:Y9OwQH,VM:rîu:THҖtY T{7:©vy& ǖv ]|R|f S!U @`\)fd(M O4kzGQHNaޟ*tTn}U 8wɷ=*&m緓/LwHxۣbTk1H@9·Ƀ8a/0kۊ?ce&wd?uZ^-9 gX7S)+9~/ίgu!R0@젖%NF%crgɬoN*\EKEEq5w +nkv6̺ Stʽjfi}`hoC=wqZ*}`v |5 490֩HoE(Hb"Z.uSֳ~jo^>が+*B\*(ka/x뱋y \R%˒\koǀiI8"ry'l98\0TA/m^OX"L*7W*BlN\YVՋ%Q&ɬ-v̬(@ҏ4"J^U͆@׵]EXԷΣU^aq+-J<iMaНyoR erg^S'q|OΗ*gQfs+Z itgussumVR]*.r/ΪRĠhcBʥ8tvǖ.NѶT@j__ä0j%QaMz]y4| ~ 9*}BOʙrY&%MрMJT!E5&kR%2aanХNx?_4ڸ8 CI CLn0װ>LgV8c^u@WW@hq"a\GolE=S|v1SG޸^G_5Γr5xv

XTz<)L/r%ADpsI )Nwn6RV%&'Fg _Gu2v%/EryJvWΓVN=lNVT}fZOfFZE4bG5'lxApxR܍o0nme] /w%<еuPTG'lY3窉ʢ|js9ۄM+8{yǿ0`dFƠ-Vez)Y *GYUn#+PtnWg27/.M9;:J0.uhֽE5 +`E0[+4þ< Fan2]kg`̲4L"á#l57aLV<8edy4(T=6)kݣg<&ޕK <3:G/)pCTHHrY9\b/kkV've>SŢvD5lfb +gCi}7yOb1K3*{FUq (' ?d2{NZXb}? uP6hE? +ȱ+ )IRy&"_b&Dk|IVCrO' 4CKAq'`=?՞H c/ݟ~ađc` h8-uvnص%¼Uo7ݝQ|ّ2e_nB7EG{{FeP1.DANLj5|t|\Νk/4rqM"I~?xF:&\ϑ7gw>۾Ws{e~ |D+Cw -.A LK.8łr;N} 9c8&I10ݿ{6⻜0! kʂHY TBvMF4F}T=(;D}:zt' 9FBx/ TS+@Y3At]C/Rt_D/fOK%`hc#3`3 qvnmCS {,nS:uԋHy +ena̮m:KWG~@?4|RӍ?nI$ɿ|ٴg +k߮#6#4w`UQL"hzN-:̬eVZoq3CEתNνYeuy7d h5ViYU5(|1`ʛFH jHQ& 4N3:Fc;725n@YoFMAfF"0-Kx'AT8E2 B1D| |Jlh#SsUݬpnKcq$)wX }*_4K~NHZ^u/:SgNaΎ -yW,+Q,m@)qJlHrt/S7fe!.ML!Ź}F1}F_('Okծ+Fqxd8c܈: M9ōA"QuzX N |n VCS̼B/]__1>`p?U^I}@8OoflcI^e6Wfhj +;Td-UhJTQ/Ҫ:hT9AwCT!9 +d*$6γX(\GiSF!4.mWMq4A=vڿ̔<]T lG%kGTaTVE{9&A]nV,8:I IlFѡxka#NCx/"KF\3SIKus3zyXu+8l' uЧdSNcT4ɊXRKtoɚlbhjb`PrL.*nD&0U&Q|lu>;2(>2LB2 ڟhPcKyeOQPNOqrֻ|=$s]Cn&,$4 FYdaSyXa5ݨhE{1X{=cxE*cG͒fj%,wv/9+6 w" +gY|t,4Tl<݊tg__7BV9tM.tc5ޣl`OiToqlU"JwQIet̚zWtE#W0]ѹg;vY~2]b= BBV^ж>qv> rFcR/kt% +7w3ŖĤMfG%Zr^5KbȎ2S>ٕ+q8U  0hxHxV^- /~ HDb5aFAXL`kXi +#ԧidfS+ oG/6D+v:yNq+9rkR]L:k{RӉTntr:%"1NtQ{ZOԩ` Q SDz-BۣAQ,y`g]kƃl +AKSѡCc7XE"PufͅvP6~[0Nrӕ\`q/\%P<@cBہ829COV7ٌԩ>0^y' Mkep\:!jHl>s6 oBvqcu|: :X^Nы.lcQh8MT,QXti1cmV XnQmKr?$nXm 99I6P@ƀ)jS,&xbgdmM^RclUfӘ5hHn9u5/UWLҒW7tfo{ jK!G\9l&=$:BQgW;bniTi/uGnTMʮ^י%˳Do^8Tc, ;' ϰxwGDF[Y>c +wySl8?88VU`ꨢ:hjO㳛(*rkج;52 зdlD%2-& +dkŅZõ6k_PVqIA7sU %Xkc:f6I_? +_z/qx~:7 =̳,z̿gtn(D^/d%[0kz>R_+&–>rS"OQhhyAn +8 Ƃ/WHAD=6 ('%t~#Y[&r ʹ,Q8΢֝ƛcf:{z욅A%o1,w|LA +Q* +6s5Rm)8Yc +Dɋ֕ Ϯs]pSfu ,:ɉ=ef.FD 8y ;%Mq9.%΃Lhf%eNڝ DAsΖf~i:H":]{Ґh4^$DHV~]+'{!{54QDG0Iп=b"P\&_ђpdM?YLdԟsR5KhĽνؔ^`|8laUJm!iaɝ W|?GLw41 $0,M,m4%ړ[{p‘;Nګ5ꦧtrɒ%aW6P}]OOǍLV28>,W]^TW*]H'V=SK5h$uY{% }dqb8CL|"Vhx靽e -ynxTՍS{ҴMOuzfg=jޯO=u{+:*$pYȇKy5}+6iVņt:zvk\RH Z 7dwU D6I3Or` ?b *1m@ZT (a=!]KQcrde'c˳1zk5]$!jOq}g9Kq!t Mq +(]o.XF(c+:9xR6Y5!e븯Q%XQ7ixi@yϵǙIw:-X +q_̜X}ӣۍHPM`Ao!MIY([ Wm_ҳø(}@y *ANu/=ѭzUI*(;If+ʤLMtMmʋ֡>qp H)8SI1W3͈k&-S1 3y-y4uT8v_V4an#!Cp + ዗}.ӰDpkdbifo-8eke!Z8sGw_>J2z//Kכt^+w}ɺ@Ng<3eGf[N<3*Yۢ}|NApRlM(,(Z&:4t`;)w~K+h 3]tge ǞP";J9ݱ4_xZA}vm~n%a_kj-*PDv1 d'KzML}vǞljoEV/nuŮXBWº ~jo"#s`cԒq i䋤U14;P9\|Ni \ }>Qknt'~*{Е 5b۷4~C3)9`x{.'.|a`Sܩ,,KyꙒDZ6t 9Jꯖ>TIwG b.j=-,{3mRs 'u2oh"Ǽ,kdluA<\~G/{MFiU_5 ǻY&\>X(y/5q,BbM WLUSrLxւP'iťy aqf$6DՊvŀfrL)h0Nwgߕ3:P.ЅesI]>W%ŬOIVdfiU 4 _53ZoJ7KMM;F'04K]]j5kϥ2"gյ.׼=}Ztfٝ. 탺|Ê:>AA9U6.6[#of+tX?Ëa^YޜT]s5zU|@qIlrPMU֪DѬuPtWH==K7ڭ4C̪|2Yb\{\P;/M\sMװ3[}zxl S՞RmW7[mӅTE}+):Vey4QanhwcCZ<#9Iu,8{q ~bcWZl +~LP3^cR];B-t*,*RgEz$qh:>5tD[x3VF&At6e‸i=]o +) +a^1yյß]oƾYUf)R w05 daJ Vϫ8YN9tUqלon"6;!I~` ՈղOCx([a0r%id~K-h)Xk!<x/ۖ5#ب5UEh]mVSݏZjpj(DcojR`j)|BQm9|"*T5u=eRR/r+­ݿpk}XIi|V6iM꺰SK8]pPs͛I,B{,몡Eu:BnrevqNE6X|kdv=~efH@W>q05/|\qSWSUeSr&5Moa znM';5u f\?@3D3/cv eS +2@XڜuҥHeT>X$Ю<`OK>p sHr@E}2?Ss/+s!gjw8$g&54u(Wc/g-L}<>%St v.Őbؿgzo+kVnp!fv1)?M +(#q YHx'S77g,(Z-Tg8^DC?B4#*4dqHڛbО0 &ypI ވtm-c*<$BN'yt۳"C[-]&\\WelpIokGIFB;иd.ȥ&VGl7i16h[0>\&n,2yxI4W`]U5(JЦ8;D/5 +UYY]z/z"*!|toUz#]^ H ׂӾޱe_nਝsv? 1*xѷI"^ݼK.>I1H@L Hy>GUv:A5 th{wSaT$j.>lrP.mփe-#MQ/NqݼZǼ.Yqj2&8h:g@bD& 5eIrEmG,VLd[llk^TQSEf wc¾jm//IT֤wVا栠XkKAGQFrzbUdgEN=}?zह-Rnz+(2MEb1u)a?C0jDaM*2]>"޸>l.5>(c8H{ +aQ'6N3}$OuzIH "}؁p#*RHx9\\LXr*(à򦞜-E# +ʢhԪ&DDkA3MԱ+K6OVi>H6dRODq=qP@>ҼI&huKr"D]b +U/k邮du]K܃1v<fqDGpѸ[/Y]t$`sm,ة23$fF86b,{|ܕކ:5GjS&v-ڻ^pj6V] cc>U>!Xoo_Qdw:>yC]S?U,Yyjcp% [" rX_>|3nønK.SO~ߛ +PԲ]6X"}bMOʸv`l(=d1Ѻ $-GPp/p̭1E*Nȸy/!!%KţNQ9̩DMcPD$p@mSFNL-f6KRAއ$` `af5ܚ\L_8 \v]Qh1*c"W9eHWm@k K7 4<+zww}i:sq*53vH<,I0 +P9VA1D#y}"|2U$V| +#7{p1_VH0E c3YzXn(Vh3g㖸zJoRn,nFv>h{s.nl\l?{YA-{( c p|thgՊ\7 IWd'o/65wdY&_fya\ulXa C8kxVľÎIEZm|n8Z4;ݑͭ~W6T-dxodG{0 +PEAj&_LWn6m~2O1 "cnrdv1 +6+! 6S#.NeNiG+~f6G6X஗5R=P-q\F J|U'Tխ1҉;F]SsM@̦I( CiA9EPs'B&)sxK<1:~I6G(S:B}% +xh˳|Pdۭ1BSIĊTOASwEa GK jՖd|Wvfpu32&T7W F$lC +I 3ciRIB &D.DKH%隭 T!*.2oh9pJT'%Eck bڒIWٛu`cƾ'ђ= ?mKޅ'fp%Vʓ.vѸoMC [#*mfJ-pwCU5,Iv:FQ-YB8аeW;R.7{%tN*#9@ՙ*֫0 S*35!=4@4U^-MDU"i.rSE 4dpwm6% Æ(ENg]v6I#Å +`2HOI$#Lm_8S':EhlS9y"@ԀN9+8 |`C ;ѿ*e?Uh\}Q n +M X$45l70֡T)9h+z8s 8y%xxC]a}qDcI XB9+dx +yky]R.m<Ɂ4)6i8fy nƸ~b>sN|AScbi?O&a0#ٲUMEJXp%ݠ*J:vPylɔDLia%'U5t[!#5j@_Jw u?ϡ,qh|q:t5)̗C1B;SծRSMhw&?0"=,"% 3p99'ă>;FUlPaN +wMduFVbjPK%V*~e$!QmL*HL`0* +5Kf~Np3mZ%g~V +z(5t fD2zA2%tJ3o$Ŝג˲oAa1d&"d!$&d!N +Vt 87$Cd+T<"DE(S[sG@ ~Fkӹb޹%ۈJ> o˃2lŋoyDjRWڎ$L+PbFƒ}CW|#3äe߃>wb7UlK7DyM%~ʶ~jB6N?h:CL%;++Uy s1|*+LnD=)bpR}2P,45NB۶ +dcKMwc8UQ@VgIM b^B^|\ Q&rUi&?Bƻ]xQ]4u[Fuӽ딕/fM8!tkGVnH{u&obra}"9*+2s3VWI +" o,*OzH))ȟQ[y<=we`mI's@X0'jT}WƵq'V} Idl񑜋oU+pYoQP TnM0;+Eu5fer}+jAK!tpR9 v6/@Ȉ^|ED@R2|@`Aŷvu;%QTg£ldY$H/ N4ɑgaIVDczMz"RDӵ[̍A%M['!k ]`Zw̳eKMuKdZvc&?e1xRצ2UO/I[ֆܠg?Y?PcJ'0S8R$(>&w݌yHޘ {H:#b 8 +`b@8h('e˼z(#mvI8XZCnr[ Oih~)Ze;̨(j*K7-fLfcW~<-#P,&ƸLj0,М@dnT9fV /5T 5#ybB;Uma<5xoqôu% +")[>UIhW4}Xu.4TVe s<ݱln[Xbj~T$.U{vFUKpw\v +gQxkSy(R~?T|ΑBELZרN((M*@FH#υ$\`1J,5jԐ +Ӯ +H 00qT٦E][jcC`v!Ubt$/\,8";oiE"R@G 8ram# oJ5 |Z0n2"鈽Uq(lP։~֋&u+K|PHRY6yrIML2}1* 4E٫j#ԓ$sr65uj8.K"i>*rQ&cRQ"<@ YPg^h,}i6NtͣL&Mk *Zx4 Ȩl*ڸG_:x3Ð㶹j2:[=+k]&?T^ ԛh/pi +Th̚߸jI +mmfT6AVM? i Q3/D`K|UV-u7gwb5}kmMhB(bE~Lk4^e.[җ1tmJ/rl ~S^!6ٯQ;m2v}/V*g,=#̂fx9a-ٲM\`? ))m>3$)b&mBk"O/I9&%^ T3zqlCjY| MN͗^VԎ2&@>$UYQPs24X Pr&nƶ֬0zWES[;TԌ+jM< +=xZWdNjΑԉ<[|4ixBNJIv-V*z1]o`XTjBpN]K,#꾴WIFt摟?$Fm6D۵vnS]Dnm_%R;h]kb:t1T?e9]͙!o[{V +/n_>IEynCg(j!?L=|ukQ%V퉊 +-{ al}R_ݳBE:ڛ[Jy`Kx4zpXؐJP;dz7EkHd '( JhƘ2 gŗG.7לو6|@T{rvIzɀ !7T#!Ĕl[~ f +!>pBsE]`S?HٛP D֧;Ťh|L-gVN@ncsK ҫ1HD):٩J,*ѡtv4Kw[C&:=WQR{+B#4f2jҥV>Xlu!'} J EY=r396y=֙6-cV,θcS$/Mً`{CƇ8(68~ZkPMT6HtC=C5+ƻ8\YmԴEVzz]hVIw'ZQ +y]`PPnj&#@BA=G}Sͷ2Fѿec?0& 7<:?ɒfNI -M&CML1O"cz|‰kAmeri 16_U6PFIULkH7l(xLa%RR̨J _&ӥ*IP^P2 @z=4%ú 5^|]$H1uu 0RW6Q,r/&p'ѶtҴDmND T.9WPa졆m\G302&$ZTD>)y8W>lVUsԘ^J*ֹ}!l`qDqibTG>_k~+SK~352y+I<'C턯 J"@",-DHKKFU 4O[ +#]ѫ˒4D`zfwcjoya7Jlt-fmC)Dq^ho͙0yt_YLYK]Ej Ƙ\cz杩daaǪPz!օwl{hxV?4+l 5\0&BMGAt&:4706"ƭ%@Ji ÅrnY/J 耲ˈ0l.$3UDջY*\T!RTAmtt`(y]S2ǀc^Ci(h4ׂNToGn2foe7.e `SPtQTy6lHt~^$9d91 eV00>%E06`稀}t$(q9H5%{He kNbϔ}ʓ~dv:SNowumX+ +6&f1iqaK&}6l14áP7KEf69.9NsKM CQ)4=9*EYɒӗf<Τef=`eNVA,gdKD1<؇ 0r[тm(&KƢdnyN%%ejI.$1x()kiyWWI0l3 fG@xPYȍy!Ʊ BDc%E9KZbk⡉l+ZyV..r3uS=O3:!Ip\w݂d").t:?߈M؋-Bˆσ-R2@؏330DVC5(S5#.f9aбcBԏզ ;7wEMD9&m* RTK9c! EOSPR.;PMF5\+̹G;c5 *ɭ ASx޹xP˷0QmTve^oD(T /Bb/hex"f!'pZvS$f6bjX.!3CݦQ)WLc_ +UXM}xםi֑WW 0ws8T#gBkɡ=Ee#tBe0BmEuM#*]y3jj|C~;c2zOٲ!rre%<]fqXmkxDX'ezWD+š=w%˱~=}}r/ w[啺2&(!?H(y/M)7:cFp N:4 +%V/sA8ԭ%ð冦p)ը@ WZNfbAaz$^`7T$%6K"tgvM,F`^C7&0e6qS;]4~A+6t 򷐼ݿ~̈́`r~0\ ?&$X^?q5w:GE gf}Yy;g!JpNkC$G VξpQP |2tE/f`$?k€#t7@ꚿ)}\$u@zzoGRe"(K2M@M[Q@uO @u1_o/M~B-x9PI`!2^@G%4+hy+uwmO{Œ>r; 9Q^ʦt?t ϑ#8s69sii*7]+c:˕td,9&=s|z4 +$`|]8(Ti\3T_>UQ TKih7q܊ZM<s܌ˑ(瘻i P_󾙀x} /-;4AFϼHh ivcDR֩*hdiebYm6Z)#zcm?.:ZhfSƠv)Jca;t7̴"*n\<^ )ssqŠ!@ }BNͩwa2O!OUBq:Vp:@Eqؓ^ͨuЁɉڢ/NDFD` J/ +#4E5 Y۬E*U׵ +~aky{D-v!h[Q#5_F?LJ1zlrvhhHIhF'Qbd:ƪh᚟P2\iİXi6L|cVFqBڼXϼ{0˺=/)5v#琢N}C2\jc3ɓNQ1J$.}R)9G蜯w x.+HB_9 nQ-"_J~(IEwm6g*8 +1^tOYe6bbu8ɀF +PQ>TI,A}yؤb2`V]dusNvtZ(^!B-?F%1[ 6u@eA_x.>Hh$ybq0;ĔAb,B^OB9SIҮ SYh{I8AاP ğp%ZTƣr7.x8GZwymDva"97撦|9F>mܭMIup.‚P?#)m!*\F3/NyCx}SFLY7GI ,H&yO; E,\;׃3n:3!DyYZu:r$Wlf6 +դ ڛXɃQK9yU/m\qh5notzB U1W`Ч.fK9=G4Kډ7ix +>zEWaLn6c1bi]^;訤ɓI<,C~VkK }2_vc#F{r'%t(oؼVVki %=ߍOc}$-J>/<پ&Ug:zX[(e7hnvQܣh$F r(Y?Y5R>OiYdmWxp 33VM*CEtԂ}SrȞnT`<]{ f ×,?fXO8j{S]%Yv:pUӷVzR FMDu +Y] +`\GE/=)\QPg9(Ք?aDݨ;n=hYG/Z٥|rm{8QOV"K+b[k سԖϼ!OQ0@Ud̿W#+^ղgs߭ųJ]לD ­6uvE*=qG 9:c'>Wsa/󙸻wYOY=xk.7>/Q`Z-.cE9Y뮻dB/o_njq /n^x]O-tӟZkkKcZ7#TYRr54ւ%D:Glm +an\͟>QڴRσj(L&x}% W"ofn;*>~µ1[BNHlqB3ל&Zwb0ij$:jA3qy-7D&u2х/hWS bO7*Xͮn?D\dZ,ظLc #lWKS3m*wEV7>䝤n=HǕZ"$ohuek+XT>k%u uW (tΡyȠZA +4K;vc#-M=ڢ[ +~¢>0<]@Dj:Hj`,5*p~:C&9 WGall;XIp5e+*y)?D vtlq/>4"zٔ<Qdϔ( (“@A[)_P5 s7ev'4)>ve4ΒoASD| Xٟ/S3ѯg{2>)p@lIQȠ$Cn."TGqE=G\"UB=_[4'wtc:pe/Ū\g":!1' Gښu1:L1"x)QIGu('Ed|0v~> tk?W?sk +;P9`d"~W+LXWݛE:^1N*Yj"Kn?p3J: ٸY7Pw+S {{{2}^#ѤHzYjF) ]츳u#{-FP 4CvLF ݑ8C]X7Fw'oTELm|BG)4b+m[|Gsb@~,m;7=/~j`pST4L͡UǛ{{;=V1*ɆpGY [P[,<&R7A~4rX 6Re0]MIqVxۗPjދ" Fꜹ}V;*/h_>g"^{Pp]4E^0{SM'c #z~=YN^[7}9^[PZ)Haȵt}{+o\{`Kk*Wb p6][Dɝ<= 6L:/3pIjQmÜ1={ Cl +Qqif%31MM$JLbi:cRxX-FT'c6Q?cܴ9|x +]W]UI%K ;췣BLp`tėcQ)]\mzHƢ,?_cj=Yw3Ej1$N(1ӝe;5X\#v+aJi i;e5kOAuCZU {~j6N4X &A$`jSZv,5ʝE?JiIn _ +ނrW| |ڋ#p}Y,BϮV[eG5?^O5>xqE׷ȳvΒDz&̓6gݪ(;?UPDw֍`m,|bQ8s>7iH+T#TyQz;zvhSϐ}&e׽~sŞo,IrS~= ~pMFBr'[;^w((ϩ7[CuxgTu\v0S'SAkխH64f\mu%Z _ˑ!^c-kjRJjoE+YMgߡ&iG[N"&uxz 26<ِ EGp]sajuk6!dRoQoUf,V?^uոv6eD[M]8Ve۴{[vLGnW2T[8x=yz ``Wb'@nbg&vK;`qE5ԈP|xL|vvqb*Yح +%x0S<@ςc1#=5{&TȡS޺xԉn #b"w/0!jKIEXjt=5UQ銷P@G#M<U|3Uֶe^߶S*;r0 `$*^/SGx6dX]3m$S2&mJ~ Ր[Ԫh z.f6 v_V2ED |ȁ&r AZx=x_mg5W 2 +xv4oq]3A4Ob+ǧ ҶزGp| _c6ǚF`LyULUB:"Uz­)ϕ*p|n-\& ,Χ +|$rbYETӣC5.J3U0Myl^U"̺h[E[Nzp^PAׇ^^&:[lM!'k\avüh2eW[Cb{󅊗~pl©jN1e(Qm?^1 sAEE>2{(vtX +CcbxQGຈ(7=jnBuY 5d;^6J_ZrӾ)zr~4j&`x۵ Y{M-LA]|p:A +m>EHo*1f͕ct%uTnPa%ܷP>iL VQ/گ>`@Į/ux,1)[n`~>b?E[djHUi$&,]B;.> +h h]b0(]:}v/FW>|JӯVs0ovZvr<"B`K,Gm|=@*N.U~AQCIETWqDPâg] J< +"PKZ>*]W/DznDyUx~&Sh\Yܦz ^~ j&{ cοౕWP2)+YOf8 ^É3X[q,q^V^mP.usC;2 vz,_~]^_u]m*ln||2܋sԭ/JUwǎ5fRQZMyb7:ug7vG7g`gi8PWXAOF/?C.Usoq +qpyvJ{wYӄe/2BzZgB=QX4|v[f%3ˌCޢtra:5ŧu^_ 5K`E‡9>x#r۞m@aӻ{^[kK[7̻}s+`Z2δ;m9ZoE_xˤb0` f# !ϼ.xUlr/4u %PӔ S*L0Ln,_[epWEq%K]u(˧,uxzbPUᛷ^5OtXp\Ugl 1_;]cuft-t>v2 UURZnW0ͺ9/PoSfuBTŢvԻ;۱Vpx3tXTUKbƭPj@Gwi?U s_PLKsr;iGM<%B]FM[)]=YPª-x: 2E=vW-XQIkd^RU!-ΕR:h.jfU 48Qm-=R z)c<ʵ{MRŘN/e#C of8J9/.N  fE|@+Bco+@a +&D$PpEz#:?|> o$)X!qziV .~uqtnT:$puxuQm!ոQ:4%U= [đZ-+]1`^?G O'9I~8XÀ8"gB"f}S->Hy E]Q]HW9^Aټ.8'VE]EVU#-}m̻'lsrbDBSwku 7Kr3Tn᳴_zGESq~xbccՃfzy;0"ol[%Y:E\bztm0OU06ϊ'vd~F $ˀ{Ij߬@Tz]qWdUr6VWpwYEaBHH fBCsBU GrU̘< Hg!`\h=6B]ݤ $(.==WA ܡ>r#l̑@)as}㪑[WkM6?nr복 +<1I0\r.pvÑj٪m +nkc/uf1Sg{z(јYT ZN1C $}А_aZjGX<]4[J;v׉| ([Ғ)!I- 9ۻ-D v-~F3> 埯`r\=vq+4d{=)V|=.wϓWǜJݞ=F(0lC`puA[K_욻@҄Žt`mP!-y6عM pTK֓ӒW֍:grϽe6 RNXbc&wL[q (8jNY.ѩnEjR)Ct#'`$FQMհŔD T&E\*~ lzf4ۖ!jJ7݁Iӹ<$܇'ck +  RѨ &`t[7yHև~fP췳alE pf΄\B+=RS>)ɧ#is^V?XT.GQKCpԆjQJCeϟ_bP+iG =ouI{ڙBSv җ؆߭ 9H6VNE] ڛzɶFOz3::|BF Uz&by0\sHtK7|]LfQ};)Cg%]&JEcu͔8?"g}Zr^7NT:/m |^Un]v73baVxheKb' AjY+s~zf][BokWm:/v~g}"X~B_'ֈۼq1}B]X5_(Af+)`CW"ڠoK*^KID3:~:f@e8&_BEQ7 `<`鿐w}ކ8_2cܧi7FJgGi蝣~in$s )1ҢPIlilW5 k.= wJ]/L3?:럿 윂S>޻S8u/yyGG3UP3dhY?0C{q\ٿtK9} kZiI8fCL 5'm_3t^,K=>ݝKt]`K]zYr;9IquB`0IV sjC#\{e^О +o/ynGv4•Z';Z\c^f፮L +wuHc-A'5T +MY$sYK U8/$`+Cj+{vl+"JžʐIaLMEd> QEK_j ej&` +uFq[~m[7Xgr6 d\}}c}/`q9^z +45Nr[xK%'o}.}=8o%Hrcbą|PuvmFOF x{Hj3@N~MpjQ uSN+&\4Z4$vn\9*sW٘0!?bn!,Q GT`l*qgE'ՙmJ}:o3y$WWCC'6^ -Yﵗb|ڡ!:{D(-_+='Olʴ ck7ɣneG24*e -L%je 8Fb>Fo2k m-lK(ޠKH͓$?o8J]kM@Лa ynz2x5(gu;?&:ycKߖ2tI<::o:?߻ !߻ w}O`b]*4ˑD]jrl e01j;ve52Ύꔥ85β N!=BXLh/SŬ|?t\[ɢ^V_сǿL6C#Ɂk)8kW Z{W"0f =^U<}>+3 2Lx=R_r߂{.Skm.ȏ(#nQznGն^k3 `BjJUMO۩R} +d1oIM*,b--~D0sbfg3rNmb?vkug vg:OF#9h) PF-h FXX}}0}!º3i=Q"0w–/:3NǸKpzNtǤ$iPB)NDrxdÙb `pc A>^4n9cpMmdur+hIx0^oF%9@ϑFi{;v6 s(c9Kzt9|<0\uN +VG->7 8Ǵ}ĀlqDA8o0&Bf7qQ@GK <8X\؃7DWKdvs];}Lx1wbjm6eQ[IW~H6ݷ$f%<|{4S7b5_cgt87ٕ <`|Y9WmtQe:6YӞ4\^:Nd $?"GUϣk M+qbXc9!:{iT~&ppЄuΈN/현$&TLp⻏lrg=;+| !L`2EJ`drː(m̝V:h-µ)lRh RmЪd~p[jAr zcG%&I,M4Cy‰]$ׁ +eU6nԭM'#4 g,T.Hfq*!%ލ#)BD$BG}& ]Ce\SOW61{̳zy4e-):[40t Yp!ItOܔ6h {ͧgE ޅI!&MOC{>Daҿٮ|Ja79W/lҟ#k?ah,r4n9Ƨ,}kgaFLIΒjkkIo!K;%dY5<ӕh.zh>5pVPF(rYnC#&JdIx,hj] o.FRL+mﶩ+Q}'=NNI'ʃ*xLDS+/CUo<T A ^9 TBTZc`]?DWsdloAlH}w(b ?ptW~k~y^ǻ3UՂ1Zs|7t7geOAdH}p۪ >lWzPcKؑ*H;h\qzy[.Ur.)f$h.|Du[ ?ªTQk?]j]^azAL21 l-bXmn72ѼXC +iVA4<z=}gQ)WQ/Nm* q/=;j/6Oh>~׸Լ'-rCY!I¶I.9㏅Z#5|Ii%*uΞ +v!@b@q^4]9(˳X4cL"3,7Y 5j2Va.)bk>Ř"{:d;) ϵHqa).2׎~gȰFNig>/׷$=~J.mK$GayӻpC#Hp̐%*,[ܒ"{FӏYTt^e)>ձ]}#Tm=d$B+"jjcRpIx09 vs{|vcKK 6oOqW.c~;(S zd}O,12[r/583)͜ {NwuTݞmvA&rfZ)g=/0)E=X>Xs t&졃\ |S< +nTހԷי#D_#ú-uy0>۝hr D &Ai?2; +gS10o~X9$64{a$햏DBa`yʝ#qo0A۝5j)kИt帰OzdI:[noFCN6ErϵnJݜ7ǍM^ eq\I Q=cNSV(n0;psI-Lz[+=ql8U.}/5‚~1 iv|b^.e^ +j%U:gkmŲR)@m~yp۲v9wܵ\}A]UyCnr { zRy1&,H`Ղe8J7 +,7Cg{jTCi6h̎b3MMFfx' + +"V7o޲Q&KJphdvuK@Io'woŁy=3(Lm^ɆI{j9⼛Om@)$gDŸfnYv`R"^e+&B!8סRBv;æi0.@!8GhRvvl. v߶u&_@OBMې&g0ukvg7Zvq|I -U_OJ2?_<ּ[R?(j/m3^*S/WIݨv>$ + 63~+zl`H 3 5auP͠lp %TP 'ȖqeSg()  vIH x`E-Lc%/aA3CYQd { Kb'=[X]NoI!I_>qvР>C2tiW]Ls=֧fă? a'p>4jT[{Y`xuMvV(%6ԠA8*OT?A|g>1ǷjL!Bū 2R8 ^NIXVchH2̇[uzc tsG9V%.sK¿XY%o{{l30ܫTx܈_Y^֡&Bψ,?"w􌄐Lnt qp5`DfUBu0FmU6ÁW'S >'KRYSi{CN~61>'`IM[EOuJ=32? 7Wr4!1.{_~7͛B80l 0t689Ykt_UWN`U"^<\? %G7?C@{} +@i2>cJ$?@{w /)NhTlCm|>`J4o;6X{) Yͻ8iM}X4`B +.*Jk\5eR+S'Z=0\#ޢGiT@ lD]l  jegِ:tqFPkP%P widZGEc۵]ԝCmIJ({}gU4fGtz䳉˨>#OՇe(E:ڿh.*<6̌ӏ&!c%&:ƜLI|+cIK„Oi2ӝTfI曖 wH4-xC]q-R~Wƫʧ}׽3 -v?hD2?n +_m`.5yCmy9ϔ2@k"=/Msvѣ,0/Y/4'v76.:~xDWfibNy/9)(G\LW8 ӁQ,b['T3{CcR{HdS@ߏ'ڿ +repm19]A="-G_))E $PU"~(h'&5w 69q\,oee8Z7qĊWuZK 6TEv\Z2K$a +$eJyѱ(wvrhg*Jg,;Usq˙!P.^n83L0qcNUI9#]n@\6"礹FԓN:y<"Γa;WKqȱv0%6(E +qt L6sjj +e\~Quеuť +]!D.׳I 1E](;(J/$mwv/ٔ.;J"ֿL)]Ο16 ո\+ƫ4aऴ`x_z8/-l^zqv}n? +\>)ή;N[ V͏ñI"laƦ6'X@PY@S..F^\u:b=²*hrw޽TZj +vTHɉC dBhFS%lׁqZS暎jκ]ЩtZhU_ B=)OL۫H %1t>/{3??(l_f1کXx¸"n5 (Ы-PF=y[EgP9fZs: +%r xI!Sh }nX R쫔=7n$W!E3|(?5kA(5LB5Mb**T%wPs 4}W"HdZ)8 g|̄W7v (O@Y` q`E 3I}'_;*d-a4Q?\LiZiǝcˋ^:V`zesaAB_&–?ٯwCǯylc"%`ޚWX/hviv ߺAe?[1삜ꖠrg Icx@ ^Qm<"7nWT:G)K@6EV&;WMѫHTBP5XH3uKe%>@ip=n^V]I!+:uudK}/Q<9PEH7bfB{v <a;5 MwRqrϩp3gb-次bJr^%$V;YO{| P,p7?v5o"k(AyL0Q gưxv7ǿ *?h~4e|gIAk~CJy mzh^NyZ<4ń¼߰H4gSI@m f/xS k8W O/`hE۠f]^NJ%5A +p3dԂav_5{ߥ Q @(ݴga9o=)v?En*,QV ձzvmjVj.Bo,:Y ! ݳ[l:z;B,p=b{ˡXMݳ)ڰfSk˥7U{~egDW%i*J>rۣawČזDceNlF&#Te53*Ì^ߜ;þ!u `Hy5Ut GhO.+k\Jt\قFF5\]B@9zЀbyLmp\ۄ4H|G+غܳobKNհBΤ\#˺f +7Y?S"`4: Ѡr+`b0*C4t)x!ӎ&*olX)֌֑e%Qou@\^jrI6!Sg>ql R5"ҷإAA]( +ⲦDc03JG KPQ=RC~j8D"5hQPu楈aj׉o!bc2qSY\QM; 4,G7⴨- ++a\e@]7x/˹-TyZB\}XJǨnDP [&4j9Xْst}&V0t "s P 1 3O:Z+hx~z|R(>M2~i#?PQ9n[v. [T+É@8q)U.|uFi|au!0{^6kkTv)SS:_{!g<2ȚΘWKjᗆ3cYn3Pg`878<*)nYXiaӒJ`B2 8UsfZbm0b hP;j2"dfo yWg0)>ecM7f~N}8ԍ("977r( G۱R,|0β 2}rQrN, %E +rlfIeԾf3ʫg# H/XMQc0B.{fo1+I}K: 0`r% ;D$oCjźqo2 IwZj)`[>xQ,@<]3D rWԭc ;{'I?|f +V9I.^+Di9؏o~Y,s~WDfl/r WXQI'ֶ`3c~8g6 |UrlmeF͚l|wa)̱+ܣ"?,U 0St64P6g6PbU +)̭gmOo1SJooZ5Ե\ HpXg0 +,YaH1S>CyjQkD^cep&tTod9vWxn?1a BHCmַ- kL賉ՇpϭEһzVi#B{Z%,Az ٛ4P\.>t7Ģ e{a'K'wҠPF3/tT9d6fNɻ5l`C}OнsS՞C]O?@{I4흑ksf,a5˪ձ*Օdȇ 9 TwxF{Cx> +_[}%{̹]ʽg}ϖ,] G>φ좄Z{_z%D齣h bq-d#C'{Y#'xҵ )փlPa辥DaY%bѐ}M=1ú>đ^+Pq8wCjX9ik|xDž,z6+ sP)e梵"@Jݣ34S(c`(f{5\ەm+CSȩk +shX۲_{Cl+aNq\u=,f^[) t垲Z%->Or rn[SBz5of\oI w<υgW.6W˞UfNR B6EK?ΥQ6>TUVNf< 8 'Ab14~rKu3±7eL-)xt9.0Q%o8ea sCOC+ɎbZnJRotYО'\م\KC>8\ +A/׬zV,5X'7reW./ZԭE{@h 8W*#NBkg%ZlE!dqN,cCBSR 5š^o )tǫ FԴwWx;׶?7jΙ)Щ>ޛa׆/_.tj&wW 5K)SU|]=)]sF\ P[vB>mxH- A+0r9> x]*jVq$Is7-j~?$QnJt=Pfľ6L?QCzX9jJ<|d[fBزd]hmz=31P*&7-0צUMS~6m7yݚ(2ZU%^cL|l"_EǨꍍGJ6eNMwmz~xTta!*n8es`? NY_L>sȁKc*SxF50K^xHNL4tOm! ?Jj]zZC{ې%TU] B_"wNmh$yj[n|}J/5pdӄxf)c<koc9D}V)!97砒|΍.Cz4Nvq!mmy].uZIU2`g+W"q_{n:P{Psl>{!s@Z+{V l:謭G$ +:/p1Ao^ּ9١JS鷕fA_6[]g[-ٛ_^DLU`\4-} , z\J[uV:yg=ZϠ6ȗ-?QGlZۗ{lf~fmT=HΌ"RHK5O<ά-NHNI[$kՏX:RzK:/ UPEHv[_ y~+-hƴ.``Xk}5)_m}~35zd6jʆl-96/OgD '-7uDB?+mEDIٌЄ?ݒ# Zߩ_?Z+>u6:;r(VN(B 4,SbyZ:omcvVufٚ[.hjP*">۽Y_!jړ J5EC?~FL$yJR)?ּԖTȚ⊱[o5-%F ~pOjyawDz;H:a! +;uwN!qα+I2;UD-m`%R4{8:gzы+V^KKjk3B6aO#SN":?U+xLgf| ԩ$N>J\ :uZ^jK0HUA, V..鯚2 ?֦kI"4U\6,~Y]`/B7"0Qk%QN$Zr5>.24K5P26KJhIߨy;m}A|>} MY:1/FDS\`We &it5SeJK^頡QڐMI +&rzc-lz!չ|K"fv.1sK^Egx:̗\=ݼhk]i-4m\Ei}ٯ??k Ebg\HS`SykL4!FzQ`-ҴJ.TڞKYCh(c(Hk;q;MM?6/\Nx:7,2&%Wұ:K잘~F͹ATLÞ+$ܛ*ɱϟ얆}/9vBIny68%kao5-V;}b +LУBvy5s-_5JHW8;*kԨ2л,3Y/d7-!>h(B&Pck-ˀu#ܩʘ1-HλFMeFuj +yYe+=_Wa`횿2kTh#ԷSy{0*C.s,r#׫ QrTWA$9+򼇆-ٖ}9~ER:edB mԨԱy.KEN"S ߲78x7a; 00쌥&2wlJ9O +խ1[mʗ 1u=NzqžI\cϘ6P"ߊ6[tW +;uZ5`=|.imMubKlkT_%l3!&xNf(Ⱦ'<~#y;[,C&f,~!J_գUQ'W.*ثkczI&' e #x*p8O7-u0M*cV%}`hKSMEQd6q!#YzU`(ac}=3߸:^Yp|f{(e[ + n7nopr3vh{n%L~9)m6F2<-ΣKVR&u7 +&am:WrW*Jԛ!5(k8 <йcSQSIC0}4ӤBuq{Ӟg\|=C4\1){28vl,<ڥe(ws#oPxoQٷKjlV>g9R}chz%Y3u !RtC=>,+VT_j OѵRڃKc.]}Eݲl*aQ1iTѲo~ϓߤ;@Bu;2OJrkR~ƶLut^GL[>=gpzuCQWUl H#8BxGmʖ +/xt$2ߔ(~wZd)c.WI:lkyzf9:)a[,Rz7.IR`Y88wË5"8LNBxQ'gZ:;ؒx҂1h֏În}_M֥%/5 B"ԻP! 鄓hpNهh ܭX` 1v`޺wG4XK bG"]*uTLԹI7'M8NZk}KBQ V4d"ZrKE *t҂e<4tjؑZst+YP)ÒꡣnIk } }nWBX՞cc^,Ǩ LVq0ճp\ȣO.F<kKc;6 1* S`w⡋xK-hX4hYrX+2u7hK諹3gzb*cVvƺyEzڼ$џZ)BW5dd0eJfN1 J[Ɏ`T]S*E@RpBС#- TL_M/]u`t?Z8:\p򋸐EKW01aV\;ZEz6Qȣ_Բ(! v M)],ҥoƮrR!$uHP zyz5۬nΝ+i,M589=z%BwȚk>x 0(kF_xS|@w1q1X4vZ'~_ Z/1vo@ޡݖ +G@g]ȼ.M6G '‹C= wTC֗"CtS|mFt Wz@m!ų&ߦ"@AK `h6iǡPۛ#_,R&E%^Rbp<:~ z%T+E)&y+>;ɑ 싻'ˇW-Kmܬ1 +0A⫊N¿)UA)s +$DU %G)(ڂ I>)I)4 &) Dz]ʖ;kjYJ =*)gpPH:WNT$XXwB.aMLAU µ2 䶚J~VG~2Q0a!-^I`'-{Ҭ,¿I2mgP4y}k_ #8{)2uG+.S-.Oxˬ*[x٠L0ɬ/Nc} zeֳBb[iǧN8ˀBm1aHCf#no 9 ?P*}y+taš [VN|2~>aHȷANje7Fc^-719:ʕGaTG='(qÈutcnF޽nX̕?|υ`=+eck{;W\||"+V{v1^F|VԵm U<dq(ʬh.?mn8&VN&J˩E,bퟝݓ9g[NúNڼIBz=\XW2?vxo .Hm5 \&#P~l9qM/ug S/6^E%<~XX#&(3, HmtA)l6W-dџp\0<>-l}Krj+=`re:1\6OC>dE\9vPLav͏=E_46-{L,ӅhOm\[ +Wb~V0BP5q09s6Ĺb:aJ6OT2.FP}~xWi[.NLǡ8y# Gz#cCZɫJ=`BJՊF7/S+[z/ɴrW73~|KnK m +6B<;4H \C8P7/p~)ɉ'>~$i/QW=Bt;[U6)JuXgWgL?/Mc=_&mqӑ"?џm1/'1tq$"k[m5?%b~KF#6kmraIzM@r25P 5ZŠPΩ1s7{{(#0U\\ ɅQJwy+F_T\BQʆH\Rj:% хiR4lR_3E\׊DWZk1+605:]$7bOEI4/T!oyƶlap]VHOnm (v4ȝ>ۛbT|BV4|`$}bBt*-x] %eQXJ(BcyEV 9+kOiwXGyO8W{`*le/ض YWvPBFHl^kSmZC1!Bxs{u||ZH[;WoE[;_=T'EQ>SkW;<{]В]Qo׫/q~S!*^<=̄bckasC(Lˎɵ<1͇/bcPbo\Ŭ{)$e82X +MƐ&!|Va6_+8N4cMX9!HS( +UqE)Pj?jne'/8)Ft#H6j6tR?>jvpPC ULRQ&{-b`݄LO֋@.зs U AZ +(PƋ`M"KwA +x_]v |bo4 +A?>Z<븚^ 6a6՞o mzFqԳ_&C",+W +ءX(UlLmmIY|ǥW5~]9)Klc_TbeBn@8,k+Xh--ch,,nv B ]%lQCB(ERKɠK +0J!rIZx@$=7!QWk: "M{r.ZfId fJVڧge'QƮyE^)=88gNJ6r} ~iUJBb{-ĝOpU}/J!Aͺ\y鳍}9܄iv]k\SsJrV t*.A(`o!cpL2 -GR`dN"he<;d[t<LĨBa2Jσ]@A^9ż4r Tf畭<3su_=^>`A1߾Ԇ"iAï@OV˶XXCˇ 5Ziyg&hna=ǻ,z(j`Ǽgٻ\=cGmGg!}.⭪JZQ54} @xi{IYj`r^ ,Be+ؚ7ye}z3bQolVoFyvlŝM"UDFYM@q~~7ߎp!ds]KN\JK_gS>uG tԮu1͞~Zݾ׿H9s@ʕ^:j(z@䌱|a3OrlŒ*9_PWs(/`4 bv(<+WXu N~װu$r^u.8C{<(80W#il5uײq9WHAOHX03%}-XI]@p f|J N$ru_ҊB} tJG%R0]M+zn8=|֎9qIٔR%fK3U~i.[j:E{arKmuܔb9ӎ=tx^mxiJ)198\~# +UTwSaHc+b!M8qMʶh,#] *8)RwnEP1{lrr(qզ+m,LZSB# ";%D5&ZZr6L5UOL5t{A{9$ړ 8 %/r +HAp>TC/[j21$<`*P/jdA> }66Ɯ'YAUYͨM^)VcKiΘ185c&'qy9vC Ǒ>{? {#'.I8D Se2E=|]v5L 'feG! S"DC=(c4TƸC#xjCᰅA2̤ȒIbL%]c0sSw%8z`n@Mbb%wjmO~r-T:|]ι%+\(eO]Qu91.]aR0X79 D":9vjfV!(Iꚝsj)lq#-jH~yeÈ#=jE^$u82$EZWI[ݍU ZoJVzfDdj`\(Պr-89`gJ ::j4決&onS8*;_ *ӂKMiiPZKWvG]!=**+ ?oL/qbLg =S="j]jQÀR.4!(oл.8`>dtY7V5nBԬ7EA dU6:@^.){] 硖`y|uhCWNS RT <ܙ 9 +-B;oЛU%U ֶ=M{AӦ]ވ~H?>tAtL0 KuNKHySvj?0VL$wB`&ҿ}@\8|nyHj\Q=2rM쎵\}E~Coh_́&?G:R<\:濦ћ +ƊMCu*vL[?ը_T0v!o(!1U$)b ŅdqJTJ6ia]KT%&Mqo< БueJo0n#Z`.= rd y]Ae<{dG:FWthSD :WbC܆~ζs~PʸȔƃ2$"Sr"B(eAR)VJSMc3!Qq\%m*JGոB9poQvBcJ<ՋW)$l+8rn-ە(M=~Z+Z}iTvcć晲MdpEF)6N] 2o E +鋹;%ƫ+?2 +0x1bsWJKd59n_Q66hʡTHjMho\赼!XG^CG4S˩qg)LoAr{&)W}NfgDK\H5_!3מ$H_.3 SK.w.b6'9G +ȮtQ6Uay?mK2I{tCY93k/ik8Z& tjxo5N;!dzs*f5Ei;2_d)cdb(nz>ܔI5&}IE `j4զl<φhm .88-g}P6ꟙ$aiT|I+ω^a7NR.8c%{K97N[GfNkZSJ xA.UݳإyIңl#* KX {s&ŗ]WI-Ue;KwWhZ+Cxa;qđ/V=ΘM@df&KcNr e3d:9zk$G bvx5q9IFh@B~ٱ>&A<&Og&bq7H{2螐+.bwgbԲ;$Q']u+*`s\du.!~ISL]Y9% ARTf$m\ح~EdQ+֪;[wz٥ҧ},IYV[NfԤ\Jb.{i>% )(8X),o[B + ڬ7Ղt)J 3SND.?/KcG}Dڜ+O?NԷK kC2<*ȃJ"Eikv,bNĮv Ɩi87"~;1qiBb$ R|8.ovfʏZcFnjס8{"/vǏ0]O3| -r&q:AnA_MIO*! +I[S + +\tul^*M١\N9cUL 5dUD.KsӤD3%lӇ`҂)$^g%^HB^.0L/W cW|#w͙P`[e 83kOq.9.*U +ͮ4K "$xI +U$4t!e)F&cpxָQ[|ޭMVݦK(7ujǟмXuϪj]%r.n~z K^.E@5&O%ȆO־T@YG"HDRnhJ|W- >xS@ :Qbj$ +-7)Yջ|\mp-}ttOϥ5%<@mEZ +8AD-[ w.AsPb ^aǢ.I 2N<|Vm $|DK e4>4y 8= + C1jM.[P,E!7@Cd[ egdIk'+_~>Ch81 +heږwJMU~%Zܨ\:tS QY,Rߛо>F 4vQ9K,}vhT/@]G\D +X<8KNCfo"̊t>N`22Nr34}nߢƞk]KŖҤBYmW^sRSicN^o͐yK_Gt[R8U}VMkMDy %c}k3%9n8|Jpa:?}sYf#>t݅'z~]=R{M3v,g&[U0@!s*PnXX ͏:#bOX2pz(u2&ē] XT!RuоCFJz¢ ~G>z).#+qF4¬*,y )G`Tٖ0uN/s9Y11Zڝ@Z p |b/'Щ#x'tzK]j#jwjf7F"92qK2(8*Wg>Z H?Py}|V俵[ xFұw?w~vxDQ) Mk0Ih. KdG *VG`lfP q){l6rɴN>tM+ љɔnY|S`d6C +O1 H߿h8M|4/t4?Y\0La/|xhrH{~q2m=(PiMohF.5}4[f5UxnJoga8hU`O,Le #Sf8o1Ʉ+DXKjh`uAЍ2G(yzRz]T/t> U CwQl`XLOe~` :*AnBP\3^ה*cK|"wn:b^mg1fza-^g𰱔$-.v^D8}cu+ +^(_V=v*Ug1W)^җ2<S~\J:>qZ9 Eg>:{FBV-*xNl,} }_m12-'U>Э{Wv~=[ٺ]fqĥ}>ە#;4"'hIjKvG0}&M;_koͅ-O'I)8K.p+ptx9irfV-z:'KMRWfs)96ŊЪ.V.8uͫлx[>ƨyvBL"8q>kRzx?V]CV]EH>8 TDm;`Uc,|U)rW]r?T}*wz! +-EiESǏ8ςaV._7!IJiy!Y>Νe7L ]SQUx(![rA47; )NT+l:#:<* +!UVLx;S :^-;e`x +=+zBCY&Lk-Z9 '( +x /!I̤7q%H6% +re%MY'(t$kU &@5sB_n?ăf0Вщ]DZ Mc n<w%;ef?ٙ1`@(Y`οu +hOU%-p #+o2XC)h%'0TZ@ x +E5hjCAyM}Q_-X*%JdE[$Z(鑔ULo'`>`Gפē͙-ւPcڵKO)mjOSūh<ޖF7t Դ f֓ n]3?M6:8[8Z8L"2tiӆ4s!+.2.R% oz5ScQqТ =*Fݹ?`qQܽf~ n .+Q}ʆ!/ʁѴ!鋎|΢qr9bf.kO# P`( 1W%i?U] DI9E'IeCh!Pd qol~Ow]hy@[`b2q)T%DrD֒Ś' +pS]As.S$y$2s]안NWQP|.tEIM2uSVҗNMފ9)z56"(MJX4q`?JEO3`mO3|zg>ҕltbT>ePuơ~%K8 mܚRȵ WVƮ3jkDC' LŞ3U1VWhBORBj†#zHl)W}7)"#&0\;R +Nen+RxT(["*O|5s=LTe^wE}"kz**TfG`7.F,6:c²3Ďjnl+b{l9\ԽkXZw0ݕX b/|>wTLXFZh3.a% U[ 9ܶTtEM ŅhhtU229l܍Bh -(q $6eNkCQc@kp_ vjL*%1O$bOk/>ED:Ϝe-&e{~q*g抔یm˲(zQdcG }5Ӊ,}W^g :|_m*׍vc{ WMk+ Ԥ)%wU-[=SZ_bw9{d=D#~+L^k("|Èo./ \H(<7@%/22\d7ۏg={%:Mw d +^:w!Dc2z +"@C_aݫun҅8G+wVxAFaCu%\JxҖl;pq 2SY-Y`zkatAWaxaF VN7,2! ]kA_{~lσ@@?]{(-q%`#p!Zy~Lw ~ KmG#I)ޙ#%82Sk~vB؋0}^fXj{T"i^lT<4YZXS Tl2S' o9YcYݼS=OrJdck([ክyJXyyv ͗ ;%UIxrR,<3޸cjQٴeqiczX ,nE4Ŝ|_E s`CHGL;=β +^naEb7f;;M* +w dA`7UndemǕV\Rmj=J;ٷ\wg5g9|SŝJpL TX{TE5CG;o{kg4V}}uZ޿VC]>N}-}y`p{T3/S}G Ϣ_Eotnbڋ;wDž`glݥ2Zݨ2pIgUc Ɩ&=a7i1xg'a #.ZI{U]0 VT).S.-#RSzDoN +ra {3']^tS/,1pn3xME^&j@B 4y=a/EN33-h^ph>i@l#d"T~xlV^חJbJ-g-ABO g;kv`߇hʑAEr+QY dvwiJ,ddҔXƝ+.&8Ni3A}ݻt1*=~\6# +pOlWܢs 'd=.Wa0$3s7"9|cshm ;WTa~=J:ly2Ț') _m$_h5}CIȪת8y\-la-r +ʮ3 F +hf%Y>x~!ܸ6EUK]ҟ+W4l>EoEb E;{[Z16Sv'Zxz,ZF\c|p"F$Vrţoܑr>{|#+Ti>xGT/9T>.#'1DAbh +yݠ;CyxVFy:>:EI; +6.v[4+6>˳Ş+ާߠ6{;/yVk:=z'[&p (bl?{gN]p%qM籢\N+Ʒ6%̥5nȴnDí} n[5W!W-[ bkZb +ע#1iq>/"dPjAi*`Uq9ǢrywVZ|!]O7$PckO/ <~C:DvT?w~$#yvKck`Hs; qY/~[ͫ~pPO99WܠRl3S?:{C $[&s-XXA/BRdTW*x~XyxчyAe@;񌨗jFf |ϓ0~V̢^s7koqذo(gAFeoϬpzfŸKǫ7ȥɅݛ384m +CM 1|lz֮?ԿO2vIY‰68}~p 8hzkO¾)tԔ9dKyЏP6p^׵v(}~`hutm;ǯ`S;mqcqvE>mlԦT'iQvVjB>EO tK.X>owd>a5]dJ`ќJ#7<r_ H-V)f޼L|TL6@zt ,k d_}EYx4 #mOG6~k3uժbq! >-0MiP|g[]H]^K= ќm DZo"tL;}nB,;y5r,qY+-Ns -G X2hq碜[wMx9sW#8D~r?0ͭsNU!JXXniQ1ϺTaQ%x3׃_%3L=xxְ$y2J̦yQȏ2_*/S92ׇr*Ri޽`/EBiE.3; A4ږn-bG$i*N$ +6e}ᅡ0c d`!YpY ޘ]Db,.ly*m/L/eB_65`6ZaCh'έRU8ήy?U. S(1QϠRNu"So$fL&+ef]1h<-6]5:m.hh?چ6]*4#&-hzDhoi\t \h8l\p -'Wi0UXf/9{l]r++U0EUܗmć}5=h?Χuwԃƒf"ֻ>|p("85ueI"ː-F8M3{6Kd]RAbTB nVF eAk.=6@}Иhw5>D-l書*Ndox8;(7'01^ ,ã&Z Z=vMDL'f2>C!іD f=3ؘ!](ODu⩵ko1( +*@Pk`NTQ! C`@ֶ ץkF `*cvE~YPї )O4ct.jU54qܬcP"o;l}i߬Y'1/s8ÎH4x[]\6 9)Erem7%Y!~*3/XJIOG su3T +1Us[yQ/ ,ȼ,F٤_B}B|`_nɶ5% :CB,.MZ{`. Ც/&~.~|xlMz6MҢ]co -~1ɠ$}0L2}EɮȅIfNiGKDukysJ\z2pԑW- "0EeW!C̸Lrmk)- mz' eب2ƲXaVd8$A Hr$>5wvt Â)s1ҎPe,M0Lإ- ͐ly澵]xzZPДĿnp}Gqu&G mO5fiP"B4׋'w5Lyzs $n_94LŸsJ#3fvm`toΠ['z,TyU~瞦S<(: *&%`&ejѥ5[nɷkՍT `4`q G S\G1kHE'Ɩycs ]+q7燶/L +@2)S +o,؀ -齴 ?P?ˑp{M8lꪱ;NfYCLl.̎Lc\h 2VŊL>(HY,Dp+K2Xh/U+Qz({Z)Y**i6+ -)qlf oճaR 7T_O4)GҼNyUaEQ|:ł. CTf+[M\i]{#_ /=u GUpJU) ] Th^K*c?d1 C'1?%^b5ջAGd3R0A>xM`G+ >0ԝ5/2z'FnF@`FXuE]VI&x+N.6ƫSS$MGwp/'8gaJD + t)I9&WD9!.U=*X~ܱ(vK80DK onw)튽Y56E U"7 asL n(^_W^$bِ=1^#A6{%ʃ]K qQ71#%c1| l}9pü!Y v@1AtF8dw@?Ç"wM~}@woĐ/z +[ziznX`ZE행6-slg[$h[l|GdIK|0f@9%.jYeSP^xf&eNPsV8g_닆>`rdHp1r +A+KL[Dqmv ~45EF {ocl*\3Xh2Áěޭ ¿1%`OPaeo$ o(J#%h|ZŘuO3bFȜg1bO(すP&4Pv"7_4H^ /R{1l4̇V [9¤OZzkjr +g`LP(Y,Bc,L-[xBp,TwO@A-Cּ$QăI3ǃd~PPBbYVIِnO0.=_d=c6"$Wn?UEǪ#^7`zzԞ!3]{B5좯l9Jf{ +F׆2ʅINA*$Za;E ^*ΎB'eu;#Bit2}.DTQfs=4(<|,䏕Lr1H/^E*/Q?\VY頡>Ge6>MA໸)6>ڽ='o@3'̲)XH0 ˴`(6DCm~0stoK|?Rj,<5`;r(Р[g=W&!@L& YrDVuK0(IrG8ֲ_sU&D/cZ]& )~0~h2wX=PlwFORZㅢej$W"6fʒ :yg6=d6WN5E+q "4J_!i*mrE9e "-YATn&+ွ9T +}*ID>Ӊ1>eۿg/SOyQS){1{Cu\-LWN g- EY|Y )s^w<ڃbI:2f51mv`GOv0fxvKն⿁ TY@Qث?V!{MS̯OOr,u |Δ4X䧧G𩣛Hp8y1p\\%w`>Td\q2CU&-xӅvnTEW֞b /ir;|K2DR<2DZbiwgZSxdrL\9YF7 Z1M0hBҔY`P\SŒf ֍ڵCLe@ +Uݹ{l|>M +AbO~A{xZ0V!Ws.ZCZC61S]>z5MY@`akd~Б-;zwP-ۨV"q E4iݝCk&i}Du$h>|3+),R{/!yYdZ#=1MN֋T_9Lm}Hyr\![i}'NeɞL$MgAZɉXÌ5q. +ë>wj&䖚!_'%x/^>q'yQ5.:ufM֔(WMeNЁM!V[es26hiA+ {e{ˁ@Up^:~H~xPjKp]L?0ނ{NFA|Moy0wJ^C1t*7b9z*»4G~AT0/U)Yz?.'m$B-@$BZ*{m`)H~/ Rz DutY69ș0O֫㞱l#\*v(Y ãTx嶿H~]fuVLoSpTWŧ&pA@u_ZY@.2~>69,{>xjb?$_UTΖeWYO1ǐ`+xs;)}8|}Kg'-Ggo=,k Xիb9Gњ. UocgA]ԛ:v_&Pւd 3$0IHvHPpsZv`rξZ?vDgb dםGj4pٿ#, +ʽpBiΚ>zBܵBdnB^j8 #ˤS: s50WO*1;سw\pU@@E2<}iϧಽ~1E%qSRɕq97#i )+T~n_b +Ѝvbb~^ VKQG.A߁Vx0'Zݝk/9a- 6ٖ֭<5 u`f@4C9eX1(MA)i- + z3H(0#Byƿ?0+%s2lbUz21.-C.f݀`ky@tiթV"L=Ƅ/ @W,/r#*!ebd°f$%;̖"= 4l6|7O^FKqIDp#O?d 9!7q;*8wWXxMZF1\}}5_DyFqT= +f2pFE$q spšKڰLC,윩ʠ(#,U8qvR}pW%hʲ>KaTd'zLlإi"yKW+&؅ -ht)Śs.z8(}r:NPR`]RYҶXϷls$yUrc?AE,\b 8.]Bu^*cp;5cske5ufhzɪ;VdQnPQ7EOCj%R]a/'qWOG䶂~C]ѫ}׳{%GS06W5%i;j4-QHH.D$sA^Sk^4SfNYgՊ#q67ÔJԛMzWQ+CpB+Rhs=a?N|m{WҎA[٠јp DZ+}`![殺MҒ&?޳^_,r9 P O%bݵ8b1Sczp P:s)awg8\Ҽ]r1~d ]jCJѾA0,"Xr*M9@'VU㭼rShRR},0\Ǚ %.R96ӺkCMKB2- +M2Wireg"kd%pEsJ`nXgJwP@JUA8ߏG/.XiD79S{LzpVJrV]MSnaJݷfrxSoDجI=[YPj F'*>4un_x=RA{^S%^*ʔUZ@ljt߷\EϗA4'lϴ#u$+=+uT{A(||_o?Ӫ@TijOthnGʞu7}cǸtk̊Pf_n'U:DV}FEIq|{sբlxڭ~u]#(_ӖR-Kd4Sٚ_Min 2Lg=hsj&+MVt2Fg~ wF=d,=̛QEg/D);.h,wB;r(5$~LX<&+Jy*5akF3k$ahHF_-{Z!^x'-Z5A]6ቯ&Mh5bA[)й=Eq%)9_YurFSֶIco6*dDfI 3J&?'%r⃙$I^wNdƶ?8ySh'O.y{0y>m)F.goSyd!uݼSE8EZϱuwIkP<";LMٖ.ctnvɔ4j27}_YֶAf1ZTN+Cv$J/7ni$ +@A2B00-]3XJO:B2 8PO'`[cf̎Eo%(XaΧ(l@ +fnN!ez7xJ"ϲZ='e'~Wʟ9KŝTY|t|pEْ@M(Bߚ9ɄBBHĨ9{.Aj>BfD"yl.B<:D v[^o[-)X$W=GT=}v/>&o+>$gO!U{f*1FpVfibJ|҅uL"°g>Acω +쬕ΧSXOv ȅۛڰGo2`\8G"~wԸWOƣVere1v]s.VSiJwFG@k%OudGˢH0ѥ 0Zh<}.u+ͥ%{j(K5,(f^(ceqԌs׬Sk^Njԓ%,)Dp[p,]_*Nn)XqY-8SK !Y#\k,) TQ>Pulq%n$rs rcad{&t #q0Rg7㲛X;.ђvqMiυ}zŐEر0"`;FT0?:=L .fr[x7w[d@a|sZMhU:1:ݜ~!vw|.mX4?У >*7^!e| 6q"ba +Jhj櫠;͗; 1l,AgH5:ðwi~'I/Un9/`?-v8&UU;JJF5 Ǭ5vX~6TE2Г 5 zpsQJ =\`W4eB޽"O/#eK=;~Te{q5 p"̽ Lf +:Q9xٞ=E7T:g|QXR5soNPGY70K_QkkP`XksV6=ّ0?MxTx_\+xXiő +_R!ICjViU L\Rb 0Cz* +Ɨ +oRa6]} }+t6Kk + c Tw bV;C6>F 8gϽzv|4FWo.CwD-*tb>$'Uϟ,kY@L)9n<~Lh̛{] ,KDdR `apQ5,{`ôI[{cعZ#W0}iqhZ"27z|KRM sG9~o!_<`iaKӋ(Li͎9MfGQݟ9?ni"Λ-/?( uRI3݇' ߖ*y5虓:-΢Uݣ_,4Z]I| 9}e) ہ_/.w՞M(!5@,h)cc`r T^.\h[j0qJm&[)EU +ĞS-kjQ<R(b Yt:@b \فӎ.51=q]w(Z)f4hEiۭȻPiex~ӧC +GvoZn ba'ۆ[}V.`| U^D">-Rn ~3!:c)<Et/[N$LE ! AE +(=na@G.!|Bdګ%mG{$%mDI4TCto!:՘ĹFĥV݂^vׁXEc+B4:4Gmeވ0Bݚcp`dA{}<3,4gFӦJa'" MNr6Zn*{+Ip;ZS"&3k +ZF1°OYn/\ Ŕܻf?3gՂ u=[U<[$@0jA TX-Mt KGj +-K4E*IW/t*~QT)j|f7VVv;>))wbED_8BP_C^!9*=!%>kF1P\dBGw]xy!w}#ǟ8unk{[{";Y(,h˞,{^*+!VS {_ ! RCWqWt>(?W|M~ @,yɱp.Ð1 CaʲZn=b/BNwe()]A2"?HjmwHÂ!lYzU^NcdfyPI.nZA6 3@[}0M G#-8Zh|!C+P c]!ٴ +fVjrNxT;xtKYsQ|c-Y(GzaACMzJy%,K 36 Af"R̟剩-.1M+tA]s 93“3`FՏvtG_覸KТIZY)6E]`qt @0rw1IKpYP'c)s6P6 %+VXqU'QcN)@@ +..# +4kF&*ZA,,^4- *BaIsMАv^7_kgSW_RhVv.&&m gaRV*΀9ߠ}{0r +g g6sr:]Kê6]uCtqs9 ó[wDF٫6-R&֦6L?iS%rp' AS>ӈe'-r>4Be3esߎUzg"fF},%]g)`b3-PQ*a=sjN䐖zʺlw`h>,3>uQ Lj$+`xb]Ò#-貥"|8 cq[b*7f VV=J`+533 mTMdnbLPIIBTX6@vCL`egan* ;[nCCK n2VMnsCKP 2ȩq;WWf`wȶRWb\㽡$R\xgX v ы i;!:3[Ձ̃ 1Ȼ27/He U o~xVu!>vT%ih*y3>}wgBF^>qKQu1ΣA,*-UJ*$NǓgx^!1`ϧ|חZ!ka=]„^Xo{%~Wng^x@zy=f˧Zt Xj 'BeAwj=7RlV30Fda!: i9.:J3#5"t{a iw2DŽ9q?^?NB%SL9q 9MEǵS͍t%ތD98BMiY-af\Q !9!;wR $x^B=5Bb0n!wK8gGSlnXF=lpfQOY\jd,C ;obliԕfrMVfB&d eW2r;pTPTsUJ"0T~I:**IZ^h)dT=xE"Pj Т`I!HMcF'߸E c!Zy;ͭEYj-J ƖY'+Z6H3kYy4}Siq<$Dy5d8_~}-7ks]%Y*pOzynpdЄ0 ej!PH E +M~ɀۖOZ ;lڽdyQteݼq)"z%ómG!FMM +"86U4{ 8&eG"T/5 P,l^9 (ʔp:Bpسl>uiFBEiZ&o\PޓY u͑ + / PIdm>c%Ui d2;_c]QGzaɒGz?ewk˥W|ڜa]I IM饸M@[@G`hJUNJt?p[ہf#D :֪Bj]w MGH.q`Vt.&n^t((w.05bk4s40 sʟnb]@ +W bN~$sAoQ*.oQ-Ų|"JFg?)&!QL) aM?s-Hc$lQNt~ +.{FJ)\i㻬NK%gj`1 ٭p] &qiA; U<\li 0p@"*Ÿ=:70-wجS8 ReST{Sv"j 1,lPxlXLX:gt6@KL*m%Spt:Ё>fuo2OhUw%8'ڛÃgs4,TcY ,&ԚޮDXj5pAX ʦe[4N¥r*ٕjuH|M̌5_pU.{|Xpx*Ǡa(պf翠IΤ,~gyJ\eJkJJlީ|zVķ<&Ϥ? ^?ů[kĘҬ +'L_QoOѴ:)/FKѤl @15,%CʜZ!MϜG}F]vO>(*[K5Ъb'ӯ4Bq}Li1jL:wn;^1jҨ1&SK|mJ˭Zv ^zxK^|I&KZ6h%›S7pq BJ9,7bM YSZ?lX3[{ߓ0 Ř=}X ֫ć;C4NTT~05oK-Q!W*A6HfaZdUVzaCFU¤AM]Gd +RLDݣp 픡2 G K2HmCkz~ N]߮oC*}ȿ~AGئQP?'A^"ժ69*Gf_g(Kvw Zp!늑!Z!w$^aMY*0ca.|Zkr8VX.<^,ktbYl +&%tINA.@qY6,e9]G .H [le0cy^mFQ9C\v'LUݢgn N~NM ޜi`6tlݝ*wPrFYB-&:Q@.C$rYVZ0\* x-4o`T$'@*\]WNͷ])R +P[%>:ӞvͧBώeY rZ\Xak-Gri83~rT U^c a򾒸Us.($||E\l'Ӛ%TNM<$ܫ[,o~69u9 *['!??Bst{SPq.r%sh\g+tqꎭ,p%xwih6h68WGvprLCI!>~%t> nhxZ-|"Նzzhuzwtb$jZA<ZDžt©ǟ0:ngBӸc f.&cM<:4^\rB8ٔ{LŲwwHMD+i(myZ~>fR'3v,ciYf?pcB8w=!}卉7`-=N1 M 58iG)dZc˛S^b(Vbn)'ԲA :yՇf]@а6h1kAt17ˇioۂ-|Zv֫Sk\bE=wݕ b qw$d|Y !rDZli <~:j*? GȒ$:oq5{v."WmR !h:3!0Y Ž)) + +ZwcgrCslh=c2}ZNd%i5aP _Rؔ{^L=^,ny|Wj_@} .i9' _+=6!i yNi6ب>PݺՐS_hKPL4C |i><%]ŠrPݛJ& ~\w9@.4. x@n=ܡ3 ZmVϪdFPnA˖li٦J,M[иΙ엚XF%apM S.'#VMJ-f7Ɣ4Ξp4$*_A :+n[M`Y7pzGMg׋#꒺Qk}7Ay_(GگFR{1nJno ^(:pg0+ a@IAP&?T$eJ0Dwr#!V.Qؤ VpIFe@k#??2(8"҉/PO2glP o0sle?ͭRyG S f#ɵ N`tiQ@q=:)7;T"9 ;޿{vCM~2MuKU4傷 &̺41Z_:G"doHea +mK!xy r)~ xH_O*͂PDqSEM.[N#6*&?j)0 .g̹5͂osn>N.1Ba1W6)kX + 9rc=w5m ;lv[ʰ[2E׺Sl^SIv SjyHn"Lnr??4x\RtlR-ujZ(׺ECScujg_.кAɄojg[iP,~>vSOk]lz$̴~SI,}M= +)GZvb/2nI꫱A fO~ԽOJ<դEl*Ko]ypKM@ ZZ!2E揬zqiSNM[ܭ0lstvgW:nWJ՗Aɗt!C tj>Ml4\4nrzv4 c +f *vM֝N690{xmşk*gkrר(>Kl-z@e:a>($L+NpM=yN:=񁳞g`- G5[RrK +R#7 <[ٞ1˧OPw ln~:pf ~o*__(޿Qnwxqo"]{5{ œ s..^/־+zzUk^Voz+V +j])}9(LsAVd$Gw:[.h2 ש&{#2eJqZ t-K-Ev-DNO  Y yg5F( zSCxtŋ}y/L>&5{6,C7%ύ>ɎNJzy + RxcsEc`ҫ`KϰC 8W \n磖OvF4ut^Vp8xZTaiQX +:V+EgぜǸi$xm!_8\j?εxiq>f `$gC_v~9NzDFY{j B?k7 - g&.}Պ-*+2䓫%Ej Ml՟fԮTF[_vl\asW6׹+_u^~iӳڮݲ=Q}y3 G1xj +>xt=x%c}O R6G<{ /lj@,DID\7UsƼ}W/) d#UqL]j9J옫"R_,1ۮ'J+b~+Q'4biwPrm`b?Jۉr8%b\{Ĥ5]ή<>oϽ[I#("PNntuv8 sT)j\rf#F%Eb)ޒ3=` iˎsJ9k (]Jl^BN7ȶo{|ʦ^`=D5gϱfR4[]Ws>XJjZZ-w𵴽

CkuC('Ů3:[\­ړSCoY1`S~L]Jsy.:^'B)5X}I)kw 1&r$$:tl8$P"TJPllG:UX\@3$e5 B+«PNQuCPVR,^$UsrLXTFXJ3}M>ڋ:Vm%N5ٺ x1yKA>g-HϾٺ=Nп}`CcխveE}<8ԽO["(=@f:B9Cz-Wzk[j, +3jx vLВmz;(I^[>-]o`wڰ$EZp +Vw9VyYYch7-7غP]]]~^Ķ /X<O6*x= kxLv>wK ܎+pQK@0rGUn&Lڋ]Q4]x!H],($c>[xhz'!io믇0-8{Dkz.&7[8k&tn;Q~qyX|+G7 6VLry6m8ބw3wŧqgm'x춚^U7uZ{6WHaܕr=-w !e%SclƝO=uvcX 9mW]jO5/^p û^ٗM_^{uGpؾ\;o\ ]obe>7#>v$M u读=}$OH,,` ;RݺYM^tf\Q̝" DQ˓"$>[`k\Lt 3&p8J=M,;q}1U+B ++ yV0I @f@X=uCkx"KVQlTO?+<: )1lE ~x֦Y4E<) W];Cvfh]ȱFΊH`g~YXLFz&ɵ-6-%$or&_evl+pmӉ"49#fʴ#?vmr- *in˨qMzc͆<"H:I:*榕Ͻ~! 9*QeZR!*{sZS(^x\$j/gY:w,*T5Ƽ?U4Kڐʀ'SX i }5Igb:1ɓlZu`F:F>/%syec;x!QmUhpH<ɢV7AgH 1ܾ"Jd;ﰩ=G<픻n٢ߋx+( %Տ*dN﷦)n}S' z~h[Y +&K`U,qcA\o|ꞃd2 M뽟c `GQ=Dfuuhѝum&Hj\'Hl+c <s)Y'Ӳ9";[ +<3)D{eTvzAE~0m9wj>MUc1@9:B#6SJv ߴ$|6+C:TCw& 7g$Nr|ܹy8q߱ \t +%%Itğp \_цy>)B,l}"I0KN;J`χ.RM-.j5ZE_w +v,-|\^viM;l߁4159>VlCE  +!޲T^s(7_N%ΐŐxDfe'DG%aG#+7's~ z2R+s$;GTv{A; = M/ Y7eUrxp,ٓ977XYaAq(VX[$y1іV䋅9:?7 # c0s\ tM@(Jee|2ӰSs%*ᖃv=}Ux\}.)T܊+lL2beƅ|·86wxR z*ǀ_ɢtI& 9Vd8\P0;j_Mrx;x x y5;Ou,C86k^zBaHU90*SX`e +l/^\a_{$)(bC>ܒ + 'JjWN?6!^C?sh~C1 +6WA/98QTmZJ x]W[A[| nK8WtK&nN=\\٩AuRnl"كu`s٫g:x*s/]UFY " #4rn:"+mJUgVLĬލan}8,>p7qĵӣzoPll]њcH +lΘeȕՒcInuZ0 gh{oSŗʔD#Y#(s7~>E9&ɜ|cK&A4p]ݣSѩS4zmYU #v)Ʃ7d*ی~}[A$ YM+?uXqb=>OsԹgYQ^9э"H>,lNb#+fAu5gbUVv3O+xgņul1V'jrK^.űuͮ1Oq!5Ŋ=RlOp|Ea飆V,7fUh4&ky0[YeSK.Ƴ[-!\ǿ~φ8d/ZuO~\؅BTM8LpӸ8 @=$r(Xω2Oׄ xXSŭpHM% +_#+N#1̯O{+(pL @!]"ž Zkp#Ԇk0ϨO5; fD4i,PMŋGaw'j2]2p=T):NXx2 ~;܎DۥEaΩ%Ohķv|dUQ%aS7b$.:^e~jfdqlٽl5KzYTҢM\tα\CvNM JCƩKcgwd& +>2<[ zIA*ml-z'Ǣ˙LbF6tv`d\yP^PԀ]WS7BzTv܊y O8궡6|ViͣZd57ߎs8?{%ź_Ez],}} F?k;fWE@J UҬ]3$F<5=a&ҮYW!1$V:E +@xid}`xk2\f:,W"@~L&*|A1 ,֨N/8-,u.,)n A`vCLeHAJ +8{*-%MP-$'P `?Zhsi{ մ.ޫG 1~c' 5GXQ_\hBd7Y0=<,MRXwRѹ0f!wLWpKTţVZUNZ8)v2S ǺCjqDYl]ʫiFBkN'Kdt;`UEyuPr%MUM@Ph#$QV#%ƔW<*٩3$&BVq; òuUhϡs2azԷΟ$c+ :7VlN*̐o35U >Z1!a+\5] JCB'2)3nTdbS+Vw &dWBrOvԦm/uNk6sǽ#3zG졮^ǰ7ӰamOz +np"KB6֡5Y=E#'Gr"qށxi&1tUVo,ՑTwޤ}Ɂ6P 7 mӜ|4.iEQ = !2*{?ҳQ7 G1=bYB Grh2k09$o;pM=ݴ9s[NlVrJrE{M(7|N=J덣Uh׮ސJrQF&^-)2Mtd8-"vY@WpY(׵*oVպ;8s$8H$%B߳MeiH[EJh}VӏZ^ۅc.J;vן%V)Ja K&ci( F"5M.]Ywr6M|c۷`J=|fRC"f-e?~9- 09@?)$q3sXʡt#B/mQcVTvu99KhtWr +-xS O#[Vq9sW/,ڑTrj 矤+`G'gc-;9(N7 TuVJBo.AM%nHqj 8qT2´<*WCڧ +sEj0 .DDXkV%놖B׀hKQ0OG9՟=O㽈H?-}f}gs^;c*""5ȧ۔E4leI4G]F׾TO8ŕ(B G4]R3<6LD8}&~dе//͙&iBj0YqL9bzzzٌM#yۮvgҧXZ-}e)ogQ>%;sޜ.ȓe$i4a&mW?hIў}Pqٺ]P./Oz`Ry=qp;&t ZO%7 +9TTF =VF@dˎE)}i9)ypL]kHRmoMOuj3D]'LV!b0Wx_t:A;Ie1IW +xn+ݟZD9w;4 IևQ;bQĝO{v6>̱-<xՁ2p&J"-aUEPK/NKLc)A$6nLA֤{$uPN*FMo$._' i{}~zOZOa78F: =3C‚ .O-Qz?q9 (a%E [6k]qܫ +ჰ6<'sc`a">ƀ3N╖$t|n 1KǛhgJ d͐+jB +]}D+ tRt85+Bt_ +!v:4S/g:L˼3Zx,!PMHh f{^aɯZN˙`p=D>Q6o*VwLYy8@ùƛ_v08N+f,ѸpR.\X:Yl9 +5hu%U"?.V?t #nQcF IM>3Y +r6&vLL +Q8-GcUd<nA\j0涤*Ytli*B YW| ۟0m zzsa9Ev%ʼl΄cpRl:֩_]䳧c&UpoSŵ7NŒaz=B<Ь +YQ-e+7lso4 yPJL 5 wv F!/P'%Пu)RH?Feq;f6  v=5!zL‡Ȣ2С7y +mso$p_\/js$g 0N7@5yFMKPSDZhӋdE:`rT~ŘU^NpѾd+ĶUm?Ej"Ӝٔ,EE7ãM,_1.LNsvp +@7MCA $ xjha-i#Hlf n :D]-T?|f/Ls"2:ze!lS@A +^/Uk5r yC滧k8D-0;CBJyRZVccA: s60ۧ3Cӥt%]Apk~v(UbX:RH11ҿ"nZqI sr xE=1\Ņ#2J~zI}Zqg/J"?g\Z{ G&aCC޲/sZ@~ͮ˓/Μf1B25sHc"}ڗkfO}C +z%G12ª=U7Or^=]%>E_?9?)h! rj:᜖m*.JC}@? +Q SzMB?/5+%^gPͦm]|%*șwg1U 8 IQM{!`Dt7.18z6JGI4iݰ^$Ep+^>xl2qupD*޵_,me&_laF4] 3\4]esK~uvQh(5p(Ze0{Ad _I@R⡭HDT>N8J;(m;C/[k;;{GQUWJĢB!Pn룁j]&uGf*?{ùn|>USьޞҨIߧ +6x< |~bR CZ]6QE$%  Rc`|VVm?/HuQA_ 9aRYr5C^t}7]W4p1=:եRwiF~eڽ*?uuF59 T:HRfp ^pzGLI_6H0ZF:T)X}lojҥCg;&o~D!8[P6 .OKGwgp"UX$y}1nm]V.Q3l?)G@'?.C)^ hiA-U6Q"hBC_`!1ȉ')9l;( +ӎ.lɕ gTTT/pe e-I]A4]R¹ÕG0q x&afAݱRs< &2sZ̔R WGv!{s%uyQeVz~qyQ&'V'yT@[:^{2l 7!3]S66PvZ{IfsbaqN9"F?Gk*g|bR>P˗nߒ0{g vQ3Xqb'#U*$u8GyQ~G61^{[|[gE'>6tl)E2d,0M8"w3 +r:usfw0I˞VdGcĐ`MiR;,f&! b:ܦi aC4o o+2:*ѓci\kGû&Odeǻzv0f \3,yd<;y14;,~ o.uhuBfĬp,PtK$H㩽%"De:)z~qV᪆V` ua#+;9$S#ؤ,.L6F0נ_75~ьBxVN%A'\9I+#ߧtL)YF PSCE\a1:sa]Ͳ1ZR!S7s'kA995d44M28APP9ʝ7ultsrZIUʟ"h71YKe2‡_ָ kf6>vz#qJς70Y2[igW*3|ُs\5? !` kP]hS!}֨=m7,ԍ4pE'HP~}[4 w53 K`7jiS"ܨUktj]@w8fǬˉT2j~sksf_Q9+|;zݦ,܂+Sv9Nu5NDcA(B:k3s5DUmƹ RWkO_Ͳ9:9K$`c1 2-mRVOi,4 Ws>#yJx|GS#P:&Ț:X ``-Fp  LQLqmYmoCP$쨷Ee`QX'Qx + _s1+w!'ԭ`kEi4%H?0h|Ugc LH{GJɶ4כG(ńT$xM Y}y(t̬(L"Lc63]SDyub*ӘoBTldX{aX $-i5F(za0})"(OYT? +z()PUǹLoV^PXK qㅝR{z9 +uu B.ʎ;Mus)\ˈG]woim$qJg}Zsf"Fp%΍DZUL$CS!"׆&Bv50'LޠltFhHۃ.8BMSפؾ+VpVZ +qG=Q2+z&d 9Xk(X ^gZ0*ۤ K;Ћ?&$ iYħUς:Ojn<]h]5,u}F &?$aGq , X[s.1Y޻Nܟ f>W;99sWCT E@(e\}W%AnG-kؔ6uJغ]kk2_sQKqtSK]NRzkС9B]Xҩ]64G|lcN^+;pV~ PyY_?kZ!vK]dSLq,v-ԋhQ] -2:ey#^7,WĎQk_eڶ\q[mm3v -ĂtmӬU!c#='wfch R֖%mW9k)? quWק]WXA{4OdDb*-áuJE~ʮj>vm^e +`ti%7)">y, +cSFg mJVqyZ#"/5ϵ> +zkm/զ2 M4BT|= $m2yQڳ,_ -%[6[g-CZCWm5QSopkSZ! :_U-R-gϼF% 0tgrnR7Sns^;&2l[YEl5pCM(uZ2ŞA> m~#=hp(-\7NůQ- +s޾ĬVIIo;PXGgIj"1QgxVy,;oC8-ȕ@2beOΑZk!C 8pZgyVVvޥ>P 9v vH)ySkA(gsN&H7H**Ghzj]O2ƙMEV⓪w $ Q7u}i_h*ç4X&];S}C56J,!``̧k?kݷ73̆ z˽C4 ;*9Sw5=Z]QT:-٤{EFWE'ߑU)lrm-HhX&Dk{p;hZDrP5$AT6З>Z*0R''{J%#bʚ9[Tf7ꨬvU 76Ω{(~r?E]ҕ#^ ܥmvEE1WqZrH!sadT$+&/3ZVIYX+uoK7#%(A~&cVr1VHf7 ߁bt۹`bLG «{D+rA-^nB ?Hym4a²>v awo]RAeO3~%]9)vRvIS +*[es22`sy&+R+@\꾂+܏@رI2W-gT~RJ51>gc:}$;TA_G})X YBT:\MY; % +ۂ52Ը{jr%($Iv0׊l-f=kМ``i9}P ݡC)jxȸҧasH{.gI1u* _|ٳꟜz4 \e6@reSRv=}a@ik}AOT8mH͈jww-|NlzC[k_7רpؔ 꺨>9yaWp=,FK*-!ΕݾLVD~`^/ځѩPϓWRrCE .r(Vvn(*JzGU*dbXNɛ2zWYdA Z5:j6/bHBONm?I9b$s/:gs1V#^%+ʘ[okQ)iC 13(P0żUҮR謫jmʾZPIFr fNh>nei'# +J>蛉7ԗGgvRzz@He'qoddpzKi$ϛ#|{pYKY@\m ڢo5}:I#5Daic1u-'="=4Dصɮ¶x3HΆB5J//[e8P 0mػ4Wd[ztJi76>>~V50=d5pޙP⹭iAAMrقXOhA5YFvoxkbďGJ]Z絃3>oEuW6$ŷ.}:t؞caf؀ؠ74gBυ)CjH$p)'A!67}Äg=2ֽX] Fm;TBٟ,C$ oλ-ݫwИLdJ|7푎AcMwj Ag!UvGX00e#Z͆} (Y>/a~v/g生uASBTv~*+!)Q{:0[QTx@`QS*g VM-?^]a1ܾڡ헊0T.'6e%˭Э <͞jo:gC Ez=;nZU h3aW42 pNsթVTv72=TiL]R +]\ M#;R5C{,M)v_" fd2wKJ 4\TfY_@JmKԴ!J&NC[KsOɣX H^$X\x ϩckEϐB=(!Pmݭ+vqeBrLS9QzU[)s_K{0N.v 3#JZ>~oi +7FE>p{r$Φ`5їbC, +{{Od. wox]և#9VemF{8.WI-hlEvc2Ȓ2J։,` 4l?EhNIе6Bhi+nu"T;Cql4|@jAjhCWg'OY3 +rN˝zZDX5}}P%ljj \E6@ +ȠN҅1D"QtSt|qu0T/7>YtݛP<` +MLc#cW ;c=(e^w=ȱ|8>_kٿcTCV^ h`o1ABfo5VTԝ +b&#V!Eo4lybSQG'SkZ+1#cœX))c݁ +m9t<' +fZJT7it]sj_Hp3`1Uk_8!6dr^f}%d; glr\~ÑIJwZ=Mߣv= i,A R>TR,D^beuM` Fwd.J쬄LMc$+h-=X12ȥʵFPU7sDVշ?f'HM-C+\0E +Kh=n,{*; ;` vo4]Oq8]GC5 hTB[qKw)T+Wj!"|F=I}t*cYJva=J D$La65{CMa?Oۺj՗u6mPQVW hGr*}.=Bo_a5PP;PN~)Ϭš٦d~ŷ9y8+PYH +]G;;Oi.e̾< Lb<4ǖeOMdXY*\R5) x?ۑa|;onY7.#ێBY%sSoDxIRBH/gLjeKl&U җvփ[n|:w0;}N~-~hqNqڟ}Pۿ歉y_{HƟ/n,߭ʗGQG"tg4s!sE?]3ڐx^;` +^ERL1c^F1^t@rQ2Ƴ̻˿VHz%q!n +tf' 2SyKq _L1` Jnv_`$Q;;P۩djX|Zm{&*}D|%{pZQpBu>n&3߫߿uNw>g~Ē)[h.4<[XN?*lW^$ƫKd뵊Ƽj$ějBߑVS/jVxKiEUv89|;𡫘 /?mkKQM|pK%Hv÷~QOnOJ\^=fɱ_GNI5fʓ;81z鮲,Qt.EY&?rR!q\콹¤ڷt}iUuFMVWJ^pJrPɱA Al "zER VYϯlSkKS]f $ijqJ +[-D'Fn#eBkLi""S<^Z|VCC1`k҈EV^ɲ51M)1 ?^]dd/,}ɚI[Yco3DzUcY7^f5jKQJ+~7%JJKA2!!ڗXZWkp@SVf䋗^gKWG4׵|W=u^%,˛zkBpڔ"ěWїiZU^ڝT]^ϴYYIYXn.lzÎ\E~%C]x8(Q5[tW{RDkxlq8^T_w͝Yv?ֹTPT[  Va)&GWz7Rx>Ab肾C pL fqj/`ZY/ nB`ioCfZjk{k38dV. ׬4d$~.^L&C;Oʚ qcOFf! )!eJ>6`ϩQ>w O*;`#] -\6dX CS9&ڑ.hZ@eYi0e6ͺ3ϤNC9OtZ4,Q?&HH@pѰ7먰 y.x.[DFH[P㑙9h+3䳖\4܃@dhaHB٦a:d<E!H.R?Mf:It PhM" C?q+k ;F}mh鮾*:.S֨8JB=Զ낻Ot- 1iozb+x5;%t! S(}+{ǘ<V~& c(o^'ٛ,CJXYCfrhpljJwtx#9dAb^ ȭl9$.-nJ? F<ظiL'0NYpEJ@Xp[vԄqqⵈb =@h,D#˖Iض@vz LU3b=Se;!ww*ooR^z +xpuKɲAՂl.Lm1ym܀, (UsxnS9rJ5n1GC 2(EC+Sg9N9u 8JPNf3Tϳߓ jCSPϲ AU 7N^TNhNhwВhs_Mq%&oxJlڦJoI;[z8[^8h(w`:#2Ctm44*!Ә4KwݕխC!uqtdr6U€g==IבkJY3̣a$UD? orOCѡP[I5]o6 nzYa ͤNoZ9IDžԳ,"]n/Ot":$8td$ގ@b(+DMA ==ٳ0_h83~ u ra:~|_@&f[ax3Q)y2,(KV~r?ڝ*U| +,~'i8ύsig,0//uNfNg= }LcPפ] h7ؙN5RLjgb.5MUwA3?ڵ:= RnMΡ"HtnLg017U)8S̈́CEbTSVݣ¤K5N2(i4܊(6O& w)*V}lչ? [f9%^}ې }q1| P)[E~)l w;IVG1CD:5.a K`V{TuA,^cH>VW2ԇS|v11Qp3UHgb$)~J@>i*0+AJhۊSs都J1oK{/dl|t&O!]v &^i)=ʞo b6vqŎfـJqr*QS2l曰B.f#moHYjd~[HrWT,ck/^j]1Y_n L~\ |Y@[\-x +* * y8e;uc!n!"qѭjvmWwP5nţFۘWPCb"Kم\ļ cR;;ATfA|YT uka@䰑\JS4fBz C|^B/iJE$k +8':/13N[ZRBKzu=(m~ rLg9qsP +> +)֡oqvflQ_4HR +Ȳm'K/+hŻ^~ʮri7%5]Qג`S[>$}0p%kހ+#SzoH4Jb]I FѰo Y%zu HLs8y~ng~o#ZByZ?8tq̂&oFDӃt6)S>"Qrc[3Tvy$Wbq9jzw&c$8>-:B-\GCe>[殚ZUaR'RUB'P? $EFasb!_t 4Q~2VsVe>p8JF_ n l4T˖za&뺍|+,ʋ1;Aq c2*3 d_+)ԓL[W #8v84 +4BI=!-*2l_!͞0Wꖱ236qrƗ{} &nS>4Q! 8`|k/~x*̰*ڴk̪^U(pr$: +D9|(j[nj% +CNXV?S@lX1ϫlQߌ_䢠Kw%64+ + ._CV##?IOepjSq& 34W3)'W{VFoA}<5A)zNRނ=7 H;7(K8:Tݪ)B BeX}"/ yj>#za% M%IǻǓx-GQP&o;ݴ3!#/.cRK81ʳ#l H +R\a``)^N:*Pׂ(by4)sj|GR$0Nќ"4S0-9"G+cezVgVr O jm?@K{;YWP[ylD7EǾPQ :"%wwشyt=wy5Ny@  V􇚽ܛO944'i (w&Դ. X֒nͰ)3vMq"'ED1NPt N 0'!5%QqtSzt[p=n*@!hZ8i|[U2)܅eye_"˗SazٱH~C&#oe,"X %V}PO]˾ӆa&t/?L}_ 7"FА[›E5jBb VgÕh(N V l)y$Y;?qE(FI +Hh*.XNQB ;ө&.ɢ +5ٴz{ 4\=ߧvbɱq-:NY;\-_JZUض %/00]ϙj1lZ.("tJު/ITB6#ňTfBUPO“I94mM^e +akQbK&E9OD:@۽"nɖC|0Yӭɦ +DHt(;<ְTCQ+UjK#eUӑNr㭰˄i;P?gcU$XL.SY3]1<(|zdh5BZ՝)P,.@qӫJ(/c»7z5)ە7_=BD[:^ +4d|+oN#hX8Eg2T87&틑߮I9H3{H=CQLg罵\*(Dt yZ؆jos"<4v&R +e/U]7uԒIUt7gy<9*SztR]X6dd +xp5WY\}P"WL瑶ѴeI:hQQ~Ej +w`XӌQVN:?QE;WW|J,)4(Ԣ_\X tVƖ:Uӓ a/]}eJn,rʜW iZMj^X(:rz`{%VhY7^m0Dma*Q|/J,[2b1]j(݉)m^xi/C$mU{%W +a}$ s~ډBʣ qvnHm6ne +>f}|i>hsmҙMTU'K]7i:2{ +U-#v6EKKQ51KzbRfۑYai>\Qtq)P>&O2Q=Vs}90za 2|L2 h聬`<poV9Syny{k6ؐ\͍͏phMmQ9nеaTpjk^0FSVY\⾹uLҊvZ]un*_^y根WeHJ[_SAc|W}*0NƆnP#BfT{|}I]n"[aK˰nS|iR .B8$D7Y80;IcHkۖէlgфmcZrqNeHDIǘ3腽^A{ipe<1|mչ&zH lEBSjWüOɢ,]ۘ +/m;XZ^uXP~@IϢKШh2 桫c\A$ΏKD-0O7ȷ.]UK*|_]l3 T%3 +e{mpPl@aV(C3Tyy .?kv|sOTQON4FQ&%Θ:OfGg!5BHޑp+eƛhKv#"JfWO̊YLRGc|/q +l'c#AzVhHjH_=;76G_viKE\YVC*#L`JFip+-S1fKQQ3++Xj)\lu93SԫLD!ᛈ5l^l=82pm]D Ikjb,]>ԾأB?CXFc|BE( 4ǩXM;>N.Wq '! BӘa %ƙFf¹:ADl%1Vř298RbL)Z1\Ks*6%}?rޱ9OxK4v8:tNsTdD|A?fQKh"LoQ+MƐCLEem&hp݄jN,b إ-TpR`hEexdx80]dqqWJga[Y7ˏLV)M_иDtM^I3M*иz̆Coz[;ރwjwJ}hb 1bY^^0Tp&^K7?`-0|XcuoU5B{pT=ogLWd<`l2o .'%:rW}p+ƉMA-OO/ m"<3QlQvk+7B}F*e2]:'Jg_R$a +RٝV7g"aԞthe:i*/EA( Lk=9  ;= hL g>}rK*^*ÇiY%p! +ŭҹ|v3vФ)ZfW,ٚP|s;ΐ&t⴦W1)n5@ԒΫy]@/|g2UcW: #P4G Yk $ɿmu6Bhdr=;}LwjrI__ ]L$l"Ͽa4+ |4 + ,` {B"ĎcʱL{,Ǖi zv$ #CυBe,zi޽q,c[qe*h:u`>u?u)|8\WPq8bg=o Wy]VY#i?8ͦ#i+`Q=üv.G\0*FN*%1}ް)3$2J9a+miY):{5^I8_s-0t_5Wb(]qx9F[%艹[a}(4ۤ_1n-lwcТ6O=MtOb:HV tZ5Ӂ(/EZU9#f%'a {*n|#ڧӗt14*H lf1g=Ȕ +vR#1)PkI>RrDE00-xbS51ϭ3o9$ՏyHb;+ho4YB$ I'Ia4zRNiGȱKm "݆HK=ilR2uazT>ĞdQƳX+‡0qUBaSfK8ŅfK/h6y}m3!o``.~PJ-Z-&L펖b]5³܈={">vL5/IJ?JW\X,)ʠ[mᓮ-@Xc@~11F1oZ)ie웇tߦ%i˨~/7Mޟ`H\~^>: +*@*1<ӏ75ϩ +/%p!O\ՉH<$I]ȜYq C>W()q^rPfМZ(? 8+2bE'džwj >psfkb)wDF"qUN%$vJ}n:HV8\P @%IQ"v mw&]GEmjk>ގ1bK$M9^XI^, = ͥ𧪜1Dt8eA%iʐ]tRq$08e&yHC(|"ӎ*[}{V lOڪ]4>#Hv v@g* mډ&Tt2RzJڄup>c{C#Oq~`{\ c2ȳy5j96*M:9 Td9AGS_fbz+^&3I" # K/I#N Vۚ]^""Xz šc]QУ'>stream +8;Z\t5n8Mi&4O(nLl+fqNmpp&Af@C, +.W^b.8Wo7.*BrEq52d/=i=eE6'0b@g52d/=i=eE6'0b@g52d/=rKU0aE?>1Sa\G5~> +endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 5 0 obj <> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 10 0 obj <> endobj 9 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 15.0 +%%AI8_CreatorVersion: 15.0.2 +%%For: (Marcel) () +%%Title: (titlepage.ai) +%%CreationDate: 1/26/2012 3:42 PM +%%Canvassize: 16383 +%%BoundingBox: 11 -830 584 -12 +%%HiResBoundingBox: 11.9077 -829.7012 583.3721 -12.1885 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 11.0 +%AI12_BuildNumber: 399 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%CMYKProcessColor: 1 0.57 0 0.38 (UB Blau) +%%+ 1 1 1 1 ([Passermarken]) +%AI3_Cropmarks: 0 -841.8896 595.2803 0 +%AI3_TemplateBox: 298.5 -421.5 298.5 -421.5 +%AI3_TileBox: 12.04 -827.6855 583.2402 -14.2051 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 1 +%AI9_ColorModel: 2 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: -390 81 1 1158 862 18 0 0 1353 119 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:-8 -817 +%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 18 0 obj <>stream +%%BoundingBox: 11 -830 584 -12 +%%HiResBoundingBox: 11.9077 -829.7012 583.3721 -12.1885 +%AI7_Thumbnail: 92 128 8 +%%BeginData: 26335 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C452F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F062F062F062F062F062F062F065353A9FD07 +%FF060D0607060D0607060D0607060D0607060D0607060D0607060D060706 +%0D0607060D0607060D0607060D0607060D0607060D0607060D0607060D06 +%07060D0607060D0607060D0607060D0607060D0607060D06280653A8FD05 +%FF0D062F060D062F060D062F060D062F060D062F060D062F060D062F060D +%062F060D062F060D062F060D062F060D062F060D062F060D062F060D062F +%060D062F060D062F060D062F060D062F060D062F062F062F060D062F7EFD +%04FF0606060D0606060D0606060D0606060D0606060D0606060D0606060D +%0606060D0606060D0606060D0606060D0606060D0606060D0606060D0606 +%060D0606060D0606060D0606060D06060607062F2853282F060706060628 +%7DFFFFFF2F062F062F062F062F062F062F062F062F062F062F062F062F06 +%2F062F062F062F062F062F062F062F062F062F062F062F062F062F062F06 +%2F062F062F062F062F062F062F062F062F062F537E537E7E7E535A2F2F06 +%2F062F7EFFFF0607060D0607060D0607060D0607060D0607060D0607060D +%0607060D0607060D0607060D0607060D0607060D0607060D0607060D0607 +%060D0607060D0607060D0607060D0607060D0607535953532F5A2F532F7E +%2806060D062FA8FF2F060D062F060D062F060D062F060D062F060D062F06 +%0D062F060D062F060D062F060D062F060D062F060D062F060D062F060D06 +%2F060D062F060D062F060D062F060D062F060D062F062F537E53537E5353 +%7E2F532F2F062F067EFF060D0606060D0606060D0606060D0606060D0606 +%060D0606060D0606060D0606060D0606060D0606060D0606060D0606060D +%0606060D0606060D0606060D0606060D0606060D06060607597E28292F7E +%2F7E7D7E2F530606060728FF2F062F062F062F062F062F062F062F062F06 +%2F062F062F062F062F062F062F062F062F062F062F062F062F062F062F06 +%2F062F062F062F062F062F062F062F062F062F062F062F062F597E53FF7E +%A8A87EFFFF2FA8537E062F062FA8060D0607060D0607060D0607060D0607 +%060D0607060D0607060D0607060D0607060D0607060D292F0629062F0629 +%0606062F0607062F062F532F060606292F07062F0606060D0607067E2F53 +%7EFFA8A9A87E2F7E537E532F060D067E0D062F060D062F060D062F060D06 +%2F060D062F060D062F060D062F060D062F060D062F060D067E2F7E595953 +%53595A535A2F7E597E7D532FA92F59537E537E535A535A537E062F062F53 +%7E065AFFA87EFF7E29535A537E532F062F7E0606060D0606060D0606060D +%0606060D0606060D0606060D0606060D0606060D0606060D06062F7E537E +%537E7DA87D59597E537E7E7E28537E597E7E537E5384A87E53A853060607 +%2F535353A8FF7EA8A8FF532F535353590606067E2F062F062F062F062F06 +%2F062F062F062F062F062F062F062F062F062F062F062F062F062F062F2F +%2F062F292F282F062F062F2F2F282F292F062F292F062F2F2F282F7E5A06 +%2F0659535A59FFA8FD04FFA9537E597E532F062F7E0607060D0607060D06 +%07060D0607060D0607060D0607060D0607060D0607060D0607060D060706 +%2F0606060D0606060D0606060D0606060D0606060D0606062F0606062F06 +%07062F2F592FA8A9FFA8FFA884A8A82F5353530607067E2F060D062F060D +%062F060D062F060D062F060D062F060D062F060D062F060D062F060D062F +%060D062F060D062F060D062F060D062F060D062F060D062F060D062F060D +%062F060D062F2F2F84FFA8FFFF7E59FF535A537E2F2F06297D060D060606 +%0D0606060D0606060D0606060D0606060D0606060D0606060D0606060D06 +%06060D0606060D0606060D0606060D0606060D0606060D0606060D060606 +%0D0606060D06060607067EFFFFA8FF7D7E7E7E53535306060D067E2F062F +%062F062F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F067EA8A9A87E7EA97E2F062F062F062F7E06 +%0D0607060D0607060D0607060D0607060D0607060D0607060D0607060D06 +%07060D0607060D0607060D0607060D0607060D0607060D0607060D060706 +%0D0607060D0607060D0607060D060706292F7E7D7E532F060D0607060D06 +%7E0D062F060D062F060D062F060D062F060D062F060D062F060D062F060D +%062F060D062F060D062F060D062F060D062F060D062F060D062F060D062F +%060D062F060D062F060D062F060D062F060D062F5353282F060D062F060D +%062F7E0606060D0606060D0606060D0606060D0606060D0606060D060606 +%0D0606060D0606060D0606060D0606060D0606060D0606060D0606060D06 +%06060D0606060D0606060D0606060D0606060D060606280606060D060606 +%0D0606067E2F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F062F062F062F062F062F062F062F062F062F062F062F062F +%062F062F062F7E0607062F0607062F0607062F0607062F0607062F060706 +%2F0607062F0607062F0607062F0607062F0607062F0607062F0607062F06 +%07062F0607062F0607062F0607062F0607062F0607062F0607062F060706 +%2F0607062F0607067EA984A884A984A884A984A884A984A884A984A884A9 +%84A884A984A884A984A884A984A884A984A884A984A884A984A884A984A8 +%84A984A884A984A884A984A884A984A884A984A884A984A884A984A884A9 +%84A884A984A884A984A8A8A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%AFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984 +%FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984 +%FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFAFA8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A984FFAFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8FFAFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFAFA8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8FFAF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%AFA8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFAFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8 +%AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8A9A8AFA8 +%A9A8AFA8A984FFAFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AFA8AF +%A8AFA8AFA8AFA8A9A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8A9A8 +%A9A8A9A8A9A8A9A8A9A8FF +%%EndData + +endstream endobj 19 0 obj <>stream +Hn۸  ,LJ~Zvd14۠hȒ!y}-IY؎*e&9rofvϟ5/ $_Z8;^糆<2٠8i7,L9MR$$!Lg@kRAwfu;{W|sRsi*֙_RǶ ueS8w̭O&c׭6%,7I0N93ɦ36I dq䏃Lˇv4~|A0ʕcu/Lv-m}؎PkM~nLK5 #AMI+,iL5-j!Ln +}dLJ7?So7O +l8?E=0[mw s#Z̆:iQ?XnSDsohIS!҅V5t2(>*>n -Ǫezѵ \WPpkh+V@v*xm%)աRQ|tᣡȺZpWv*\,ѱaHQ|t]Xn rh|7( !iIYbHm  m˪ HdWGەb"6V|T|ce|DkYf@trz Q4+`з@[{p?EI0b bǓ: +gAvtpxxʂ%@!ڮNhw5d'EY>Obw:t iZ :bDNiHxŲ61)Yss8P9o}Ip: +ɗugirT.dpLd`vjǓ v&r4rFMkba|'s$mB ) "DѮ} B>OdţOܸfQC7[/%r{nFS4D=y+zȹVgEιbe}Ɉ]Dwى;أ0YB8gw팣E^[BKP̴GG>usl]; >wwIFv&Ϗ&(ZNBo75v[S{ت_܆E$uonvɷ! {/D}31=!z{MHGO'FCRIʷv#; ~鮔QI0Z2 $,p͜}J sZ/' + !$Exˁ_$3ň,3^'#5G[y\+¤@_{ՈELn03߾M:`q\Fl>kL&H7Z: +h*yg+RxlN8c=Mz'J6d- +o(-/? +NzR/{#i^y67NI^? 51cdLI=r]4lK_u{Kwp@ mi˭SђKۛ8nQ?4֑{:[I&b?⨓P dMYw[Yhw i4ɐU74. O~I' %^+q(g\kqVH:ao2o%J<<ɸi #Ŵ1]?e y=v/\hcg΅.^Y²#T B +s),f+uE>'ܚ-39=Lֱ$ٲqtq`Sw;3w g?\O]imbgn$Gt4u@ $ښ0S*$V, 0[[s%ݶ3} +6"%Q'q-( 98py}ڻXr!St]A%qo&4/OG m +TN:`Ӽ7iesֳ5*nUzIFYU#:xV$*g$\][Wc9/^Fc֠>+&Y6"]pj.xHO5>- FP]=uWdzU zW?0z%Ok)}5[oMl}ղ\VWLu2o.7Nv}"4X^c{懺K zZe;m:F\hi<,.h(՜r=5Q>^͵LD1/?˷r[y!UTY tDzDΥM5D [@n4rfD:]LHt9c gow^, Я1_eIgyvs[qjVN7A}&y*& t1G'WG=n؍{|۷=˵oнݨSBOgޏk,,ob;~=gX?k&@k\x);>(N +,b9h]%jSkYUVrm̂[ ,Ktܲ7$ݡ+ +g,]GW$eQ&7O$T +tR{L$@aAu 8N c"x/iҪmn9)`M] V~G5EH^ӈ +] a_x-A,)sd|HH>1fV8=5-Uð^0Ѥ#V$„Z:G@WsP 5Ḵꇯ"I(qJP4/0n+uͰ"k, ]S黰,|5/Սr$M +|h^-m/pLnhJr_ ^Fn﹧z90CdE4Rt:gT3- e6Us̪ +/nCBU䃑9 /KJ dlfLU-\f6'7˚-8rkqXlw.d&`gUvrpj86zqUg(Xo=d9cJ,@8]g'Ap3[7nĩncs+t:֠2tB =Z8]S6fA-лB}t%luzN+Hx<(kmJNzbڍK[r74-y ݃Ad1R;OPQUm6$h(vC%4ް!v2JY _cY!!r$"P:т%GJPj-Ӊc~6@WGM#5vWrJG"Z?{ +aqHRK^0\ҁI-R|Ā5o}bi6v``1ʫ}UsB8Ye:J'td?چ0F}<'2f ruFBHH|h <:k!m@[hJ1Sk[+"])]:T34 dɰפuǴCY .2Çe~8_B-De\&˄#%XѿB'@ R]# sۀ0] ^~ 05]4GBgl2&GʟM[§4nwت\8✪j^Mf' k#йF,.uT@Fҙ\63T 9g e7gk Rε7~2aZߝkK}<TmGHox.7n!gO+7|4MF_zGOV/mW8GK(B5i!)C'XY8i#xkS8PG+l/zQKeũ QGE8v:= 3jm6g.qrN"$jhMgTDłf0P+~G (B@+#rDyI9abb ~xO7 jj|NUK _FOL-Dzf;l CؾP,ۥCFS4TB 2 +%mE*@ >[e +y' @iC}My>@aub4UI:"@L/5T.9F]'7Glc4$񗚪 cCY/dUܨjEs +8맚nJIe0ǻ {#7͘}/sqT,ŗJKLR+sn}i  ǀ9Qhm)$Lku<|KZfkO[3ݨo x6+ +;7s3u5p:r[(K}tZOWM'TkbV>5bB8goKΘÚ1qX;C3a4l D9 [lOyOBAgd45l\PN(:l]@ԆkwGңA3ִ#$j꜁UWB_1?' euo8C ֣5Fvaº?6PK^Xc jc6{uHV( gW=`2F^/cYB;N<Xea GJȈSL&6h7G=PLjA1cHd5hA9#( nhM ^N :*]ל`1 +r%8d~p]UO8 ͛x3 o5 RsM^I@3$ljkI1 jj'IC行Ti4NYLbwf{wtĚG{8]5Χ㢤n5[>#s s'w.V+ٳb~jB^\즳Td_X)کrL7E& f֖I5-Z~ժȧM$OZO0gžyZ*7=q6==VH^6GQ_{lCllV]'n83HT Wf}*ݣ(#2uۇAs{\nB~ڨ5vMSI.o;E)~܈TJ8#0+ *Od~z*IstDB#ӾJm\~G)(3Ì]xv:;ޢ'''gmEK%/^kCBgj3tCQ3tgMmN=:{C_rh+ՙarXy绢63x{^PE=/xvG'g ;᪥7-sp d+ƍ n])\>cSr9EiXmi;y"SlSOʹ7^zGF *Ufvˮ'GfNjV>W6H +5݃i\3%Ko3:t+9k_XV_0`_QJ[?'וdllLt&crn 69W#43wfs^XJj;M.?P韕)(x鵒ߕX` =)!%4\LHl6Jz*(.Fh>V}pan'{$$ly@,)ז@ >śR:90QēgPppz[G$kė8Us&>sML t UGgf6o}WTe s`ҟJ)`,){c6?:t͈waUHywv ,Oh& +HI^ns?Z +HOBYG{fs?R&j M `bwSnt]iYup: uQ>0G.t:Y*JrmT 0(`{R_1Tj(woɚڈӐm2N?1/jHpl5N#yws&ӱL2|J}if.6ڨ I([ P$.-o>\qӛ'hO3]U"9)wrݷ K}-kB"pu^m&@.r+`͐PBXRtɩ4neeX/UYpe"KGv싔.b[.~KinseT&qNulzcF1dKKU'PK:Y*_`.|*ԡ<z~ؔgC7!&Yl|ȳb p0 -4fG֫HNPnBp.i\[ߛ +endstream endobj 20 0 obj <>stream +HVٖ}'@P'TBq,g@E/;AK~";"rDA*`3=R1fۑ?s[ɪ2%b{ +QRӞafᶦD84|buex\`Ef5Xm$ ;{:ρriTBF=WUV7 +5)/$ĚʈFc33cN Sp* zY4Pik%4r +|Ǔ ltJUdX{ Si΅ GcњNϡQcrրX2ü +p&oO4pi~9bW";;VryŒyΞAFWKrD + ,6 @m+1#5DnOrTL/H5m=i(#Y=DŽXe8*vCaK+^֣PF`ubv ,bqkyv4z~JS$XړM/y) `m |'ѸE\Yi#QpG^ c;?RZ7AaE{R{ +`_HŞR9&'Ƽ@\ i_j,aQ:xkaZjpKj1r]⟩+;?sAC7]2KT\7.kU@<f&85_=C]RZ1')Wuoޅ2d>%ok` X2 +SDFuCe3GE0|Er44鷒Li>\Ei"Cӟ؞AOώXzqk9Oz +6I˫jen4zi T. E.ʇW=láf{D-\Bֆkbsh=DCR1N:؀k㰏A򷔗*=TQיH@/kN8koE-b~XE䝊EmRX=\~~vq3ʼnׯ9+w#sOOwjϬ3a~9?m^l4:i 6h-˚Ǿ?hlom V;<+zd8?`jb@h?5x}?ͦ#~ .ĝT/S>P a& 433HnDM_(07aM1Z-;rQj6zTqi8vK\5NR6s|MhsaﱔgMST>/niʲos`Uw٘kKU*}㛾6go>kALzR[_ugVRɵfaǟԒUw!u>ϟ~g92RɮrHu HuS:CEO^DV%W;q9a<E*u߬Wg{L-=XXˍFcw~I\3sf \bĘ<7ףGp< `Q'lL`5UxԤu9F!OxTT'W9/QC7J'!ck8wbD@;E@OgBo4-Isi*.a~*EA7Уsסuo PCY0px;=j%>#ѢâN26 y8»Ejƣrc[áziFPbm`Qߨ_phw#vfWϑPQY} +`$쾌 $gpa)PIsc@0"UZ#у1kG7 5=8BEfpxZm,j QNšFMji.,+KDZB0zHQkAgLQ + +ND y¾eyl_Ⱡ iٿ#|tv6j,jlOc?41yʨP/4 bx;O& +YWl@]ΧY='}%yVOR'JOmu[?9*qMZoQp/Hn7F>)4 3$ OCxy->6 +J[tji]ybI<3!; iR ףm4H^g;< !1kw s͜ iXR^lH5?9+>B]ߊ6_7)2༝T/;؃sZd- +i*1`}?hT_U8gN{Q*D@4ģ"*)k8iE?$-j0X#Ѡ~д]EE40 wW[K+XGr'݀ +VFLTT1,Ȩp7 &m3CDET@ .%Ý|l79ow: L +/7 u# =_g-$TP( y2×=S  +`w\Bw%ّ <yBU2/ ,[;xEeީɰeHK bJ">dC{!$zxaCi8'\3z (K"_&qH +eʹ+7i)c#>+#|U}B^DBf¨|r㐖TOߤ&dEOzq;<}}(l2 >us f^[t UZ&Xҵ5_fSJS uKX6w J=j}榁uyB|n`Jaɍ{.MEMz*D=eG<8/Z-@sNMj|=CiyLntBҴQU&4Pyi)6i 9 XB$.O:,ˇpk:BSԩ,L`m +.wY*!UW}bN +{ez&w =-106nn01[*9΂a<-ݦo0&7嶾siIOvaRQUc=^mY5J4b{6}_nifƗ)C}q^`"h(a@f6`P(eYDf)鄵7>9;U)(Rl#:N+ōL>Rܼ?q(]Qa9WAY*ycΗb'Eu|)Ŏ:}W7b^8o.8HM!j[h嶢U5uI\p.hoq=sӨkјYߩ ~ U83dK06Y*=[< mm[a?9o"1FgQEatXKhΩNں1lA2؈0iC19 Y4|JЗECZhZc0%n-sӽvC2,Uc#$&bƃ ҷHA _r|*6?Ҙ 2t[}I;hO4~߬d ,-;nu@m`L2y8"vG*P<&y%eQ{ "Ee>s\(ݢl-Bs P۲xmU F9|.0 +0evUڕ8F P_aʦ*200.$ݒ)K~sA1?uASjh_\"$>6"H܈q$7_ ~݌W:|nE9v5AmQ^>{|u07➁X) va{?UhJdA=m (_\1X48 c!f?}ʫA,6w?z5E|yMXD|Ǽ]c^_bDZk+4zMR^"pE6/\9F^#7ge'nFZ{y#Fۻw0}]6ϖ5-?<͍',w![IxnKU)dZnNVm^V{&K[n/awf+i9,IPsMӕN0lY=E (&J1@FI}QUwT3Т?(*fP\*N}#f.oCg$TfZŸ/<&{{n+;4qxlÐ2Ӏ[^pwf:f-ǹXR< AXO"s++̏i"7hr89ZLnJXy1hx +;3I`z}Uu]) k31W+:ϔi}i>?=eaoweAЂgi)* شK&y =;6ʊjws*MOjTݜEEs,?^Lb:hqh#.&|UH^gI$-QiU/T,xz$U߰QnLbM^kvX/S}R=t߃NRmt2{S+Lw\CN2ڢL ƚ(Z9lYH nZθi8';mvSˆ {W09:((6"|8oK܃QsiK߃</W(̞'`-8\Ҥ oÆǺj@qExw11HπH=CFNaVLZak7.zq&Q},N-e 307-G\j5sdg JF |xlܤ$怾D70,M|b"Q-ڗ> +Ea [k +2T- 9g1ie1ip˷Is'N 0 nDMUQWnK#W@\"+9K YϬ#goPV?;WH@aOp7$(q&=NKj_x08u|TOb!YKҥuOHF{ҥA6&17P9v;ARwMi(|t +XK9TrN3ľ *cJaTJ8HTxMFQ+yJ׆,́WJr)Q@SSƸ$LB¤u-Nr9 5r, :$YsNqr5"X k# +Ahڍͮڢ)}{ + kppPDL&q~4qbrb6,iO?%R.q,^; aaJSA&̸\2jz*. ^ݘˬxMm]kHãV ԯM#:p;Y\J&Hʇ iȐ%y3JdYg7\-e㮊@eh<|Ao(<љ'GNq)GT5vS2ǭPtP0O\d `kPA"{߈?FWe-tZn.?[PfgpSy8dSx-Flmkh U'OkX](܅VPVPo$ 0l!3yA\k*;N8}w 2k譾U[S~?-Ux$wF(4m0VR[k2ǫ912 \τi&IS)AoFٓT;x;}/Zdx4Tq= vK%1P!)F7z2(u%u O4;)F"p wIk<[ )UMJݴeI{+|=^2ɳveF =҈VMS17u2~ k]xH.IdFr7|c/F?}lT{Suys߸~͹^S~zMdOg?#i}JI7E5۱{/{DghcG{tzV:MymJg/^3{Gұu<{6_TB֧ZAb{^]ila*@ ,(+pTIfBx<ógw,:x5Oi8^כB|ck oWg Bz݅v'֑v@+z ζCI nz foS^6NC]^'Sp3E۝҂ѵG^P;47̧aKd.ڱiCQ]Um7v. >mΦKnNx!j'*5rdL>%w+xEݘ"1טhK*ˍFYbA=}161aU ܣ2$`y wby<ǙsU\cٿ"7|=_K 9C>li G0{|Ur> Z~O nresh;?N +J#=$Ø̍( V^E +OdZƔzf&"* .0 )OZ@ItOX!ʫ~"c#a=C))l@𱧰iܺm1[ wc+w*fxH(9KtJK11ueS={ +<&o٤7ivC7#=]^Ƞ <1tܞM;ș0ɭe]J461z^#~)})4(t#cMy9ZЂI\5͵%_C5ppzʫT2Z^@BS)l!P9GK`~![@`g8BEdֹxu2mˬDei5̻Oy؇4 +XMDūc&D&6ؔ0h }RCﮛ 1iT4Ÿc)1<T^jmX'@Ak#l+J:cXV6?P4Aړgȓ+ #F1tsQ{v1θ}`m컫q<>FTyH۠Hh  iy4T`~<:6Xa ԾvѷE|#AC#BGwE-k'5)[{,~0jOO]D#%.dࠚb8\a#`͛2JlGPE mcemqYq0[1:J^iEiH©α"^tp TiO L1 v0QDHO;ڰ#X$v(oaM/GFsM_Vgb65H+MyY˩4|lSMg!2"D'=Ke-;cߺÕ(,-c/Ҩ/H{ᑞlqHO4%< 0yJF[M!7y2V֛-=d-?ܷ(&X#XF4iMp+2utts.I¹mrS9ߡ z:/+Ɵjpָn}q1ίԗvYkӌV +TCT5"@ (&csq]^_{4^잽7àCZ +f5`º +OPŧN:'ן<3rcm׳`}x ^a62+L7m{B$Gzy^a6=B$ȝ4bFG8_֧m[@]2-Q[d2Yr,u:hCK\>U%{.kTsJWs $3|E/UKcB -r̈́E; t#( `Sk+ 1T s0*QZ+{ADy)ͳ̇!C$/1eHsr(Oo YXqmˎ(".cXa0{~W1Z{00"kHvlWNOe豓h A@l)+GEL5׬ $3NJ4NɄ)_USsEhR XJ'6.0iS5К.1)ǚH ٠ɸjcC˦/W:l5[t\Y6b(O$4@ ͛[=6|%%'s+K=X')8m o/^ʩ#*S]"0)9&9Xu`؊΃c*]|MpFâY\mJq.zT~ԛh3kql>xeqȨqs1NDFm[S.#(yU/WQR +:Ms8lx,MUh v>#LT I~YJMO!~&z,kZɽu3/#NZаh6CgȒ%QdzC;ڿD!fx3#+E=cᘥg=g𨶑A񗖩,ۿW>G#xe#kQ^qqL ҐGk +7 v,O;CP~Z‰ǒ phIhΜM,?(m6+o, CŁ4grXwBŸx&y>bt.xLe}u^% %\\R &kSKЖCrsYaf[6w7{vb?`Va./~zz&g]ezmjSI'Z'*L4{*{o[$]Qp3!txntx㮆LyPR/[젅( qܜro;qi'2], uzr~t7¦ Y3C{ȕljZRL0)SdoZ?gIʕ{=]-Q6hw&:;izgULW8cըH/OkɟvNga!_l}WNO{4+/qumQ^-j\c8KQr|C04ӱV+;2,wzt_e% +endstream endobj 21 0 obj <>stream +HWVJ @2 2@Q@dzS娟WwWz׮N*ƆX s1A&"77X#6[~edGQXMSB-A1 Lଆr1ն8_<'ǩz<<SUd07)|1/lf=2!n cANH>B"f-\awCޚ.UCN^.#N 5>`f,b"SOJ7 _,H@y/BC8=Xߩ;N=:7sra͐5[sB(ӂ^;uTi-4S+ī^Ό7|.̈^,!]wn}7ǝ"j^(\kUW5a_( e[jZD6<'CjY!>*ƎEr[)(eo#h"ffb,Qc+5D2iXLKp, | Æ<"`-:A{ +I#Z7X%BKQ͘{%iL7wjcz%A0D>-5?Si%1E̒%5HclK$@%8i-rе*GR[4e]@T{%Υ7-t=p +M~x+qcmFyİ1Vrg)B` ;X}J[Uxn`;q3'8nFx/Fg@ j$n2s'2(4X{ƴqAנ}U$L!<ko$^* DoޚGG?!2N<aHm:w1 |w +9$#}hQR$*ncF x}sW/1`7ys׊aq0<5rHblIpn.?0KpDpQg^ fZׯH`yv\@gbȝ-}= 8 $.n<;[Pu"~(J2pcaL<~"#9r+i7&,&̺ǃD.}yi'6:V/Hl]G!A~Җ/JcҺoTZ=o1ßU2N%[i+u]}g_~S%iF?A]6Iy;'mZ08{/Iq |?!G']/>ҺO>K"vMIؿ: 9y?,>7Y~W}<fqw;vz9;8oGVPý T@#^B "qY5"o埐KŤ=),XM.v{h$fyjQ+dY.UvuQo,up lx8{(pIa6+VfE}#4t +:(lKHW3iT?~HU<}K#g˘&2_jv. C&pu"Fv7boMcT-Tʞ6`fV,r`!Hi{ +n~۬fl|/KM) aҬ$O8g?-UK. +C) +) N}KNPZuNjQq̓Pnv䲥=G{\n,>HعN(1&r!_X/d(նGKR(7вE }l7b'o|fZQ +`ðsN7w47bٲVaj2耵`c 4 +1 !K{x&l]餕^=61v7d ZMdCCvOoxI6ka5,GT7?2ih>Gx>ӧC3y?BZ>>aq!8~G +?#$a#s{l8?ZQPMq\+ޣgo\(TrR0NJ&\cY\$8{bhʯ A^hO7C!!e2qpYRQz 0j8 qB'& Muy%8cI8x@ȋWREz=1=2_ \N zAxh5?"C.;riyP(R#_`$l>a*ANM0By}/2b7BJm /R;͈<>F® +gkFEA@VQ~ Ufd>~G+v< OD_&KӠCĿGL{.ӼH?4i^֭{L ?59_ Xoq>A%Ҍ|Z?E7dO o=; 8PLH!2DwPn~mo8iM淥3n}V_B*]bY:'q)]7Nn2 +2"qv+d"']RS-\2hwM#?Xx)$L|QechU,3a4YVcdِmU~X N+T +MBUS,Aq 㬔s6J1@+^{ťݍ1B`%\u])E=5qjqT/ ||e@O ;m=^A 6xr3]`dkQD }l7b'o|f;=H?Gx-tؠL7S]Ll0XFϖg:k :`- ]7:(4D.g={ &l]餕^=61Áи'qZ4pZMbW?!${zKY+P)Y' q֨4z2ƒՒ i.۷5w&c|fO>_iL97BJY1vt%M=_E%\c\oW_A K^J +Bݲ-]46e VB yKUй.z߄n^nc>mn^SY @` maz^E-BWҔ"pqXN,U2a)wO|p-O +{XGjKlXXS4éQA?F +d7%L;1_m eq[bt2iRty9ۢ=) dV |~B,V2t]#x/Z fmESA"!U*$K6Ma#v9 h!93؞/v_翻YKD%ۜf?~US/USn_w/޽kAD7|u{$0O?ܰRzţ>f[Y/_uwƾ~vͥE E\~p +`{__^jo09XpE~\oa?l۳9z>elo.Ѩ{O)E,0|sW{osV29CNXv`q R>*wzuNO,r;?Z?M$7"ܹ}~jϧvV?w^ܽy{ܽ9T~NR_ +uNeV1 ,8jqX1ԆÉII2m+ZR0Dܲ׿}Gi%A0ݾQcg19e0T [gB&2jP݂9/drS7)zqV,4Pծr[01nFZՉFH0 kwHҪlGS4;عN6) +`<$s + >\)thg*nT:q (cjb+8 BĪz4?PMza-z%u:jMޙ1C8K>usIJ0  #: S7#s"gx̙ i)-rRzv\&Mtُ\> .KD~;\FW3; gE.Vk~y5e s1!Yґ"^KwxD0'K$bÒDyCO9"sT\6r?exzK57T`:/n9fSB5vFk2+/oG1b)

馣+fKjp%&.v)vFhbOFb3R)$ywEIdp F_Tl\|V]Hh3ZҾJ. +ߥ=dm^[-"rp:Eշ:@*Yj֙D֋'j൲V4ġ^ m%JT2 &,:rO1?%:$̔VqYZG-B" +4H@GDJU$ q/M>cjlM`VLs%+f"|ӎ˸ohL?wP̶[=4;Qfv# oIM95R>W +l*J ( kX7"jQc6h҉4JnX!si_  KY[29KOSk= +;m:;(Уb~ ~aL"\&`ޗ5:ep?|T\l5z63?OLLzJʣ2^Ed.sW6FwRjPo(M[}d.C@ + 2ֳKlHt*|H?[$/8H;oQiUʓp,S8=X ̇NT>([Wޑ589!鳼0*:vN' W*Xe4u!?sNndAD;)J"0wf 68,HL =(|SzizS:"]Q5 [+@͢@Ig#߁Wx*,ScD!ޭ=)5FuHazl1? +๬Գ8v;XX+ABHL@FFQՠXhg j`([h._ &)h_C#853kD0X#bnHd $)L|L@vy]Hָ +$@{ml/U8F )Sy4EbumB?nD1^;szQeRdTH)ޤg/'urqvOLk72 PuKŵ_r&} $CEccЁ3ۖ{ZE%)H;Si:xL $}_, 5?rOC%i˺/ɑ5=G Uv]AC<~2,Sw0bN7WSMYX2ӛ+Q=*}|m 5Ͷx:zxR% dkO0~5V8:5˱ .$a w8Q>׻tmBerRn Ǯ1&mYViMj {.9,"@u ] {7U`ش $d󤢂aI@o\4J]S%b{DZ|\tO9!-J<NRpW"^>w5;yL뮯Wfk9FnW?:ܵ>u/aI c<?&džal&> +K]${Q}~mZXKWyMXȅt 2ڑq`] .^@'=~VH@;cFR2x +/r~hUT``aO}NWx4q]Úԃ2}oJÒw۽D91Rb3!S8"&xձ3*WY->55ݙ6Ai + vNs.H$"p?$}2@h{"ʲZ1}~+h)l]Gz +5.g:p7?Me t">$8a޲H7f wjAo~ҭK^I )PCCmJUsA9la U0߇0qbԌ'.}bIdU MvIyq\Z[K9#o_͆ S&j]\$B{\,CAp=}#wTp8Zi\Rx9q=^dPgQgMIS +3@fȶ6Z2I$FU&40uu_gBLCrr?0pYݠH';MFT<'$wz1th'jī(?ͺԈ9j2H[z1r%KhQ&:EbJ7_|̧0d<+]>ZF wcJV r!s>6m՟|ugI 9 L3nLpj1@,9 TKT2&* 9o9X5xQ#EK5aaΪȰ|"ſQva% lȿ<nTW\Ujr75 ;RZ BA %ݍ\oO_4hk>BZ%AMSWΟ/N0\{Lx| '7ߍ翌1D +T i־H|07U?ˊI*|pYiq-݄ &%B/2e'z4>z3Tq%W᎞.=xERJROiL+jNAh d ,\œn{D`Z=#46,ĨNp\=M7tv6ўO oƌ⤪N>Bwjt/bCe B3tK` CL˙$Y0mHAI.50AR$pdVҙA?1ዥN(l bzj?Ƹ DvC{<ݮ p1HǮgLxBQV=Hl;֋yߍUybdƇ2oRD}²B{n99F +sdGVxUzO]%LQtahK_e?$8e󇛽D*eIUT]m +\ o6VEk%ޓU#t#፻EH4SJӁ?Z0o!XYE44%gM'ul9hI%sH~ZιtW)&#'z*Uާd9dd6F7SijyMmpW'zI}~RMPK21oj|ϗ%>?_T 7r:^pLj'wAAn bw84ۛ1Mg5FkYz/lsQW%M 39jב Wwb0*}>X{þA@c?)1z4CL ÓD}K[dDcq" u^=nV}ƥ_'u7 G/yÿx}E/ʶL)Kzi+Q5E2Ur q_QЋ1iQKq"2rc2۫< v~R::ȡ4 a9K''ɀYaBwmyYIsqݷPIhamf'#tApђ8}q_$էrY?D׫sXF1ޞvsy υR|Ս?^%OHyFD-[9 +}-L~OgLJ +^omdbZ57Zi4KFK<d9qd皑<ܪebd:8O޲+TЍ'%pӁ2x>/9HK, m:m̼pO0go|0m|!lꀲ/+Dq|1-:?k ==ӄT48ЋM܁cMEf9< = ֜[I=L҄&#D-:as*bs2֩4p*/Pϼ^ +6[3o"2m ~ڸg8:YIX;!>oX-hgQNfkȻT}eᑑ 99@8rv$6}0<ꑌi-g7V R JO݇?&5m]g9&K);sX|>ƻ$ ɬ .TïG/9D,[Jt=lwyG@(|A⍲eZWl ON]v&*aur<|asYm( kvE{l=RgV҂p:QVU^ r`ğ7r٩~$һIGZ AKNfk՚uɹ[W3u6U<h5C$\eo#p3וUwlX1nJp'28kVxlaYD +fJ}~hrt8I^BiϰBĕ\N5S]=ê^cw3oAYm}I.̽i8VKsd1KUQNo6\e>׏szRR'sh*a>ɸh>= +/i_8GL+ty$G"ޘhwqD*a/>@<ƕ +̻ZRȜ1ʂӘu (>ݫmpsDZ:f$; qP8)[ +ՙ-ޛv?pm#m(7sYF_KqhV.6~sj(&hj5G'b_%cIkAudZtu5bQk3MhA12׀{;p P+R}NJZ[+ТjrPk/ÁlYƁB"Uk)9WȢ/\ kYВz|qEh6iv0PQ$_AN:0@Y%'=ЬE'#w؊mW:RܕHe,֑MvzF"j +-!p2D;5IGyX +[܀Ύ)'}Ț3v6M,2#;2qn;ޛX|ˠر|c@By6Z#h(R5b}Ἰqk;~^pQXwZ7 i`6-~ N{4ݰK*F{(Vu]iV='ܝFQ u@aٙƷk`TUG2˜vhԡEۼhAC5DxtPErW\s b + 'AA^k^Y@'\:ZDWlߝƋPB Z"G[2en-C[ى:c)`:=lDk rg" + +3l[('PꇐBs5W<1?0G:CO8Hqv)(.I7J1j漑bER59 wFS%ӥ=@H?Q48D>flM}]Ǝd's ;1$U@9Rf'XR@D]G<X3W\,0PJّvR;=91NI0ގ YTˉiI,ŨU9z4!њK`VJڴ<@!e:- S-E:[VU;ig; 3i94؇z;_[x^ )/i7c|*SpwڮC+:~\5*rɳ{~(yM 5֍(Z.ŋ@vol_T|kp)J{l~ŘI; +~`&W|[6Ҳ5W@cݫN,C))ﯕzFͯ7cem&lh5`v {7 NnAe;r;-)}Sy?._o2Av@A9̹9h/bsY!8hqi5K4ܧ7JNylD +ݩ;@φ2Bs8^G;D}Q3=_>7ة~m-Y"I`f)*2iwQ{ $Pijnzreņ|N_ɖ1Ғl!nxK35pkںREկpM9JpDM& +M|r\yf)KS>GtҞDyl:8;$(S,K~_{䠤/6GA:7 6D.ݏ{]4G9r7|[SN6>ޢq!Q9)iGZi}NЯ!DYżҳ&/|v0'Dw9V/CI[FoN!BVp}FIr陇[kĨaBu ICUzv [^fWbJS4Ao9%mL"MӴ]7(2[JYM 吉N)lp{k}!P{`RP].RIJ6-s "rҷgR +II3ϙt4 US߫#ϱ3]鳽Y˛"U%K®zwu #R C[t, S?d]˖Rwoxʆx.;}&ܩ++s%{.kky8MceT?Pf" ɠU  ZXdشyf9E_ӑA>|lڈbڊK&)FET;hcR+tqSKW/ӏ@_DqhEi]Za%SNGV*A7zjgC潇7a,(ϮSu9E(42%4cG<)7kҺv6EMP͂MrϝTCis 1 >i05L:4f@aR)['?sDO%{Rpq2.? HH[zfu IZr$69f4HL5"+߷5@_:;Xvg,^:A)?whC y'ƈuS qy|Q83فn $Q\AhC_G.@g4iЏCO>khjӷ13OdlXE^kabf,הr!柑Zl{LPF!6h& WX|ڳg(U +[98P޵Eژ'ML3e0HVYD}FHT5a{\N6% *ץb@%DPA#,ߪxK_u + C lbtDd Qzc@;LCLݬ6[v}9cGû70k sj3љ=HLJ.+U"_]SwG %&HKv5;D!9W +L[t y;|RH_x&y4Gɽ  + p.x;v\v|, d̽ lwLQCD6f#$¼28-@0=sj: r%-/|4Zƚك>[5OعaCj uȅ$10wΆ}L4 ol07 ގ1?=i3yn" +Oޢd 8DJ.+TΌtt!}߲(D'gvĊSIaM ]Y o0|R 3S:1;(,@r6VR5l@leV3(%7=KɀL caq-',*xj9xTm&906SR}$i}LAnmck!A76OZ}6 pD +7%]z_6ypM@&r9$+`Dsj] Vuz"$⸖λ,$fs OȰ1홅5i, T9h ?U+Ѕ;XϘGЈ/|I-J׬O$[6CnV5 X6dlyubܵmQ LT>ćͶgˬ_ukd^:.2 GTR#MSNf$ܹǦ!2Z'B< k(vDIlyΔ_,!?ZU {yBٮ^Zې@7Jwը[h \e}aPjfl6n > cv5Ȍ2Sv[g>uV#v7xSKj[<иb2"<޸KTX6D"H _a7_=̡gZܾvvxZ)(L`/ f<0b^QBߟ?P:k!az3KJi-)+.ZtN;ZRQ]lZ|BiQBI*&",1]NOcz>`/eDMGf$QC9J:Qt7GޥhnA<6E̋˧}^NfTriA2d[P,HRS;W> #GesQݲlEXYh:r܃Gha:<1[-)&ӭr)Јjh]RPPd~n=r Go=~%nV $DZJefM씐zB:AâlwmZ |tU6_P/j.m⵪\{PxVRNBy[o617h+NQuʿ *1SaWN+};g46+#M ÷lj@GcaLVv4ԑIV.!3Iq>)1 kΤeOiИi.X6˙К?ˀ#~뉹#ÁliM )ղa범] zl{}/*Rk +Q^ι(/PV+*qwϾ?sfut颠ZKIk*x :xi"#] ;n]rLU>Dq6db!#w^TZTۚeJ#K>B` +ĒlTthkK ~Q;ecTULg-{wXUD rMZ!νc,9v_9#—n/U:HyچêEhgF±]ܫ[rZrIp T8C΀؂ts&X@J5"8#8-ȢvNk(j + jBEI> EQ{ ?(ܫn>Bn?C@)\(bGshR6Уʿ!y5U;nc/d򆛵@L OZq2Pb~pTs!5Gfc>S $mVH9(cVABFǿєb{gjjAS ijOB_UyXjkS։}'${/y-ML+fD߱GG;whF#i'ٛQxqK!3/.ў|mi4'GnV  Ų=9!#OAccxH̛EPТv {gX ;~׷ډŋt7CHeO2)Ukߘx4iSr@3 {JG/i]Ȑ +^Gu]Lh5hLj#gR,!ϵlGv|`@B|5>)!4 W<>stream +HlM4 g"|Uf̮)^ه?} +3$ڶN!&J;.$ǸBJ"@ۓ6Eld#!=uihف"g>BE\R4d#;C'Bp!|bTBc啤Sٗ6!)h₉_HUej"Wt|g4T}ɼ~!ō;>`~y yE~!x!sQ7{WlKgF`E{9/jNe-{vSl[- RU$ӃwIGBo6̾Xu``mhPug]W,ou6N: OB}rE<ȲNNSӺ Ylu8B`ul"-@Gͳ ܐ( J#h37:!vٮo; 5jTNyJ(d 3*b…" +Ǘ0h(y'!Q~g4$xt{kHi])}]CskOߥVYE`\Lcm$KNehWwW]+JzGZlL{370ʩ@y(DOթn*nOuaɲUXe +k!3g^wzSjm*t +&W6nn~PShU$kFtC=X.μkX煺 㩠NSE@Tw!eЦod7&9bf_kQ>>|?/y8~#diWӖ@vz|m:5%B_.}qHv]r N[V_'t&W^ֹ Z]-О"+/jRbI!?4~!E/3d*ԅJi@yzKj}))HCuUӫ'~=̆'ꇀNP?-=Ҟr/y@7}_=9\~tY^"!}׵ڐb_X!9MlWYV(]LڏQט1yT_l_ꑧFD%B7jߧz2xtނo;OxOBS8!)lU|s},%r)6}{z pr`}P.} I(!^kSquZڙcZ&Ub!HEzTH_[#.JZ7hN]SKWp?/ !jxkhWsG o_-yzT^(`߈|IMī({WJ+/a2U3:mpM别KQ\>N"t>Xq-5)ZP)POr=5oNCH+*U*PBAQ8~pd yc;s褡R+fx^tnxMɃ1fMw&% +0槚CVRUD/م,Ѝ}״vClЯv7O䑅y, +7X:؎us>(RNi%AGN޻N)95xךĹo`pO'@,خ Кn٬㊣l%ٶ}Gx_^Ϳ[)e +v@Hz_HjPXwl8 +=S㔱dFN}*\wR1Y1u EȘT#ݵս3Q]zOSQJQWVQSZN@9l߱P%  +eU죨`>D+n~ TڼWZw@-П7:dKG/.&?2v+*mQ)$jhܩ"hJHPth3}oaYv +A纇Ud[={L8:)yrɊGnҫKC)7%UsUiš,\IcrYq_.@lgb=G' -]s jn-elC;3ea5tcߴӛ@=;m3[vsm`">2#}%gvmc,kkֽ"_}L>~ɚ ;O⵭"f~ Cy#/=ׯA5q0 Qdӊ =p?ܴG DkVQA98vU +Y{ d齦g z#Ԣ> Ux=k}ui?ޥqss u ?h?sra:?:z) tխqe72̋7o dHh}g?3*тnHO۶ۍQsQ$ݐ;mn(Swݎ +R-JxKP7-ڎKYl C^dT[(|dOy>Uhkt[:%_:0P7GsHƶ _77-msr>8e3bJϣsԆZsAȻ"Yk,émcV~253V dƐ@2V[}a,qCږ&J}pucG_qUlܡb#K2U +CQ/b&z>~hTwP1&{ń$ϒqi SE2y{&Wh3}lѮBk餌{YO (}piL (mKܺeF Y: D6uqM^xQީO a8*1䴁qNJB/*6ǏؘbU]?߃6wm95vا^ +[tA$tm{M5[O^+zh6#ԍX7(O: /բ0A Q(ewnrR +PV +ۖg OGYe GG"uwi&{~!@BM6T3l(:_Љ;rV}IMlTUui&ѨGlk=CzT9'3x;:bIbA({K2QnEGĉѠ㑛 F@ގڗ]Y$B+:tw<eַCuMm+{Vb/,8r&8IŘU-D ރί4,L1F-zE GD}DSqz" (5wƶ"8|ܛQyG42tо&(I_Zk[U ?QM?Ѧ:m[`.$Xnn+p}ڐGӷd.ϺOAfh]!9M{!t9^֡R;pi|JnT a+7 5ףJ%v*W^=0LB["~2WB;6a>(eXM{zyĥs0ldH]AQE/Utbu؈Pi"8tCNۨ@Z~$]K5:YEk6߽*kpiG&R跳WM^6|NCN +d"Sf@\77VC'(OOe/z_┴7 cw~ +bz' Cna;eQcsf{/3xSU9NEY-wޚ O$;UD^0}**K]amPI.הJ;j8!J墥3SSF +ino(2 zѴ3r:hPwk;{}jN>(F'Um:A;HrYkdlIK]0њ>hN=ONR*xN R|m"4;nUut#k#(u9+j~Ꞿ@c`$kTk _|[(Kz5D؇O;7Ҹߕ6ԑw*܊Æ/9\fغ}=kSAď26ҤM*]cJv^?= hoX_\Hy0 tSjIp[(_ ¯Jc^?Q)wyLֻB/MW[&XKt51'BE,wf*Y¦}-8 \*z56`4Ibt~KN\ r-i$G^8OM۬ Q=_PwzepJ?AL% cz: 6bwKKEnF𘁎b^Bz )2+;+4bQMH_8tU,PftYG<ҍW<^?OLY'vJs#?lhpiMӕyHJCW2J}isz@6nܰ\^8<°|JexO8DtfZb57PA.gH@6 ]<RZَAhѺ>G*ti +ͩgC78sYck~$2)CstN8,f~1׀5 +B|87Z2^+i/P[{~U%]xbZhSYVΨ +[Y7_@ezS-{{6kPʉ:AM~S??:m|mˇuҪNoPw]w0JW;!|Ёwߔ5S\RIdI( +giޢː_ĻZiFǚ763*AV2:C˴H0Pars +өo ^ AێdN*: +v`j@DxNx*q\j@"S8nW孤VF-)9Z^m(-h4Y>kq<=#L=H!ZZ %քk@ iA~+:H=?jQiXA;Jhw =7tK/`:[㩬ZGk%zoz.?qxXnwvr LmzOy!eƿϺŌBQؽգ}}KxKiIeXxff %9a z`@p[KUc5HT ;` jR~8'abMe\gb(}sϣe_$drs*!wVh(iU{(#rN;5`[9EgPJQzPj;MX]ǫGnNVYk9ң#t9XѶ=k}Mu y*mQ;ROi#.܇d^5B8{s&ąSϽD5y~RZ`E$8l 7Gru۪o$ΩTz4tۍby[Frw#fs [ƨO' ͩ aRnhな8+'x̆Z\O-jqr!=gEWӝ,Q9'- |e7ͻ]5eKRNHEhOt̕ 审5G7ܵ;xIQ#Բp<~l홇 'Z2_4P@[Z'#ѼgS43^5I%ѷ͜ bհFg݁nfT(aDBgY:nUZg(ZLVy5 1VWc73o^CuV2:E^P-$Y녨jrYhjTfA޿yN(h,n1i ]Kwl8b}5SbnxnO sr,Rv'Q+ܷ}8{iw<ڙ_DF^ѵ5M?z9q[n*{->*("kk!67tʍPFc(+ n{jڍ&QEҵpIQo5wԮѸtD-ΕLW%lRgV +}߸zP;EbrY6GPk iU@>KJ)]{dU5qCɒz-݊2cUdku+^rÖ>1%v$v,2Lj+U%̔/ֹ^TV?fh?jLIf,/vSA;cl2͋ߵT56m\&DgpՐqMcҟJN?i@ǎő^(=GKko^& +K(8UlQ;Sv`S + Pɑ + A !i[8|!V@mO"7Z#f9EW rmCu_( +%ҎCE3;sa>~MS~3>'r@$_6$"YhChvI;G+]cfg.Lw+=4)ءg )k)/cіdKJg2<W3= D P۽spӧNv:*M}q.GDqL6%=OL&]#Dbinw䔋dz +^3'B*g%R,u "pc-zS~6F>x8:]_f16E?̷lyρD葉 +=|j~!ZaxHռs[PQ~Zع(,y.`Pͅg) e1EƓͶȕuԹo m^WN9:L-Iиz~z|jR^m*kmdeyeP-" ρsĹvE`G NyvwӥiRMih3.)LuJg݂ .^kK~hv4]d9lmX7*7}T6;tԠ8&h9&Kì }xiq) +YGz,Mw[77]bP;vLI3&|y<\13h0{rr0mȃ*R562Şo^qd-F4X'ގ:@5rpn$>h6oE4#܂2T4\Gi2gKuͶKvԏQ,+T䕚ضMU'+:Ζ~jJ3*H9Qg BzxjqjECfˮЉsBXr +?6@J.MhG*Oo6Zi:lRVD׳L;Xz\¾LQs3РgC)w.Å]u*_w%ڞXWs:m籆{=8@v^Gg{:4ZilI'[5pAѶ+JخP +:!MB }<6b"w* KQmh뼱Zvr(N[?Qv=V aXo‰O}AVȸan^zpNggp#Ehh=C ($֊mðFG rf$#2 +K@ +BWYUvEC1q;uQY8(U<ܜ4V@ywT<(tF؏L"Չfu˪XU%Y +烃~,UAPaζ;]VspGrk*w /oP!OݲZOFzy>uVմt-H3yQZcǡo*)T}7p"Qρp.y_KB 递A:H@ހ˟/ov pJi,UIj 1 mw Yhi Ϟqtɀa0bvD]]rÐ~*zyb1r京bn\whyP +Q+(=D졞b0_}}a{ʸ鞨W\Fۻڇț~kƔ`lt:'ֵ]B+0RL Q(Ryh: I'3ǚlQ N(PA "rh$({WQ]/E8O5B:x%\ݕ,oԟ1.Jܦisl2 -ܘ$wDw7P=GrAPo 7[Ie=LzsٰkX:` + +u! + bӎ~&u&DAenoIm/XD# C O{޲6q#)fpeVW?? Z_ZQTO ?`"KV몷ZY3ծI|E9´gXԤ:G'35Kي-ãHol֛1Ty*ޱʪm^Md8<@5,,{0Rϕk+7 /?+%YJ_"@D2JXSl)qUxcs븟9<\MV؎f+DK$SoYlN$;zݶRS/ +! +|<,S*:V]՘&Z a|h[+L~ffQ?7^sYiTD.})<>GU>tR <[aW8Ph#k^0/짊` ߛ[d-x3{E3"\q^3&>PjCF [Sg98hɺWNw-G94T9׀OyTtʧ>djLSPZQ kGl<4eYDZx#;O~Uv@ ȉ^פiJ]~(-J"m} ^-J>qCS  +]t+c]a{;Yre7`l_QAwJÏp\cf)jXÑ5g2]IqlK'bm,Pv@v8 J(^&uQϙT4ھ :Юw +]2Ni 0:([GgྜྷEA"\֟(5θ:$2SP`ʻ&Hl ($gW$]S/IPru͚--c{Έ +vg;KEHGKxT2N{GH% d5g^D.dvn%KDuPF?Ӭ? ~:%^u١dZ|F +[Jg+h1ϠB2MqG7ȝjљ' w5*,Nhc`n'C?ŗIwdmwo];! + XS3- {LAC4}DsVz>zCnuzjd6_bOq!Da)xۂ&[I]j"36. {H¿xiMb%;,$v3tl/tM+kc:qU@9]¬|OW`Xcp(obڼY7 jz7gNV +lk%QFDLf"VH\HktQ?c+켗RC24 "Ѕ7h,;.pkuV|(knbiɫ$\//sI"MbP^mY8F%.!BwixB6*s~1}a*OdSdWqd֬kAёoBUZjVPðm!4kc}faW͸(߷JiRHGq:oԦ4lGb(44YU9s;}ڞd(R<+Qy⶞ d|FQ74'Uhԛ +tz*w8{,9\@b`hM'?Th/hkwИ2JHǘ6о%xأN̻RovAhᢺ#ZOR; >/[_{BGj$R&"㫱]G=ZyW|jWJ^B[|43p/^?P/5ˊp ?UM*Nµ}ZӳЪF4劮+Ya]>ߴϮeR۹bU@˹bU@mi0Z^;͈j!moVg`XrJfI5WPgPxV Ԅt9:+CtFiOc71tp/E=|=`5޼-i_]fEnآSآ(vN ߹)]Z܆Jiۡv (t2$z~6Xhh9q@ut }$%!jWz~V9]o3l$ci8-t8/|}P9(Ag )6bfK?`]ZuJ`nxqB xFsF.=)Z 3^nRgRhԭJ5*X3k &<5))PlҾxQ(ԒyfqhfM͚Z=N A[6eAYW4i޳״}w|Y|6wfׁ6{q6ƕ_mkO/ZjmoqPߗk3V4˻Eﯺn$.~R5;DWO)3nS'5^>s%2BU񟁾f;kȳfKt36jXBFg7Bp}eμh'TPvDUS[t7k`Í(<;u,VJrZ@׏,htolxtV쁫hQ"RkhOP˿XfI3t]7+H6D8bNjaO݅W}Q_8~)Z',zH E2i(0UI gWݫ3xs []BŁYq*o 7h(aho.DhSlFXNkT-<2rff \U7'[)_ {fUQuFVI OY>^_.)g.t_=&:*v!e{vq#S{Q;jO[ ;eê/:ݩ Um }]\q>e/v_, 9[@*Qw)Ibry7Q?]mi^ϑFrrGZ<Ё1穤jqH9ܨw;ZͲtKǃ,U@ٝ@3R#IA\@]@#zAWepK)deQKAg~ud3oݵ_dtWoMJz);- 뭪7xfIqq{6ЎB4k| $+hڮ;9%,ׇV#'z7OP_Q~ #eר bM.8~! \I +0&ټ%uG3bk@w_l88<؜[>jrW2vչR,a 0<8;p_Nhd.-8vJ&+BmYkدw5AѯҗÊ4Tقo6 >[BA^xbUMh@h[pI cļcAČhm|y~ߛÁzS5skUNC4͵AiL'wbQ4@M@G:`x:w[kIWF{aK .=agB;la=;J )J(p˔-Azy{y2ef\(.]ZRFarMq0xj|3׫~Qڱ<P(#>g <|PGbD_j =Ul.G@baa@:ȍ÷{$*4jO28Ll?6Zc#)CT w%a{OP%D >]s]AO*jىdQwǥZ#CC5~@6/7VU +mZZ\fO;$P@nRB/je(8te#s- +ƁjZ:x!7y<S%R^%\X@ Un}$u +YevlרR[c2V;@#ƛ`5TX鰼͡n_ǚWytx؄|H#܄ 6w^+j5&SD}iLKz".:Dy +W-"-e?<#VT«S<(3/Bosxd@gk}r58*6m!D&C1 ΕjC97 o2/x3j1=,qVG81dK4 x)BIRqsr]w&TiBspqQK@.QEq|(8q*Lnv\v--.8%&}jV-{NReݗ7AXh\S}#UP4E #t5k]:pIΪ#k;M+ne8:u!4ztc$}/oP2o'9)8e~,Bg5TU R }j( S@ %Gt +lrvK,7=ßMoh BdjЭ -51S'-?7Ey/I;%UT6y*tH`P{ #IÌm|&^qXe c0via{:)wT;x q]ȋ Po>kP// Hgj= 58 @`vI/ ɻaժuTP4&wvcrNMVM^mYó13gRWɚj!c$B &Ʌj@K + +^Ai1) HγZL~^z-U.&*a6x*겄Yy rF*9WЪ= 0k } xQ:zϡyi.F?jK>h粐~ iY@eha"WyqwĪɯzvYϪx\HeQz3}7d^AOJG}!xDL1\AZ>ӄ{ъ4l<ۖ) +$ VYصC%MDb:amm{b zײ19V+'(N[@u:N%4[~Qs僖K(]UQ{aVJkPH/@=6Q9HEMMx: ٿ)zl];QY)K`L*e:~ J?3 뼑];}l^,Uzze۠W+Hv}uJ)G¹Lź<4*(fRu|VR!nmRyBX?q{S"b -{U{}_(_+Y4n& %qc~_3ft9{kxqBu_d=p)J; +-^5xB)+vt5vJY_>6u6XX؊sv?%G؆\ _Ȫsm(rփ Wm #d[-DVStO]i/OMnBש9fvH0~MS{(^4Qz93!fXQy4&<^\:M@J}ǭWYo׻eʟ/g_p1 ZkkJ A<}s/NeU@]c2 XJ +3t^u\~|hQb!L/46:Lqud Rm<m=N}U1o|ckNvͨ:+ʼn7;OeH21??8v b ݱZO46l"! (g7ؒ"0]=< $wI*ss[v#iK'}c' 49zC{Wiʄo.ەХM:}iZA Z"u}gVRDm}^>تMj^%Nx龈);羢;e&PhXVOc߲i/OMmnݣȧБ?{^E$ٸDE{C_c ,+z_p=TLɊSm%) ~ 4e"b=aѝ(TomAފAblg R92ӅͷugdFi}ODQ*v Ap[_M({wҥ0Tڷ/~ +J:i|)3:ע{om?*.I]M^ƹS-uni<عrHE>TOec w =B4 +P(:19m_sF lh#дZl+8U6n=4sxt%Xֻ~[!J5Ky@PۜPQ9 +ǘ̝Z)ǢaXt:P$3(\c.DITlNY\~{qߵ>^m:jLM%& SVfNp;9PF^1\5k͖]&`X$houOʑo]v\9Ҩc(*sX[b@$A-H${rJ:.)1Rt=H-@0OS (` +endstream endobj 23 0 obj <>stream +HdK4){"7U=JRDǽc"[dVDY?WAcٜ jl^(jL>. mXzNCV͊E󧐐hSQ h>r}2Aexl*Ipxbo_Ec"pRi;XegI!eyfbtP(.AXB+Uۇ2pqjap{*6i' zW^yX_h=w4c]h4ueS$Qb;D-E&OcB1Lhظ3^.*Ù_E:Zy%u`u_"n2&DuL$rGѳPX·PJ_CsSIǖ aEȴĦQ>zzӴꪝ\IH>AuГZs[ 1C'+) N1:vdi9(MIľm}{#jTeG2V!Ʌ L¹j",wGGt``au"o[/G2  Ze {-k>gֶΓDh~8-6\tGpJN7Ցt˱v!19@yve"Npa9ҙH5%ZG OؓP[`:B$m,l,|d_M5 Fq.Q=8cli%OޠJ=qGvnrdݰ <Pu.[Y>Ҥ7ETet s~聿L>p?1uj!"Z#b܍:[j;Kl=fM=D,RM֯ y-kly56Z7dxṆ\w" {u܍OO"l9Fݵkb +Gba^*ZjP}މEi^U*ZcT' i>MEOY iR&/^d0e;C6ܫ~t S;byRH)] BDcXu"6dPi"/;oN^eA[{0lK;zC؜A+Mcy+vs#OTfk{{]S;gArp 1yv@@iFF$vKu_;kB*3d 6 +1Ǭ*9i;qӳY۔X1xb=(lS] #I0B3B^j! ŬѾDmKgG +s!DiiڪEqhFz{BqG +88$v]0prFD"ՙy0`WɌLh̉[筈bX#(x NS;gٹqzQ Sa+GĥhkjJiGqdݎp;DԢA>8r + ^%.O9m9y5<d;&P")Eg3-4`g.ӥ.V>G ORvT9A1ڭիx=q /Cb<2Z7oc;H.? {A"OQϥDxhވe1#rh0Bs?o>}5"n9HUxİxzH:{=]1A Bf"-kBWtX51̘: MۢQm@ʫeBGz-8oW6&w_!K{iR +8{h6=%W<׃։&챈TbkjMcl׬...$N_%HzTiƙټJQB,hN327 ypTS+r7;Pp_d牽T%g6lfkHgl|Ph~b;2U}I@?6;)oi}h_?D}pAEFfAcyc*ʁu$NEl聣E.|v}=ӕyFoX櫈eU^ +eV}h L3~6/ܓw p{p> |D[tKƺtnx-qؙ|>/:59t ĕyE0 f +s%[T0IO.BJS5O)3r(FHmf!e)&xF(6Qa 0gAW%A-{6X?: b@Y !A6hnd{0IlUeaz= HAdå;{\ljD]SRY'[IWF[Z3E|Sxw4[P->"A 4N.$cDGUt!M05I yoY\P=l L@,U!DKd 2eVl)P&@r,n9fepٿ:ɬaLde9@juJzO|y5 ;7$Mop*KT/!IP}33{ vE:a+gZ؂v=+Cݠ6QLv=E@NYpu/]8q/pgtO JrX0V;XϰNΡZsfM# ȍC3?aDW`MyҋmKSA2nBe_LXDuZDmT$㮛$Ƭfn ?[6WhL[16&b-˯{a.pA‰ ß檛hA1yDwW,v"QFGA7u30ԁ];I -T3PTGҬb;Y C nCge:Dm+TюqpyAD +G+K2$NnQתc!ja6rQvS]E-ˡe8t!ðoaDAmɶmY\뻣zJslS?seO$R kb$?I691db|ioϥ28\àceeWl M?0ūCL =́ͳZt!,ERoU} Wik~m%KvV76!V]WO9XR#J)~|f>/U\pyH +g{>:*E#vG5qMrl[~=*SN@L'!P P=;K/al c!$00p[~8qmdQ|)>dC}~%sԋsX.NpOTd2kK{]4nلY"ܕ ,4fSlhhMݼfHŇ@Үi{@<SJWUy˥ubLن^Av"mR,SK~]c r|_A\H C1hv/ ߡNƬDz,Nu%]j:?}&Ԑ[e p8q8'lݛm&Y)_u"lfO +Kͽuk%tP]MKYC9χkvb'91|H|:|PVa*uvmFcӤ%F50QB|JCis,7Bi.ab B% =aV.ef?x]'Jb +6yZ7z?PyU6ÏPvYr`Yl/aau{F}j "a”Ь  += ВO(͓GJ[>&vܔ~퇃 #EVtw9dtr},r9Ya .s.qqukx8=1I>FvfH +uNRVr d[n KqOS]Gk&΄L3-/R(X;`O{)pϝ!''Ͱ16lJA&a6us+%t:.@9fX CwlQjswdB?O" Tm#AqF-UY+:>>nJEL;v*qHѢy݄ pq6h>ڏ#莋aя`]vJyH֋Ʌd4ƴS6hliXNDxIggwk.s+Q#h +,-_\ i.aik>G:٣2{k4*'Hb:l&: fQ[IKHTt"t./@?|Ђ9lJ&~0WMD¢ƞ?bc&M2JZYn횡K6 y&^Z?U~XA%*QBUKJ$y+7]e ́o n9rxwdR'Y`ܼak'_\BEW`yrf LhENhjUhlo!dڬyfeց1I24$vEch +!1PICyt`ap$$ !ky([jᆯ>V>+۲0QadT8< ==D} \ 5ӆ]X>5iV)l-wa>λgpP8}i x:]x6R9Eȇ +k_?`b(ю +R4qQN!̻0@; ) ~0e?0j|gЩDAꟻ8ҽӴd!V^*u Ǻa[C萤+S&ul6g v̎= Jj|Ch ܎1GI o" ^BJ"CI:[^6X1+c`_9w Z_8IN>2 TznW'5LL = MҘW훿 B5GG67slfg4XNσk—d +B&vWb 9x?r6`G+F U>oq ˑGGr/5n\#'bR^xA<"5J5xe<1vUKBcÞnXJ9y$!+*b(X; ;n7lWI1|mG̩:YvB@`K=aL%aD LE8nu9qY9knWL F->z!xqr#%5n nthDҽb@[jL@7hmglE%-S\c.]2fnLPyЪ)frF#W(@\2&Q?e;gK a=U刾Yuk;'CZfk४Z/y Ș1S,9*0x˝B@8(q~ Y6#?zKgrx 6 +}.2Z\IJ t7-H+=o,- "#z4 J0[hdoY|áE0'6n0m1uQI? cˣRxH>A43ơ;@5 Q+lqy,?B g _oA DvH4Xu3_ Ą ,MpL&gD=udJ $I +U/457;յHA!P>.O +eEwA~Fr&I3;8"CE7e8wu؃kJ菥M#: HOa)vd&S ٛ˻N\yQX;%#wg궑; aN{+ƕd~ {L=5GFfbe9O${HFcX]4)7&QęӾ'`{] +)ڌL 18)b[ϰ4!2sKĭ21W3%[ꘙR߇\\ +/`I uA?ŬkQ(N@Ce[lcN DS6 +o<@_|ʚ#bkOW.S7W _Y`O<P|~OVn᳠h,}">]7fፂ&qҼ3*Ziyqy }!G\Ј~ >B[v6n?v#\ϞԽV\J*H0C} +{6 J+y%'++a8DsP^@LGc 9r bJQ,)<,-k_JWJ*|}71]€mķv&ζ8mЈ5, +b8)GyJ* uŎ,Z5۱e2~HYgOYY[4t%fCy@I2d5ֱ[{.$,P%4a>ʭU~㠣xx>//i^d|xqOKY; ƴYvO?k Z9(45rG +В#];F\*acGbe˜B2`Y M`[^Uuüŷe\ g#oEdc F2Pd1n(0 6 VϤ5" Z+0=~(g8~3:369қ^98]ަwLI4-E1郕0:sBTf Խ +e lglc㶒K-:cM'RkRt6so{Y`s!l"J'5D X^ѳ>c(Ζ1( EP͒;(OsS{/%2A]ULwma-^abۆk6#v3&'TtAyoa9:')LzݰTmcMK + >C~Y'б>5(:*Țghef`|t5Mv5p,: c[^fvj)@39lw젡83xEPȞ'"lؘn4y6OWg\XAS&*c+]ZQ=˭rdt|Ѭoğx ҎAn\$UM"%眔mAdMslijr4 +"Cf/94e{oE7 w 1p9t3.h^ϝK/?/`+ׅoHN|7J +c9 DJ9;ͼav %V_pV27#0&Gl6d\ބ_YkRߤYxBq`ٍ0u{"}!P\LW# O. +߈ㆡq +^'GG/q췙?H{"B <Ak󠊦ΧRBQl Տ>):ޔl{+rWŞKI]lsǽLyWQ{9L3uōI&cB bGtT7=calTQ/dR/p@Οo? C>Dr;0-ȟpܱel%)]oxw~?}@lf(.apYpW*V_ pRCerGUO;?T-Y@dJ΢+'􎃢gVwdvQ3v..2'-i+9 >&:!,*6|f~!$N$tyon %ǘ8`HO\٢c_ @}h +dMdek#b+;J&k} fN8 +R1V"6@?2x|/rGϸ@$Z"`ik69\΃2[!!!†= >+챠@x_+U.3Z5 3ügOrBZGvPY]4.wBOnR ?[{Ҥ󃱻1_ZW"g ̉:r@ jeϠ}":ٰ}PS0<Ǵk;v1n 8,m0CdI2S}zCAfQMV#CؕK-D@rTZIC.Ðở5$D V?DBN\͋&UJPd d y=~ڬ[1Z+ilQ=f} +#evS|ND=hr$u狳fk"TLR*.Tŝfl"3!P)vZAلjz>]pːe@} 7GnґTj&^WL~@m޲"U/07Djf,V)GifJ%ZwY/D{ LI_;"s6q' P*T\"װ͵.~JzlNd#h c`8҅g{>LhR|bZ}J$W0 lQ̌|:㋎,Į1W vV Z%"T)IfYVqɥlcc./ Ϣ-+Ӕ+rdRV8ҹ镀۵ɂnY4ܾ٨Gvt iF}=#? l-g>6KpO}oyD?-Gv&34=2t|-wd-4pD&v]]~4yDkkrx9wuFg_I{W`@HT`tt쓨OJ:U#%ܚ04JB1CP,.=h>A D0DW"0y\gAc^lU~S5v^\|`nN1fu{alcHDU¹}K)>W;V^>ݝ]5mT,%{M)]Nu4=AFœNP \X Sp0W).P:@\CUaV9W$RU v 9n + $ձSٯA +Le" @,TG0`mWĚ6ƝjP&2a( /ڙ *51."7Y&Ӎ*߯d&\I-T}N VO$Y"jOlcYt\9^V%Rx&·6 {Y 3ؓ^Hg|i +IdlDz,ɴ?<~wzZ)wQq13īB'g05 &N~@LWM&Ѐ`͝7}0DgcZLs3ۣoܻ!nc^XvpY +UIcbpdU qGd2m pLP{W_tJIm)(qRAp^Y""Eet),'w|{D7IAQ5.hxz!ُGݾAm/zzf~!|!ҟHFRƲyW%/Wy9q)ْQƉ0\D n\Vrka]C ͲR)KO޽> &,8, - ԝyS{8! O"5,IwYFyFͶ@EǚfiT'OD; ~ߞFؔbRbƉusM[wB\ D@ +UOY:۸ 6S(d4ϺBԢadTYy(e%;Q| DިFNW,z-&a2XNW2CK{;S~llE zpPufc!\>A9`ٵxl9`H +Z!Պo6Ǥ&>)Y`zB|b)Bu{ +}]tȼth00|@hl&[  NHR_ j@ا̠u7P238l wg"{%,'"?`F(ܒY$݌[X#mvew_HFԭ0pRni2NܥWiu\H3"a0_[s-:HkJFv,y NR0%Mظ;G۰!p5(e NrH#ӳf8جSt< ,;^rT +c!2-Lj ,޼(aE1קX-x 8&c?hX$\bo䕢;@iiR#y-ݠ@ag1v8VdПi6QnDڠU ju/;-Ȼ9arTx3o0ed$);#$rͨtQf>Cj`:k^iqYp2?Fo:ͥWnrCBS,Qj5:MR*l% +T%iCqq-=dni!9K"|-ZU{K2>dz Ns;%W@4zʴ1t{r +1qոԌJ ~F +fjknN`@:S'[K1v|lո49|QV{Š&Ra{ +^FHb'磎d24Mmt.e; +=; Ln>p:΢@;i[c5[g"_he)q(0pxdDi>d$Ld!G I }י7؂5A6na$ $+*@wJʊaaLu?Ȕݰxi_lSsVGw#O'qUB) 5{RaS-s+sy( IiEZ>hE/Jv0ѩwRq#!6ieAx@QG:.o8֐A$DCoEION?Hy77kbY7]Q(ش 1yB4! &E4eFg'L5Ub ڷкJ6ytdac+kX 1Ӿv԰= qNH# `--T^͕6/l?b{֨QFZD@~3ۖ4ƺ!IG\{8Ȱ>~Θ٧LݹL$2yq&2@m= y1&1Xq·@(؈j'Uv&f'r).?a9O2JNƞ9 I+ ɜs&BdU ]~TSMkqa DhkNHX;X7oiW=CbH]$ e$_Y1yxxd'7S #Ȣ/?$>_`?Ê_y +9לZ"SiIRբ85 $_09A,-BR~Mzڌړߴ-]p'-, +՞wEQUX6GII*~z^,7GhYeQnq}|: [d0\mqσ 3R An%KEAeJ^Y M%HfΛs1,8e y{WWJ$ +&ˌZ"hY P|x6 ROE6`2=[Rv>̬!4ݏgisPΣ>{ &I)Y<&@+8iixnehP 4b-kY0<=XyqtE R~Ȩa ~&Um9&S'^%xHHDWj^^q8s8 ;_:jWy hyyOR )BHeQV2w)] 6k-61y Y,X |&G48\*M0{ ^^1#Cw-)hAbg- +zϴ>X?a̫(j)A@HI ">z6|/1M[9q V;SZ\㼃¦ rbƘ&G mDP1q|uo\ݡ*XFuJ P&6&MȾ) فlVzlA|ZAyGKyh+ z#+&҆F~}u-i\IR/:z7Af~JM"#@$_Qp?hMOC@АEe}$x66ȳ1#a-P|]4$Cusf⁦Mg 3xlS4sS&Jzj!?X79x3V{xi*2L?"Bfɮ^ARAPfDȟaaKzqVfԤ(MQu"дNs,^{謫1Тs岯V9W-qVLd|FuQtA .܋0X; ݖʹM}%ن`k }PȏЩAUV PtCq"XLs3S +ӃH}BD~O1EQd֨v*LFU 1xsԑ%T+D]$gi[lj ȓѶRJoe+=н4)FBzFl⃄.Gv.dk'$YO7vI,?v +*{, i>2K?\w)U:l +ULE'zkaeZ:ZGc[*Ų^(&h#A%hش2{ç͵PJGcUHq V">Yyt5.>!+nG5{ a>[)E˜Ljt~ 5(A a>S8>жF+ժ@&Oh E_!!os.J4ݤ*A-߅T7d +܋@<al\8- X(N*kgAPQFKktڠyVe_p-FB[4P8-mG#2ƪcMSyļ R\BM\3y@\9.GvٛFtx'r]Z _Χ<(@OLazXfyw|6Hk#!A9k&Mc +d&H:PPŮZMWڲT 6Ǘۨyy!18< -} rA}b)gn"2j| /? K2|:NM^%P&B[}H^Q;I4=V{Sl 'T?ǴB͌3]^E턓5W wWVUwH +H nҙ +D P:.ʡ^<` +tW}k..c +0`Ps +X@ȜU +G3^@~ \9kpTEN +hs,{WS*"2X #J nkT*"F?B]MW8!k.GCF:u>Ƌ@@<cTA68 뷼P |ʠ"? R)+Gm2/Vv*5܀! L"o20[ٶmP7Qdv4D"q9MiNVg9=(;V G4WV( O:ٲ@2KFPL`#l-[|DH03p:~4c*;P{tV3Ykt"tWѽ,ӏG1r,(Z}4J}WJk(hk`RAGƁ"'ʶAUGOtgy>Z(7UƟM79-]ƾ?sBK *hHo.7yz@>BH]e4w/l8>+l +J:(q$vvDwO QYmc.G=:l\[QMJ:Ζjd)2rZFmAImRsʍc݄g@tLfFٹudtVK}mPx>I]~/kKUAd?Z-#֧];q[vsΔCV|ղі5#?{)#i+ᛠU'n&@C&@rI9!VLnFy9oOT!!_ +CBVt9L(К'l%MQ}R8B=<MAsaR 29[74W.ODGV/-%Z:3Ai"}.]]] hme +oz#,8LS:@ZȓD -%5Nfw(`;/]{)71\e1HԖjs= N͖]JsP^[Q{7BTT&>Uj)Ovwy/*f-x֘~ j̳Q'(x3~.ѢDGh/D=3HQӈ8Aͧ#R* 5RZ_1= cd\_HrgPԭ8 nwnM~ɒ=% /4f4hCn D!rl/ٹdzƀ/PhBGmH*#FH6Ny@uJʍȒ@R *zLpxIg9gqf\D%Z +JWtn5snaI(z?4Ne ksr]ty|w9dʪ 4Xzj GƘHOArսZox^6Ym`UM͘} 1IH}`ܡsk(+wܡ#8Ǚæ]*ޚ +X' +NU@6$Bʉ(qC3ېd?>\U[ 6)^SJT4yڤhKQGzj%ՉΜ^K< VL[l[W+2VH4"nKkCZZ _hTx9,BAinECjUP6vc<y:H;yΪS#[l5ސU4WCw "RKVt|ʪ<Q`h ڡ +53n֮N +FqxOĂ.]b'=G!ͯoD 9zד=#!:k?GJ/s֝2Njx1:+stHcV!zdkjcooPwmԫihMG4od6#cRF5|m93k~.FZ 9΁]0+o3Wo>$kLgMCɜ0&Sg|.dbzs͂9xj3B,IBe׻ +1!IHN mE=q!Сjdlq` +"X`yџA:{rmTbtm/ cMn2eC״*7}\)$Jyװ:s`fk +;"D-g +3*.I3Ǻ]>8E}n0?-O>&%e^;Mdm}-6Fqnӓ8okE@5198-gi0^Z 29~X܅&HL!+RhjtW]+JVODZ4Y@v)lL6hT( +) 0nq|tjU#s,٢ آFu!HQ8ι;7T<E%9d_I][ qUc@ڒ= & GoSѐYM+'ińԞ'J3ˏ{IZ'cTd^`< ˫!2(S9HqymjFٶf2!uѨW VDYw^~:@T_~8~T×HXWK{8jodW(o'l%5DcZ`ClN$\gsݭF3ִ}_bcŊK9JhGG3Mx% lmeU^(3A7ֶS1:"nRg يKumK^_}~ #1zdu9c_UilTRtH>W˛j/qu1P,|P8fLiah~f'vW숎*Y@ ?p҈DdqڳH-%͐s?6$K`W{u~4=fQ="2җ~ɻuHbcc B:v F3Qa())E`ƒɅ̈rN.G+3 :4{ ^sȬbdydXcR@S]Wj;j iԅ=YNuϑZ[Pg$c= UTQEw.3aE5D'<+0N1D":JB0] 5[+jwБH:v:>) z$M8VFn0>ĵRZ g赸H + '㌹Z#vzPmc磩VJ0igC$)ΚIlo&P[>u)Zed%9+\}^KHXVϫH#7>s;IJ=]nϐ/d_HE1~l$B{i^ (5<"-HoYClF)x8#3Y Șɋ7_ :*;'3"Ֆ qӥHrfz3;ݐSA +ly4/)p )t^^5%5sE> r\\5g]9v!_m>$.Iy륡=) "~ܖPz9C_Pif [.Amj'zA`X-ʧR~װhL}Sa:B Z/<̾Vպ:6[nL2DbG-!(%9J)vZ+ɇ\$p.A!L˂ I3dJzRi~@saLb:P>\-mWiԶ Cn9D1BI xl +tdp|~TuUC|!h&hE<- ;&"bcfJ6qPјV}㱻1&GBH+5sl7M' MC%81artd @iY >{TQ4O Ǒ;].0~5IS4%MBj +X #\n1 iBh"ì#ߡ֪aeb0![C=M5kE5,7B)5lyك4dtIX,dc -!pc/nɶPuH3dNپqI !UR}KRUr.4~#},*?yܕԷR] p<@@F".tY`myV5f +7i_ + # f]3 +*4dTeB`Z/SEꦊP:}X18F'8.׍Sb@@1:(@CAGwH +hsQJ; hx'E)~էX>q+vrLZ㿬`Q}$2']F{%:8pftq*Dn;lm{_p{-v;`s<+E[+.L%h. J+:qq$8rU*Lb{.+E/=;ǽ~b.*#&ylk˜bŵL}Rf1=;iKHhGRO@L +'g^M%a4 dn9Q Ƴ|h8gXPm%a\QJwQzOGBBV{_PXOCct)/tfj}+@z6{HEb2d +8Iin:vFE;.xKGRzfT֌TH}p +}|;5.,Irn7HZOMsrYMp7_ℇ@<96U׽nłn7Iʉ6F2Ɯ|1qWdTO2s$Gz[<)O.Q~$-m< +6"N5-ϋ0 ВG Mr3ᦇCH9WA@ +r+)#?=lr^:D7OIWJ߾KK {iaw r Ff &`?dZaؐS|o/O1doӃeȀzh@X:$bU3Iי9gJb']Mzq#$DD*p)ډV(rҚ;݂?Ŝ{*H˖H ][}"-z#rnjR6F9gT󨥙M%HR:( xb^ٙ AWi>HEF3P=P">!. G;>0RG]FV99SǦqnA48a]Vq-vz}N̡H6Mⰳ ~ ot0w/JjdO64T o;} ʨ@ JLҔKltd%%]~Ϻaܖ_^)(k?bpirhұW*:%|''-oV+ՄT K&e !5`Am޲"ѹ>41ɛu6DzvnD(sGUdi`Ss3KEhbe޲y,!}M?H-\B5~dR?eQ· UJяF[ӆ.zoW1(-)uy^GUۛ 4M6ۡH=ަy.M3:z5d87t(Ȥ7l2:VX˸AjUG#='^kn%؍駣c(mw-{):@{q'r6Q{ٌA@*zbRzhBa8\l):HDs}k.|hӿKU( w (:3c]җ@iӀ59]q? ͰLbY)I Neڿ r'^*~Ɂ6*6Ov:74*$tÙ:ʏ$4L7ڡq&r.tE MBDbToe'*f5U9]"CnO&.]as캲K#/ǣ j/9YDRIJR\0uBcDN?,ڈo%"ClM$ӈPN(Fkܼ3S q4I\e U_k;2XÍ(:h/SnG(O遺KZlb \+\A|Oz\O:Gs:ғ:VhPyjnOoXwcx6%mQsif)H[0|M}Ѱ;UoK3$ J%腚TjO)xz*٘]Ɓ'kC aә-M +`xƚ +]Zj;ƮvRP}fHqF]4m-ܔҐ̂#IۑtpV:WFgFei_tm\Ԛu ˜];KP#Ft{rK#߹{p`/To[ȍ\I>baC9j6b44ц^es;*XsϭѹImp\2Nm}>8" 7Sε-{n)8 " mFٲQ $/prYtuK}0A/O^a}'43:;jJVyxxhC@Uj !JCrS1f`u%IW 8Ϙͪz;>"2fJ~qkEErJV;Wb/{fl[љ- ӮF'_oNhKdg),\uu9 +VEWJwCQXmiT`+ uͅh?D#>(\#QQioN ttxkFe~L5ԬB]oY$tZ^QJ2F\`~K(/^]'l]OyA#x/'m 7#@CsbPZb@0J[mhjHΆ3{/ +Cʤ4PQqic^:. f7.=V(ٖek5<;%%z[8mPRŤ(/0{?}mx~QMbц Ԧȗ)mPJ1:'@r[ t_cvEήʢF"EB,t[B)a:l9?Ԍ6<^61aMRMρ & =IM%P\h O"{C5+,TiF{ rްlh9"?ҊC$m23ZhP <w?ot{uN¡9vAiThk@IMq=)P*'!Q$L3Jypz%i`.P:Y^k#kv֑vfADBN u8M~1TGi>yzUNGKLr!4iRȸZ&A! yI1Z?󠼚#]P_?_ЋO$kPsLd8Hy D{@fpKm|*5#(mQ꺎嗚4IKo&)v-Ó",2ąiDz 3P]hѴy97(ţʴSH!! N[XI鎲2#MS ˔'xo l{s`nL;J ע Y!P.-RN%t+ +w;;3Mׇs~V^!-@7 '.V<~ ԫyA[5;?EՋJYV&GE7E1åDZ&}oUG]MV[ OJNx#ܡgԆS ,0Q&7u}4ϯŸOc'MOjh?+"ʵ^ )qݠR٣@\vOų*}oKv\u۹moy)feA"wG'uI=k͉Og}A +Ktb޿,W߰+g/:TI*10~n7_+VJh%Bדgt +.k-Ǎ=h\@3(L+LOKC k6&k%Z}T70uj%D +yǷ.a^OЪ6QeoA\5bq&_~xvIT:,/'>jXL=o|S=MAk`g/.3@s- +F*HB ~xGdJPtȖ\d&щ=PX +d|0L"yd z:bE]4Ԕ&.(mt*8eKYP%{zD6s}tQG%9ǭj,XJЊ;RPRtU]+)dZQdA>KcO|nbʠխcҕZݕnjAbL/'*13 q5W + 2Je9LKPhP[hq&8p#,M IUngva2?IQWIWD\Բ|s,rq1o[GE\nt xW- ӡb`Zl6aY:K4jF9 +Op3^C9+tgcsᕺa"吨Uc,L(Z MK0)S1\ePkL4'صm0 D zLw emm9|XI.Jh1 c8Iz8%U*% WnPrbنy|LU$\ޡ5V|۔u8ҺAo^=.`DL"~ 9g}-PwyˬnDL&g{:W~[ZND}Pj |7;wlcff:94W(qduu3_sbi??5JHv_~^U"j1ÀڟFسDŽi0v];lm(qcFR^^C sNS& _HJXFEH5tyoʮa90y\^u8Oƶސ=?MbMM||p]QzF+CAť:>thφC:y Xa R!Cfsa*)5GBfl|Z2"ӨH\ЙD8CFhm8"]gP-nB] "ĶQ,"-w?JC%Icվg烣X A8&4]7?`"EtE9[2/&>r6#獆mwf=K\/ +E$e~ &/k}T `[HjZW ݓ2V6he,6 (D͕F>m)Th#?KA]9PنA@T_/]fضs/Х6n vcK‚ +‹B'p[wP2Gpم0N{eQ* "l/2Ȅ0^.ٶ~M z0Zf5RM؏=7DAd2NIzCu=f!'_6i֕wqCu:n-V>|cRlYJzITC^ϻ.1tVц8)pi/ H^ϧHwU]c+uJ}QhgXca'}njB%mӭ1WV-ڮ/Оǝ)Amh|kglK +[5iI:ih?ґPlmQl$riG7w4e|T4p?q7]Eȏ݄wYV?U7ߓN̊Z"~hNiI|T0S36tx'ljIrFÜL SԓI/>A "}ѪE,tE-IR̋52 u9aή$yI , +LlyEBڔ xT]rR̔عeop;Nq$+'\3;l[E֚+>.!UD`9 }3+H襯e3~ԍ& O$Sóe$@(ĄЌK3vQGN鄷dOVEO +5ŲE࿢2 dE\uT!f.NEW '" Nyߦ㘂e^SiyA-wru$%l+]4c ꉤel+CLt MheB) eq&ޥe{"F$ʌ! .[DҢE\O$WZKd腆ozaGQ@}n(BNHz۔;(tcU۟P<Mmmz?dKg=6SHkJ:ƾ] One.2~߼:y;i͓Dլi5)G>|3%J#]~U:}Pon 6C)5ȽZߜvG[ۈ^)Kϭw R?M>n&ՊҬbZЁaz),BϵI/> c͛2hȑ9P DIeUl/19pK zҬ8YaXX(>=]D#jzd+*{ +xCU6NDV|XB[td>C!d2+˃W5Z8 += +R=SEz*ym +Hi  ?{rpQ}=X@k +]#qǏe |ikV-ŞqUlYO@c椃(ڱqps͑6;#%[Zdɍ|9`m-^i ūom9Mq:J$ߐVɃz;FT}A^T[u |h>C7=]kYht@f9E^gM TRX@l7/UӪO D͒ߴnrf@,hs=ceC[>#Kfچl[aa+?iQֳzc*e"eAbNMz$9n7BAa Y١; k ffb[=7ЍfX>*F?ECLU|ڧB9A`\5UAgTQ \GSܮQj8JҐD~ +ʋlb?\{>e_p +q^q"}c`\PD|X/qzP|kA||_RKmPϵJx5P{ѫֳHuWD7 w:| 毒svU|Qh{V Jkl\QPIq}Qѹjy4z(z'̮5WN(̈okk΁U$bUv@[-P3K#fʐDl5X˞E%j8?(Z1*n+GJeq5U|eV-{h%>M[&Ea43-iTk/=VmM RJ3+> <V?|7'k@k2ȔAhbKcKY)f 5)Z5*vN$Z]=D 9Ae^-ԫ ;B<ַM_ΫXeo;P&Ԙݡ)yy^죳|=OÖۜ..jfY}c:7C&Գۢw]<̑}Zq@z_v1yg jhρdM`_K:4f:<7cߴ~Efl U4wkE(ڢTդ)j0]v•M Bue% ѫcp!Z!Ye~# Ŏp!FJ8|X)-QxOw]?zs2NsC]!uO5N ֌AjΜ$vR8a!$yS ]5*}F!f?3_Jï5*>We}HJy>sj"`c^?`$\#euLYDu \0TI) |_V_`qZ#X7$Ép1qB]Y{GHh^Vᘵ}/3$60:wԓ0wm芆յlM!ƬKgTTF%K@M#o['{{Ny#{mWKT5*&rݻ]vD'B%:67*p";S:)ore@fe]n/PdZCŦl;v:F(S?AA5Wɯ"U}°NںqUtiI5'f¶?\[0(2}@VDp+| +5A5%5 g'p׬ 3 G ȡ5gyڥ0)]phS0RktF-8:(>S/Cw(2{Hkr tGOԃz2jN -E$R'cԬ][0(+o; Ey8($H][ӽF8!h,,ؚB9}7%A"y| 6͚-9HkXqb\V.| {j(wWL^R郪.'N{t$s4l؂2 ++Crp asjs( l"p8L !},He/H[([Q7E:I`Z^׉?xϒ2B 1cFU}^C=h7Y*)x)aCnK3=!IRCVtvXG(>#S| 蠕T9z^$Ƈ=CŔ +aQʹv|L'JYW 1 铃䀤-»Z֔Gx(l{) #(Ny)k7*N_ Wp# fOBmvx3#|~EDCٛwe%oG1ʟ=AdˮBUU"]5-$ 5De3hM oc@x+cJj}zU;'MwpYH-Ժ&^:kw9K2ԭo^ŢK[ȞyFi&G[C҅LNCĽ^JYvzj+RP\g=^|724$@Z<b)6qJ`h[V$VUEB'n#lG0ABNd|T}ngnC Xz44>V/elˉx݁XOGxt<-)ST{wdVuC"vx'n竉:= t39岥 u$Ѹ$}VNa+XDfܨG`]*φ&`9c%{9c!x}FO_f_lr|Ił-h􀰭CbtBQEYU?XpA\ +Ivo^ n1샽HSK]f7k'9ٝL90 sa#[&MtfΪƁw\t" r/HffŦ!ʩ81iߌ@; 5},I&}U%{^S+?hkwGzz<QZTN k|LEFt(ӱX\)nd +[DۼzT=Z5_QqQ}$ag`$u^Fٕ#V*s\-_3xta:yJ7Jt34sda3~3{pi1F̕'n J +ij0z,B-XZEᯒ̛''Ӷя {Vڜ,=)  ~|Wl?6*@ҍ9XB`rD>4q n5ܙq8-zf5bl8" 6uWq@lpO1tbg:G mD6#qޓ<6F6W('Mp36PحG3Ke~&:/9L0e- $K Szټ@,fgF#Trߩ,glgϜ#漓11J6TAx +x .@!nc [KyBt ys+dۙUJNvD}G$((z//d@5NԔ1p=ff^j8 ffi;`ؕw^a_ײ:l$wZ-]%&uu-5䲜{wYɜWHeWI{ٿc\Y0!Mi~co "GIVmv'jLj7dyd- JEspֹo2$YI+V[ e0\$B_Ut,a'HOw u ŕɸN KP:gS$(N`9l1;ՌpA6$d F+.\ة![Hx@!6Ďkx!v>'*4ֲRUǀ$Ԡ|眔V?ԫ4=MuDt#;LkP Ӓ~d)^bXL0%p)04uPH0=%J|qwJH$EQaꕢvXV:i|=ط…PrUvCaR4HrXOsj,ggkՄgQ:5gF.{AڠXoQ#QeuH 1|lù2 zrY@>qtcw(I l`?3pP'NzC?Q//4U>‹Z0ܿCY_"]X~iAhN.3[q@1,ӽq;FtF G[_"oÓ; }<47HTZ]~Z4)82S'/gaY $S?ϢI1,\/ vOUmkď|/M)Hz6 +CK!-ȬG +GptWp fyjjv$0N +endstream endobj 25 0 obj <>stream +HlAu) +{ t"jAY=ʗ_zQG^KHk%6g6 iOa>1ll}ҥw i!8\=&{| v`cl˭01v$QH>ELnń2cO<@C:LY=̉{&&478Yağd7YgneR +To;~[%3/ۿP}Obu $r H[bNk"rV1ȱEjXT=E7Ŏa&Yu1Yd +d n k#k)2zE!![7% ';dEuxrTnYAG)ڃ Fp bYM6p}]ɬѼ\0ExIYځP â.s8ĭ1/ ;&ȒX[2`O|$\ +DxA5vʍ=RO3Y.ǘba\8lCtk> +LBd=*É>c5.dݓuXegr_9",S-@k_ ;q0Ѥp>{#l#<8E+{?Y[pLaQ5ɭ-iXS'efeCO`NB3Eg4\LRKNj]/`\X!۱^:KmCw]ji'!Aa P(ϻ RhԳ6ȶ KDdO܅y:oL*L{qG 1(gD |QЭUC +J$"Z%Et|OwIB?yYO IRyHFÜ.ÂT^ a 1'96(VLJWOR.$W<jVxEnu|镓'-R ֕ כ`l%sNO+e6$+,L5A: d_c:m8>p!1( +b@^d"Fհ 8efE#-=pv:|OB+9GAx ;hiP#h/,y2q~8DoGy[aEI S'_r ++lH]#nC̫/$~@ ѣZ_`r?1.݅ڤ*?% D#}H8{ 0)V[5wJ*P^N/)%!YpqO`_f5 MЗ0V֋&Iݫ"-[^)=*Z~U;y36:EB VkˇFAtuxlrXQٝEu?S}auM>Wmx@(+03߁LoNfgNu j2dݰdc4:z9}LO Zm}~ j4g?ڼ=ʪ'65NNڒʼnDħڥ%$Ũ41 ">gyc9b!i2DÙ:Ҵzelli<9 =w_,t[j1&H"xDշ"Pˏ45cRX{('AgIx>{ӛTI @ִ-(6E +K~e厉AmQD:  +8 l xV)R{+ll硳e@lQ?&eH +LmC1vIL'|df)泻k/K?MEwX>qe'K k*M ӧ0Vr`ad}ӫJcv0J+7LhkH odslV@%q:d&] +mu=YgfoI Ľg|^of!3cLrem,<7ȂD +*a"t$Fk%8є^f -xa&1lBcoZeEkP.ޙN +D%S1mܷaNfY߃& O.̺&)O7dgs!yq$wo,ðK2݋9~z5[혠l*MDÏ 0=\t}vA Ĩ.;􊳩դϴ(ql<<ьR ,}<66A=^o3E+#tr"gzXn\M`WO;/%q"+ՎleU͟TmM7Isxzln%!^Y"u9]fiADlYo*Fv9<eA}$ hDV'PSUP!)qG)S\ve/^-kH3*:d:T+~0^|J^!հ0o9E| h ?k] ֙GIrb/l'U>$Kڤa:=D^_yUˋ~n1WNQ^,K Xat8ώ<*^kŔwafLҷ ։e@[ +6`ŕԶx82~`e׎T;¶k _e-p_VَAYkY9fYz|0x+?7a1 f +Q[ƖDZGnCmɠ7>>w+$,"~}?ÖA/9BA'Sd=H6O$ _<8[x".33Jރ?j}G^lc ˪JW2yڻ|L_7TD +o0GߌC?9^ܣܔz-z -@v݌βMW7Θᥒ\};hV͖ϰO/6BHiMXPmژmwc4(=0>fK8я(yKaFzxҲ \wN##zv}!)Z +ITf%kKR2{Gp}k3gZ[i-2cp$[xش@3$f*pfJ8hؕ#uEi:R3K22n.Qظ/{X-'g:&Y If}&,07C*M?2k]bKd@ȫ: )MwGҫq됚&q^KZ75sam= Y") .Dz~0$A#֮vGvV$~eD6 )m 7V +$ඐ&ʅFsGE2-@yFM[Jk)EU)D"}c5f:#mH +^Gav:MrRH%,cc;"gJ˲#o*uŁlV!u0ז IYKz-{<h,6_}57*#(>8sԵF4h 5WnxMT)x ]>Ӥ,z-pI64= !$ygl=f I) @]rMr=,8+ɠQ=${Xru֨r5xǰ>T)Qd~JSMOM&ّ_SGhi.q!';.@JξHC_̘Ĺ"=JʘӲDE l劑؍&sAc$e,+{>u8Bt==}a%ܶ{ v({ ,עViJik*1Sgd"}c,ƕ+n#JJ͐S$1P(IΣָktLO_ *Gf/wHɯMu Ϊ"H,PVA}5}'W!vط=A +[i|2n7cdkXQb,u;ȡEv̈7g4'G{Nes1n&ddo&JNCvm˦[~ЧXT|u/ɒz /x&,2U|!u R;~aUnΤPf_2 ::PiN^h4ץ+z)7`j6wO.I ;*ANQTo=iNT =d\b";RHXcwICz4!YH˹Y !{(8 #v:Oڏ ᠊G&;.L&)3bfP}vDNK{]Ur`4H2{ (W)h(S޺>SG\rH]#訐I-qԢnN`'Y&3mBYT ~ri#QwA{a`(mkZ8 y.a-³멾z Yl /\(ȅkw<^eQ!jo{VP P8v)YZE閈$s=Z $;T:vKD~?X:iՁ nHF gH =AE ȖyJ@Jx@^+:`IۜI!e7ۋRbc F1Y߃&FI3<Ӗ0 +rY4ɌMDuQb- dvO:\<@abS$ܪAJ8\╫QR5'ǰb0h#AF οBwnN +]1!V8 .e>KHVVv{W+k]{O $U$Z4B&y;Qwzh LkKG)eq"=&A^еD=VYPLKJ$:nדgffΝ˪q=BO }pr\s3y@1cx2;|x0C7.߃[M~nQ1bo-?3l0lnVy9 \7;v$bxlel ">H5d\'q19_IJ` u*?]VONՐRw&&kieqU}L.)h})^I+5Κlh{r]TrѢ~.BaKz%OS-7o zZ¸BY-/|*㠯391Ȕr͜A|Ё9{eN4$* 26- Ԡl1n}44G'fo}} ՁƲn7-X4T6;e1@;Od@g [ `bKtTh$B#ž޽7I/ATv, +媍ZJdVhtD#xfD 9ELJPe@dl$|yܪo*4Ĉ{SJHh :|CZYC[dXA~5 w i IjX%V[k0g>Gm]1QG("7l=ihR:nT6(+L5A7Μ@fWk=͌p'5jH\&?!n~^T_@0w W9G<9uL<'I!l`TP 8sEji = ,Zos#[,A g؂s<5T2U5wx9څy@f__Xt C_^v~u΅q[< zZ߳[<e~lvY>,W}A,OkZ!ƃehԅxeK=9Kk>%H/Ҥ,"\@\/ČE 2\[ UBFӊѫ +?C2I OLһ6:ڧlVz(Cj"28|'ȲJȉfNe d'6[d[,)E|~<023wpZN3U^9whP'oڔj'ju5eBu<Xhu:T5(ju_?R|Qʒ:Kvv.R@f3@կL4 A ;4q}8ȶiDIsY +e]|'gkA;F¹͔ߑg W0ؕI(^)}d#u +DZKP"gHAGt kB2ڷ٘;bueOD%d;M$ECP %xEgi96onjȬi-Е )܉7d3 9$&gLJC7D#D`*Z&$m뗤$* k J$ r!!jLvCJ̤ފ +`o,$% A17ŮGꎳ+مnf$U: $f&̸7DMH3d=!D?#ȓ$6qU2[^3 .x5AZOjُMl҆3ī^QV[Fm +6Y/{%Ht cǘx|7hV@|;]B]>ή~V73)(wy,GS['34uf^'GgY`զ!᤾"9\qeu1K"1"|@(j$PqI\ATN 2р4yu8o%@R>(J{l +P-T a3uJMZkӬ)3x4㸯z$JIxsR {O3i%ƣ̍V1jEƦ\ jzy?p^DW|6 [^Z*u!+'Je?JtNU|r%[ՋEUիs9~e)D+rs*^j:2,_o iȔh/g4q>Dx5#1小uty>Jyyj^bY. Lbǹao&D8AiJ#5 _#ZVTV/+I%/K2dzQ(옷Zn}ELP JyކqV Ip|Fe?맴uIVJ$z{ 0ڬ+->"5W+?^E#Y?~0$Pwe`LJ4-E'X+ 4XSHl($3j@PvzAvVߛܰEcG:~E7wҦr1H~8\dYz"jMKW3e|#3{|*"\*W58E ,Kԗ^WS/y[bG5L/m8SGAPz#5,y?d~ʞ,2K E9 +Z_00Ɋ8lԬ7 g!jl~?8ֽؘ+I"7UN8fKdrTl?/"ԻQ +DSE쉷@Eʂ-qD=MS KO2ˇg)nhѥh3S$$$k!N_u IUeI~ fkOG$2Iz4vR˧# ܩZd!:YzH!o`x + Pߕgm}8*f[#A׮{TsиqB%A"f ?_WVޣЗYuJ.UڮZ1xS.ID#{'a<c6YIば.$ |>gGG#1B8tcVf 'ଥUS~3{G9jbsf^G3Ivrt܆ +Š'A4qd訾k`Z~I~'۵4tL\ǑG( nc$8p?ػ*0~A/n +*K @N޻wR'-7 9"IGfՕ#x2>f I`+7F Y+Ks]~}V4Z:mvc5~[ ۙ~REzdׯ:m~,X9`x8^}pSpQcvqG$/~g*NL%T{dMQ-kAV[硰4HPwLXAW`ղ(FU5ۥʘ1W^=T%9sP#=񒔾d.wL L+8 r;V܊l!@!(:}gBk3Hva;gIG_HGy:Su&(79־[Pg ! +dUїƒCRFI7K! 4Ml$Q%8}=sF]Qa4:4en\]trCgtU L/vbMn`]'9H4 OfŴg50 +JV$Ʌ +\K/CK[V!sL{k=_O읣򗍋`z.<'MB'We)w BO2B:( +[Wpq!W{k~ՈJMv>;zN?fÚ.ϟ{bտGz{6NѼLf5H]%,*5A7$Kj8li(9J♡;& e.7I9 M/$kr$\îk.}߶rZ/L #!ĮHP$#y^G_U¹.)G#dKomgK1x!?ol^G͓}+ot# 5Y%ؽ d6\7]2R%xkJ v!{UV%!ɲ>%0@SC$j@]f핤H -yrDR̲L0Vz 2_i&͝\eSqErTpLy ҩA̲y#4vGص;wb>۵ٽV2 Ձt4Ci:s3;Kizrgꋆ^b*Ȓ„%qpT4$RrlYP [Uc39.KEgQd|WW9CfU(JY~i \gU5;QV\>p6w DCė_Rhi(A̧j]^?L&Bb3*ѩrt {p9^k@ƣ"{/i<|SM%a[ *?qOoS5[BQ]=w [nUgSA7%={CPs{ƼmK0)'1A=LKPcU8(%0 BeJ .gȔ0 ,`R Z +B;ӼrL]K!Ѱ@<-? [XՕ hh$uɬA|pzV"yz!p*Bq WhQS@!p% ڃGr}yʔ +/dfT.9 30rkMDrS9mEw*ؚQظ +")McG)/}/JA}&?ћ HHY(] 'OL,E\kM>Dwkb}ΓjP h'GiL$u7=$Qr\4{;QX[e{GJ0! qm/Fإ@ixA?,5B  jQ)vyM &Hm L;! +T~ +pKJ P֙1H~0!Լ-`Ji`IZMdC +[ƭWa[JR̙m&3_J8y}o}5:??*;<̺т;_LWX8E+)Y!]PՇ%kL&s(Ȯ3QB ^L^ +^1jdNFJ>_8ԩ{RJd6Kؖ=v*맡l`.:XOCi3Zf4ÜoJRGd༒O".y>V%j8G]lSWe +F2U>\3 +\Lg[[l}XqζPf>S,'}7Np懢T pa棠4-$vkŞ}_uybg^a,Tm` n^[] s l7mδ Boq|ۆqd)Ȉj B^~Aa&8*qEOS%8~.yE&DO Ƃټ$|My!zȣ'Y$ Y9«n;YuZ1ȈLDҎ2l1!?Dm>22j-u>eXJ+8i|Bܬ5a@M:yb L2lFGkN*ؤ0 Z`>uGᣌҴ+O +{_z0D)&ZY̙/d`}"=3T4Cp $p +5@!hpP8 VJAf:}E26N +j*0_4$HثGz;8WR5&TL++Z% RZ/@Tn + 4 ,C`߱faYq2( ʁDB%&*ȧ 0m.橰~ś_m?Ȧy;iZ m0yxre=LCtBDOvAu,d^bfoЛX~oy_,)\|>qJIF^d,х6WJӽPT5^ߢ*9 h"Ak[Z5^_/Ry=$(?Ϸ ǵ4;*=S|iS<)yU?}ϗBwb/bgBgwr[곉=]~K"'S|wb 7N̋iz,/oJ"DwaKC=' [@Vproa)am:tn:4HIdjTH< ?Lax.Jwo$ bT0NԺ>,lSEB%f)B7[o~;LLSdw-l=2˷ݶ_s +]H;_ bla|p1Fv ɖ8Sۭi:j.wƦ)GdF1J ;REge@ЗY.ԧxd%Hr* Êzi'I(~]y4%:t} +[/_im- e`3++U? +$ t~ռl8}>+1h%IoH|ոa*kAX(Qe̿ m4DW8>u6}owf7iP;%WSw\zɜ\;T +d%^ .xzco2TC99~" +]^B 9WFR+ yH9f#b@>׾=4,~ Tߺ<F Zw~\:su:onKaq( ;@Rf2o@s~v OVy+/Z.ea|w.k"HO ^-x6EotSC6Zԑç>W0{ɽM&ǂיgdW"m^Fw~=L/ 3Pi/?;g=&UȅEY{2QGŕ Áh>NCDȃ&M{γA> b=8EIpyMLzO-,|>H> PZ%wW5?m5\e`E.B'*Sb!,-JmWGRmf%[.ݩ<{(>ҠlYe^fc\U,\5]%tuݻΑ[W ]ٙrz:RNa@@}kz%]0Xwkq:"} $.ZG _e_db%Fb*M7w,pyX -DӏZ D1E220#^iK5]G"\Dp̠Р+k@+zOUo-zJAuVY8^_=:9KWT8YGL_^ +ۛ{L.E*3`MJ{5wşҭ+;ra_gkc2xNƕCMTcK4V7tnQ,r*_ y}s<.cRuAQ6GEnУMݝ(P깦Z{@1 b+ЌWLؿ\^:VNDnXe{q#L#A"keZ5<H qaq:aZWiY1@`iZ Si K@bhW6yz鈦H-J۝{ $s#E;#͂&g˫AP`H"PthǨXm<9){'o]mY lGsDǞz$XUwNR +!:H=$\!X!pJ `:e5&".tTXay]7'Q?&k==e)jGK2cXf;?'̽FlU8҅ +a-4s B䪍&s)!d""OȌY/8Rr`x&ru#+ilC}vC{[@{sfKRL4ST{ud~wAR]cjCpDASHU0Be Tٛ8ÀEMدnDvX &O`(9gƫnmˮf\^5!Ӎ6'b҅xc7&[_$#;ܞF?`AxjpQ Ed)2_rGnQ|r|1:ӀO@_]Cr{ s5pjl=*6?:?l] +˶3Hh 91|ԺIFuSԪ9]֕%5 e%05iU)Zbj|& \8[k +h`!]{mP^ iBfm" =m7{R=:6`V } RZN$f"w,v>-;Z7tZj vA]lVmT؞F~d 9_HN0>w/b-oeOB]!z#O؅LeYOݚrS~EҘ@q⍔ˬ!)=\ceZ4\|l~ ӴcC 4 Q"3[C=1J~ +dGk3P)BKIQ عjJڬ5AGb^%ϝNb"\5ƽi0td= W). mv G+J_KǻͻȬ{DqV]Ȗ歊٠6-@́I$FdM{ljeNՁ_$grBPuEVhD 7mGwaQ+(HG̫;Ecn;7d~2Zh jGLO}_ӂrZ<es[ekN/e؄ʮe{s|7fzQ~3=~"I L;`t_(B+mЫ qtgz{KI??s=iaJ?6%J[l1d<8=|#>G 7udrz.<ZO! »f"gћ@\e➁MRռDUNbslY̢ou3L?IZL e%M}7{?n=*ĕe nzêwm)ozgtgi9BIF'm0OpQ6*pi3** +Ѽ=sYiN6 m7AgD9Bn5F#au,:soV4.(XfړY%&vX@Q\Jʾ Sfl@T/H6Ƣۏ arʱ l+ +T-jbd8DK&s˅'́YKg2 a*F<ʂ ,{Vנ;Y=tݝͫ,So?|(O2xc׉!i[/im'u#cD(H=*}<yWCF%'u0 4|йBn+o +b|Ent$/`Ml9\@ԼB|tDIwMlR>L1]pEO*NP#cƥh.CA.YYG.TE›ɦyəؚ21Fixs&(wɧe˘#4D:o%\SBHL1:DB6nFzTCɀ.Բs_Y^ qE95Mp%gU -Y@CʾS.UmM w;&%[I/vBdSWbYOopV_ \*HlN/e4g egʶG}桒ͼ?胃8ޗaf<[Nzh=i9X +& >Gu|vNYKC񬸅y0H:(J7ssib)ouH1޸Mnק<7`xdCJ @ pxy|vᎪʸ)x>|mo!ਖGUѬ Jp~*:gx4/+ʯRfTsXH >}+&h|)O{ΐoLa!AD+kGjbc*(ŝ +;BV)-]P~&^9rWJK%=f?C'Fck=U>&0_iӥ{>eB3BA;*a~/K(&fOSJjXzxA 8!:TJ +R?~a[?> Wڍv˴9|kgDV@[\l¡՗ !R@QƪLs63l :pЎq)sX}k_nbm; e<]OG[sAD [ØhxuzqN~XNSc<\y(ڼ )+7_I aVݰDJ#nvz9)!`2 +endstream endobj 26 0 obj <>stream +HtK\9E_QIGMR/2#EIį~Y8/'- A,׿ ?PU嗞"W[Mn+^kGb/_Clkթv`CTEgKMdӬk//⯵h) ^CWj=|`뀈hîi?nb$&di2w2so搱rc#orz8"qM}޸k/s S-7Y{~ /difb- _z;vvFg}- o1YԄ'(^ T!o8&~ wlY{> wO1e׆/mN 'nF/?0\|-m@wko7ey-T9M(? ׀| n "ukxD'ZγC.c(6a": Nγ[5r}İ ,/c9I2OxȞ8}aM!eJqU {mn ?oYp#^#+do1;D>+_CHn) I*nh6*!02L3al]}#6>A\)ɪY&edn8l`3SUd!}v4?zcy ʬEh90m(Yfxc4Uxn*gjctNQzyͲƐpTJ(a=zH3x+;{YGOH;9Nw l?I7 %4a2}bQ 1d [fi4/vtc "xj94aA_{BP?[6]>UV$U|EdJ.xZgUiwjOot<S(ʑ̘hHSk7IϦG`|WO 5I$& F>'}CyմV~hV|"1%2ep¾Ze3?)1ã#)'H$Eo10='tGl#o猳٦]|L0lew֧X qD]rxz! + +-|e|5}>oAr'gZT @&)Xd;,8%!&ͽl[Iٮz?eyR?4Kڡ5Sff .F7Q/͕?j51B9'903ό-x{ π˲/<,.؊pMȔ&'\SjWSl^lwPYAԱd)f&X03֘ wiO?9(3v% LmWfFyt}즅@qC}x>rkM>=O@9 "]oH_ˮ;wT2lH";RW6lyKr_Xo Sc.I!PtCfmRńr&@G/)g C0!RN 0㹩K=yQ$J|.i(8pv{Jss /L'|(:z mV˨5^^$O ȓHh8>GQ"ًG &)*d>7n'|e:2";#v!hWòn @&euxސ3Cxe4¹==GUԬ頦ұ{%&O=>" nɄv_Aqɚֳrһz+E'YIQؔ ;}Mp7S]}W̔U\bũҚdL}9|"MsW-Q TެC~3ƚj'ekBt-N?M1.~P2F)(ZXp^ +wYSg~UظmkUT!fUEWN֊5PO^}-iKd^KѷpMNdo-3,xdhK1'婤隀nA WT$;%^{N+$񦈺BE=njdQ~ċƲp4Jm!i|IU3ª^J1˯|ʶdA6خdIrwN!R?<՛oY5C*%XX6 4Aԥ48otM=Sn^d۷"9vҀ}/m)>/<˶$C)NrCDyiT),8pXhjaL#Q m_wmpT` +l1͵!<5]q2a&y]byc@wl Q:, +[cdz<9xW'MlcmxZ"=G H0 wg`7|*V# DzelХMnYG>8kyJʒaǍW-Tcy&Y5oZn7ް|| 16sPr-gHљ1nF-vcɀ\LNj)TB;XH\6[[ddo# ݤLFЛ=>#P0\ug _pt?Q;8f +ԡMIuQX*v3xb>uNkʎ + [#SfE1jaCs⛭}}.ê+l=6%HX{7 FfNQYv<5@f$ o+In&=(),q?tISa^縅i!A ]7N;CٔGR=x8r?';HSJ׳ȔԎH G]|3=%(m?%Sʍ D6"nF.C^PJd؁vm*A%: mh,f 3 lu c$[a :D@ȴCg1]^6CԀ{}+X,0dطm +<B"ﱻj:ƕ!~!y OH|Hm_Ɉ#VkT+5짊cHyŝF6dv Il +CZCRNaTcQ k9uEG&W4KҏP6Etə5cyvmש)12X췪E8?9'0g/,/)+?K6[3.óR[䮉CO뵂̓29Քx@DƢrpQO`6 Q4~Zc/h(NQy$L%2|+pLÙAE~>W%:̴PN̞=nyuc9Yg/ri.MaTjݽX,9J_ =[]:5}ʿCW.J19u]v-oER10 ~dB(z?A׊ 7@abKLW, &EA]OO?}@UQ !$KR8)5CB(z :"](v5` ]4{Z+ 1&忭_[}) .{ڞ߹¢d_z~Q5gY!ʑD! 1.K%DR6+zkIWNhDwWbsUw=S;?W;#/y`i)d1u2ϳY +lvqå22qS誀d`RMicA.̛+@爠h S[C5#2.lܦ$⣎hWXQWXx/Kپq%HswqyȑUV!ZbWBVq?\hi~#+gZ 9Ǯ@I/Bw`NYx7'tĨ1bNEeme0qrL3/\MK )ZqɊs'"!2"eIo%vVߞ_3eN6azñ.\2c8Ss[Lxa\E|8c=+ltYv#2HG.yv,WF.([_,06c!'KjlxPztLrLkvzޗT.)0#45(;Upґl#GK*aj '81'}ᆪabZi{wvs}@x͐,['bO8Bi$™ "6|x2T\ud^T9Sl>0ҤiƩ 7nMu7+-np| +фvm3ۼt|jOpk?zPL (#kBjڜL]v&l /`.%DŮ4Q٧vn 9V.܍ 0ּ'tPbѫNj̻$8C& (1esJ*wN԰srq(b~G >ig-ib/YFA'']l.0-dWC|ff=@l (-A"Fֵq(Nq NY5ɇ#tge*K}6 e"$b:ɚA~H".a9{×1rw?U7hbò7W+!y9mqWa|nGr3W9]㕨PfMn>suRoCfγcCk},݄r oAf7ff87v3sA]W K ^~nDѽ9J=R5  +ܙ} +}:p/:0s?˾H/x~7NôubTS̐ (zĊC=JLOʹl}b/mܫKFnw O)-#Ҟ'l}@- ;xR!<{U<6}NfؾِbH?mլxB#!hh3鏎<9;eꎎE H/bG|\a<0'\"U!M֯wʁ҇jj0Ȃ>BRh#v >W6S7ڲ_xvĹMqps3DSqDuyԅ&H S9So<s@cxu.C:OechzWs)=oQ(*|;x'2eU LlUp;0kcBZa+gBG "LHMqӠ?ϢhҩBgL:(vޅX^TLfD,%qs.N~nk'־;?"QX ]94a69=۰4œB%4Q߉j5sk_ yˬ\@j6O.T^iBUh!-{Tao!A`슛ZlH0b٥ @ýBRYi2(L64T3(eS~:hnP5 +eV;L.:&^NTw| eΡ}pXXR7맦hz|N]p` nnM_k5}F'MZz@z:Pna?)NҜ ]vlT8=^pwsR7UF"ڟpD; m˹<1 n"q;t>9wR1a}U{dkMv* s2Y$`"g__dv}N=OJp0 Lb1-OeOOSTeUN0Kͨ ^s +D3}-4'q})1:p0~5us/jI^x.E [QZ͕ymq6c,y/hI&EV#i@f橚^%U}ϛgf,礇 (P^n%كkp(X|4 mWg_x:ڙqVTHe /_`j Z>Ͼ{w%G:M)/7=Ӷjە^8Um_pi iWʴXUDWCPpF\d egmvbύUfsbEݸ5M +G)TZQtў4҇ !iCfTe!E#.?@{t㯺$瑢v dC _mKGZ΁.Ti crg(-UK;\P7-p~ʑAM9>I׳W `!jnnN3JL܅0m[cutl΍pW#FCi?jr]c~&6~]]izt xhEE:Zn Iwz pw&6cYt[ri"(8$ܧwYkFKvI]x@}}KKoJu[RGՔXR #^}unj"nLe]:6*gT}F5Ⱦ۴s$ٰ$d$,_'iXM %( Q#0%&?ΡͧucZ?;}NQQdl :IoV%gQXCM 0rr.ٰݍl)+AX]~5L3fQYh|HVw.v1#EC0IrTL dlVrs!jO_(2a":E9=@pȮozOvSb>OGlQOb6}$ZdH@8LȔ3AgiP { 7rW%L\,2\tV 9ţ+&q[\]8lNH+D웽aU)$՜*EbMX/q vV<-&1@Wt-A>d_Xc`¬sMͻH MSevɋ/?d<;"o +H2]*g]'jXI0" lvB,R$-d0Uf_pw=Ѿ o/qO.'Xu)Rbq bU}`i$YǃhMyɑ|5Aq֏|:^z[H3[t?5m^ SU LA7{PmP|:PzM٪|17%ujMPhÑv>Y.Qe2{ВԎ|o V1'i &/IG]z_͈vx 8hDİS;/#O5%B}]kAϊzݴ8;E̩8JS9BV]oWxJt"968WzpS/J"6z 8X&s(# +;N5Όqxĸ>1[B)m3YC+rFc(H<InpcVT{+I0kshR5$'1W,W!L'(p*̀҅u]/vI;3]3̒^$=6k'ͲBX @YOš,PsYօ { +BqA3*Q&Hj a4 b#4i*a\Baye;Я&( U4=oV,䒹ddYQ'. U}Y&~o`|l_BDPWF}ɱEH[):\B.ȗDO@5MyA)/Dy*hqZj}wI-A2 }sd " 'w9(ob£WIQ~?N=ZEg5N"E>1^fՅD"g|4ne "I[,Yh)*?OʙIYWp"tU}ت)ώx3Ʌ0 .ѣ0ʅ腐&eDž275}\! +w$5_$"C9Ѵ~73MY/4g;pO /\ 돪 76۽k `mӌSwߍT0Ňҏ|Ҙ/sL.,rJr&7z$ bXYU%&je6#(8@W9.\&g 4IA z>|*zlhf̮W`*"Ճ9cn֕ Q.Pzd]OC, $^KnA-ݛEo^%m-;| zS6WɅʜn`{gTiYrvxuk%{<@[뽾/Rxu15YFeE* |["e&̲Ej/qϰ k8΄aIĕ֚$gI qrȥ_2ϣ~J(فB2Ncq1֔rvxtŘ8x9h/ϥ|u;dPg6XD^;-Fl&UZHsGƂ/uwG%xB+/7~\E?apDOxnS@彉 Qh5tQ{x~>>/퇄[>hS_ze}I4ځXþ0;}0NϽ;ÎPZ_20LXk볇i'Z +y*Ӗ[~kkԬ0_%}QfPfר֙zU?#2XWFU"wi:?)֣d?S'F% H"N`K,b-B, 4swؖQIuF5K@4C+bA.i#~")$] YJcWT!-BpzbՎAy`j;[)[ JM vb=oUI9S]&G(/bk#}ps|NcVptKݢN}3α ,T!J[6l:/I2脫om7}8W>&V9afI"GYiـB4rn!GK*kZ 9Ⱦo=P>\o >rU} I~ ymc9#E;s60 "+c"H(-óBZ"h$ST;NXʝ +kB: WB 꺎{lTrtHGG!a}!ɥ M#rpfqq#f#ZeN?ֲʽ Nv+UAB6d>/[̥/30-zטumT;T'MOPIJ!? "h6 Zkh䵜/m2EH{U.N1S}V-ޙYKxjQo)br rI5¨g~ͪ9jl]5eM?0=U{̲! RAw:@c;l^G/٩_>Z+~/s> %ʍ RdFܖQV$Yxчh2j'ЃH6u[^Gs.]J ͏xK AVhx0dNL1} + `^8 P>v~ df'1AA>C@'n©ҲP?TQdL6yS"Q f.#I8>9PY"h8~R?L!$=LлQ ^q=#|nR 7`7$*w%5LYPCkU6!E9py~GqiB)U%z^jgD-i:0by1j5ǶH _IJA˹-ǐRIEqhcw! |jpJr{HjrjisCx))zglu~$ +S4ru1Kxi9gZմVBRM?lZ?~tXuŝ:+ &qҏجX `$m;b~oM:\O4N_ NQ u4}nˏb-ҕRGZ?l=|cA.m>6xtF᜼B6J' an+vT^KV s5:K:wփT's6(W93v}ZLcq[w6JGdACgBf+G뷪?c~9Hd] d`XQ> *ti 4;uE~YIS qjfM$Cm0Bִ&^]lyl]46H$NUUɼN=&5(CMCAFUQ;/O4(A&D8k4۽Qd8䄯E3P ۓFGԒd A 'R?49u)ͬ9]#MYZ;fiR:`zJ;|W}-g+O[\B.Yr^.Ѐ<m%w]KM.4cH#+L~ Î呆+';3GORٝepkX)$0A7viORaW|8O߉׎}Ez/^Lcꇫa8Dl1Rm26Z#Gʌ'w2 5&FqwH(kv {:!F +<ۻ1hn[)yXEw3U(J6jK\HJ[㮴q q+mհ k# +y }=nؤ*EL XX`P8Έsmh{;"Mqb=ِrܽ>fX'=ξ$GWH 2 @bbqbNox9Ȉ٥O56SY{l'N{A/N?Zz( /k"vm# .2 wG{z5jzV2V$uq: v]ؚCH?w .T}> r*jqR z!+,a,Nwvl;]~vSz׎sz//Ż0l R&s +>|L},Ti:(볺 f/X1x5nV3Op'Z,>dۨ]'}&vgyB4BV>Dݱ{)KxBџD3#'GVPc!sGrhX=^Bc<5q=+^Du>ESwJXFmqt$jX@i7 7 IΓe!Xd0"s@;$">.11R0;&*v* +=SM9o"%8m?kX*},11 v]ňUwȭ̓400!R3;JTVbH-ByHAV9Hə;Sx=-*˜f[b,Zٞ#NpV|^$(O|RY5]$sڦ\C~!^翾1U" MTp 3Hq  l-U|-~F14d7W>Ke!˸GaA Ww,EXR|MttƜk_T RVLOnFHO)NdއZwtGEF`-a^]xtbf@ќrؙ\T"\Г\6$ޯXWl~8J@ūnL(K;eDYay[#+2Hy+;^[!fK6B3zT U@#]hj; +~.yŻ%+][,C_HUvD,?i=b!KO`v35׾yF9ȠfwJr}0+#bV,ϴw޽Չ8.+ř32/:5n)@j^Ka=J}^&K,dXӹhtH-l[UoeYaF I)6E +ePE?s +lﭶCy"|r`+|o;07g_,nʷ؁gwcTbVNM{2r +}/6)LHVӛKWdo}(hN^N'Y-U6Cv=׌,‚-/úwpEFa7Yk[O\S1ksax iy!e?\G?cR ^/o6{i)1ԜҴyO&1ҡ5٩T,R +=g3Tz @J% IJCt}7qGY7Ľ {/}k#p;luy΄ +y~ҼDL~ %\Xe@u_@{gUtgCE7{\eKE6*8ILۛJ(O/tUT͞5b >l*?)KCb͸zEiC85:4B(E4Ԅo"xMΏQ穛[ȿ@#m%u}*E?ȟfPh\vIǿ_yEU %UJ$җc+n .g.o"c8/)ЇP^XJ+>c/bR,Y%ӎ$/K-6flV|m 19f|iӫ7)/n zy9v\fNו&2xoupReHV20g@fKa;zf>wB'2V=x }{ңdYp!cjiymBH55ChD3W@gw=0@VL [aY}pgiDzxw"$>T t`f"T@@K>FF@`t w>.z=h%I!A9W^1nl`StV^4:S2O[{hhQ:=|W u!qyKgj+Y'T9 蝩BHRMmJ ûG| ,$HS #exS IDUSb?sɌDVRU2냴=q 2gad>0?C7.@L27f +d{z-lײTW kpA\H n#} >z2r$`%#Ω{ opO':E洗tN>e,vp!=EǥųRd~FׯE -3 YVՅRc3ST,PZ)]jʥUyԾ!$q#w?qI.)Xv ͻM!gDlk  _^Y9[w7jA2.sUzDDvB7As{p&,^Wݦ+r6 ( "̡)M>;O")YzJJn[V +az+N}TUp ,Gs<<8,0Q&B̀1C $2e~tv[:~̑7w:CUrٽ#k*Pb630<2 ql/nѲT!7롷q)έyж31ި@P&ubH? x_:GnO-bMd-J"Rw&biq+>/ ĸ=1G#U}kܕ./hw{i:F!H_؝j6YcPBev_SjkIy0d]~tAtm9ve6vUj D,N]_{ $ZNs } V"@T2ȹbZ{PN+A鮖\r6= +ȲCkdVEX>,d8'pI?k +eqެ2AM lG7\*HH[~@ΔQrRY^nujcjΛO!yyuUMs˔- s0Y5t(j s ++fL9 +ë*Pmj|&+5!k wQt ~pU4_X]Ÿ$G1`4Tn_|8< d0g"1(;+Mͯ =zqN ISrr>t\8WMmR+0dooU<]ۧzNī, Q>xc8G=4f>ST7S +@b(m5l2M 5CHglJ_an 8\ +m/ƁK( @  g}W`Oi#o +lV5f8wb/ɺqTu[%V(ಾ2_a*GFT /Ÿ8DwQhҬ0o߄\oE +*#K~5u˵T+tܲZd1)ĝ3(H_CXߛ"r @z{(.+УS䲡 B}~xHG`H?z~~HIg"3 0~]gZ~S"NGj vc HY% 5r5=s~uƳ bDT|q>{tg;|ڒh4^yQuO͠T8α+QӾsGeY«72}R[6j7w)綬 69qU4?o26oJH"ID#}E-7:6h-uK_ Bo[?'P9$eb+fŨ1֊.E#G茺x%t 6um8"r0'ӂn\.ČR9a~KJalEIgHi0ړR#ies K^%q`On`t7ni:-Sc~Σ41_OpB8J$7Ws=n48"pTsVܥGR7[H:m(_r]ҢėBHmQ@9Iۚw^tDŨ%qgL::dߐ?\m!%<._W%{:/t}@L5[WJY 5uP+La 2 +`<|Kz uImijG[ol\4OΟlBxECxLׅ.i!Q2`ip E7y<ͽOs'  4O]Q%=.7axN-ˊ`?΄Ω-U~wT'?k 1QkB×]/졩~|۴h PYcw9 )X?лiv}!%}WSV-.OX2~]rYHNd(8sJdN8v2f=!+nɞq7i"6s" !ɇ@L*HMnR\ @mZf%@ЧSۃ1Ŕ]\A礩ʂ<$=AV#6?M$<9'?80/>eYi]t!37sćsY |H=Y[[yVkl-ͷQ;D.K c@ e4mDNk  +1;j9od*21< llq75n^ț˵ĨU,K®򎠠Uݿ30BT'z!bqWI 82j=% kJ[H7jh٫ᢇl訉0WT"V~+A!sۼUԧA:].,:.4tgIÿB34<%8em.aޜL&-7ܨhi)P +dK + tylUjp c;*TaNe["l^Q +z8UȾR_dž{{*do +R:_]& L#ibIe)6BZ\7q0RU\`6D3" M< k\7HM^36[)ofBj9L$oHyBBcuLn V&PKOAG,g-_UzFm[t 0ʼ +endstream endobj 27 0 obj <>stream +Hlq ErJੈ/x=Si6??+F//[?Et5 ?2>UfZd)NRR*"蹱Z@l1-_$~IrQvIK6)w΅M*ƹXR꺴ȚCKlX 8j3"1fJVDP0HYڠ$)e$a8.ъ3H +N-5GU>r0~>b}FXQTJ 'y*t&Ls^Ee/L +MbNE?cjB 0r Ga!q2D +)q/Lo"EMb 7R] kO3g+Y$Xx0]>:zUNZi~!pɀر`-̝'^l.oMƣEsemrHf˨lNbB'!Y\Š( 7+"I'A|^Si`I$|Ҟ&5UOu*gLvuʓp%VZ =4*?SvS0{@wNU۬0o[gwG,=~%O~PkĞvH̞P_n|.` +8Y V6 $ܳ6Xiڊ)HptǛIWv7 +fnXH̺WXH|Pp:{[}[Įk6Ds)Z`.`wu +uvkY0ͅ3irLGڄHЅc&}e^¶X(net/ $Uem/EhREqd"wޏF3 M'Q=B ? uo5޻kgEav-G=&Ɖ\mW=huccQYs&Hmv4n뫃fȮ +$VXO7_V-7vd${IO09\?z/g8~9::FͨS((NπP\1dn *|z?}sٵcmg9E+owV3?櫖 ɽߪl|Vg'vLݷ袁Uca>cI*y`5zY//\m)WCM{d?Fbzu\+⃵Qo9}jj*tVZu+aMܥx XyåfH_t$U09SO\7Mȷ +>u<փm +(0\ `n,|惟M WҼ~箉"3 ~@{hg--&1+/6 +!6syQvƃgwj1EI׽$|/Z+bNl?3\b,mUmu*6n=Cn!?—T'OvN]%fCk{}ҍW7e85)I.>m/ Yק -2" +gٍ ";qc;ڱ\r +br5ބņiVTQJ쭈-CdbtUߴƴ&98VsՏD7 b37SZMw(ݸ74?@ yA^K3]::5G]U^)̊1Ud.MmWCY1u>|/W]4 +{+ZX#NO*}M@=jH]m>Hw ըmzЧ2wIapʡ|ІYG+Z'PC dߧ J+=;AHNpYN92eXd?AQdգJ* V0lDo'9" +Nf؅δprBDvޢBS{u2g3 Az{j۞CυQ}쭊a<!/r$JB oqj=>V/VpEB$! &,RQ$:Nbc/0Z2X۱.جW$1а<R̝$o OacOF`@rṉߍNc ߨ#.ƈJ@ٰ?.ފYENzvZrpTG};lJj^)-q&ଓ:SQk &,7U-u:F4Dr:q*)>IEx* VG%EJ)'lOļ?:~ Q N4wo!>A7Pq L%)-A=% ۟@YGƄj(kHg]3ssۯ$ݰR9Hcj(v?Z;=c:@Lc zl$>=%|1}xzC:I<S 1⪂"%R-os՛Xi -cI4yƅAV`"6q4a҆/pz0\o`343n1zA^0ޛ25%rRP7Rk٦B4 BAys+M + 2YrxuՅUV^F+kNSeOĐ/9M _VMp[JCG9z-^ԑ-2+砦k i H7 ,&&V9+:X} cs8;ZG:!ΆjIYHFe_\S0 j_%<3lR'dyƲ%5v2f 7=\֝td7dAKLtڄ9Dҁz)A&ҵ,+5d Ps8?!ю̜[~!y}"[ғ&y)܉utH!5: u`,8Iv7w|p@a D355< :#MA*1hN kNJpľGU"J Zݴ'8*"q~< B"*DXHy`M7WՏl'+öʋ_t.(1F-1_'dEzXkPuꩇW xY4{+\F@ȡUJurBncvq eeEoס p>W/!~P+6g +/H] ?/z.s٦$V +@ +<߱^=Pg+/ZհU^"D[𚷞 Vyi`a"YLq|@|7)pr3>DO$)k%19WDɢ:?brdVqMՍ*-8.= `-P  aY,CAcA(34OilNͮsUK'cr(8C-Q̻m^ƲVەhi [Ξ ˓ HcZ[U^6߃ZT3:o/Fw9 ރo}"5vΜLތJ9a#Tq*\kŒRGY񤶰Ji|Ž n' G0q/=jھNԒ2 qƚJgE L>xX5hd)ِXKCUtb |js2}!82gPq}n䧿G%>HQJ7g_^کXk--Qpi;+j~Xr1YJ`DIc/du;FUҨb].pNp>~j3|@qT ELE:)##b[S٨LzRHqM3{|W1,R; >,+G6pAn;SˈWcܩN*6tOu@"GBT0(@} ?qߣÄ PdqG wv@vrY4~2qEAnA`9\&@j>p"ԤNýM:@X?i5xd>9B"*]G!cXL(^sX/^N( k `Xގ;-b5뙸yJҦe\1s|p/p_v@Ug;F;]u~9+QnU.{mau1%t~/.DHX ⬯0eN\D!Le"6ƗZlA`}R-hs!cy:B&{ aCb%6wQ"*_cB^/x w +SeBT؃i\:ٹlVԦ=m'$UGD~+$K@LLķRq^ 9x[`˸a +gy)pr0rq@Dc6Jdr'p|Y_wg2ztu{= Yn4"*w^치qyx 4rюի#{d&h] 0pU:nZ,;B !޼K0|1LGLQLp罱̉{`;Fe`>tG9g~eAVDT{q3%,9gNV/0n NY)`O+q kϟ-%ϠFkE;!C|&2JbH=%| g@;.BR}dZ3a(iԙ8!Gk;2e0U2cw\CQ)a` mU^LTuk " ʭVʼxXJ)*"Mc͝jVo~k V8A2ςD&6V!kҖh%Xş|E11o/i?N~JO7+L,"ʬ+OtEN@VemФF̖蔎+q'4g//Zȇ2Іg>Rc4YdD/U-D,NYl;tu@LD'2FX5*PXag.Sj9 iH/\Ŧ“J qb+a)jM_?@rV5F{A^;a~vja&:픐ڕ%h_mcUuQ^mw,pU\2ÄMħhG-[N*5M)V^mV\ Sסq'o)Gd/xŸSE PYJ/a,^-9\tK~>m[7H\_ZOk+c-4Ҙ ™P599c GxM+Z+ /~h4oP'bǝA +<YHh=w.q dfrY4Zw1|ȸmŅ[ DբVڄ;s֭WO"%`XcU:zƅqB R;RFEQC/$ȟfa];9Kzq4{MOy9s>RTИvѹ[yasBD߂\0yd2LZs +_4Q9-~z(0j,sZ#As{⭔zJn)lCU7uNr)F) +Ҍ +x1=\$$0EL8rtRv5޺k8/p:,$Io9iYe⩩U٬@@sJQiI ,DXSma-f "i\iqB09o(~]; +&zRK-~7^ʼnST"Gu<^ذ:0vnFdh|(Pl +DgXw6kcLdwL=8HYRX7&{Ov{}d̠ 8F *H_/ Kntڌ;ds v::uy,Ԝq vh$ayP'ǰf;oDD.?%&زy @83gN2Zz; #J)s煝[-dCNb﹤>;5,pN OrN'Axi/<@=]Цy[4|}6~NeغJ=s\fL + ~OeW\9UDH۫/7h5wgn5J 0ԱEU?%@N4ո*ZXXS^؅sHǢS)T^* j$"Յ1^a(2I^)/@VdZx+ + +W&OZ5?yېM11Fi4p<9fKQ0l|"2^d9x#/|f {)S/.]Tvu>0? H zDFO >WXh,r)o5QxrZdA.d;3)`&`VFY= V4;)aTyopĝi) RU|/Q5E\xlܣ_;n`[5"pB/>_Z*}:r(_i8Y{vŭsF٩PFuMrI-|郐5 :zy=s` +TgOe"l9wJU}2e'礵-@J B A lNWQ`K39rD-)ԯ6ǡ\bRHuŝ͛/򽸻7g~{ڵȌg$i,*őb\Y̹rA2ls^My&s%I>rG`<R gX0ODBir(SsmYUg{$I4LƭjKl5rBM[ (=zKO .gR|QRV˺lW:7 l}}nm~hSʄl2 `}! >`[Q j }>_<^7Uiuk-tE„-z{e U/Kf}"Z/M]E 4CHQ a #Gr˟ G$PkCE(|!GULQynk#(XR@0PZcs0Mҩq=v9TQ'Ycp] dk#5z{r<@r%SLq*ju\ ̕{@B6,{ԧ:.C造i_sZG;1.ahx:LeԄ@~|PjIs ++kQ@DuFMcy #;ުeyQ*P}i;ǢI-~z@hP͸P}lg`)gM$27)n/Kyn^M[-\If شFJ%tU`>6hxhS:yix7we2]DQYtUt8uHq^`AN2X늴E=vld|@V5kz8"2=5K6zU \fMR4 F,SʅaXV'LbS{z\Df:A/ÁstbF%ŭRvx3#q_pl"$|KXh%H"-K L/zv;d)-E~Sk5D J ( +<;nɳBt%P z]ZHA%L)+laЗ/D5gYZ=QAK{j JO Zh8F$h"IߣgtE/AV&hc00K4_b vwX,+OZڃoR0p#) NR҉!]btN6.k{d1(rڣ)qifg*4/%[OS/v˚ +SQ?~ AGL¿!u3l()60nN<{\aT-[00ua">5ރ%6W:əٴ; +k!,}8SRgW["~"2azXOǷmdRt^?k ;RLW<12&Up*f&F qf-;l#*qIҨ&2!1u>u +ˣnE:bD@}e]6RجG?*TI|`D@ѵEZKGM}brZ*㎚c(ο8SfU0JkJwkcjPrl*Xyΰ큙MPzcC=BNGV)3PgM_zƦ?Ba~=5LDְ+Z9g}Ae~HOy$Zk}YPX7.Q,ŁlQkSت򮝎xjX dpt9խ8v%Ry\Nqώֵ#ܣC*z/1`}OM 8k7 +~0_ +nz(ƽijJ(ڡ&=K\[{:eLqsn"tud(vDӊ/Σ'PDŌ֚’`3,?"͍SR9Y'z`=JgZy;` x#%b@]_*޵%c"ʻ̰:YM bVSk cW@lZZ*JyNJ[߉ ~&rM2Hr7 &>pҏ'"E.+!ob0߬*v x~&2m ´REwD5dR*#륕߽^̧re0k:}6ÃV|DByiZ]LL,DM9&y k ߉ARmȩ&'bQ' {T!PFj%gQYiUy-ytDA257n`W"oms}l-ДZjђG ؙWj"Rr?&O+ym=SY1r&V/jiE=Pd*m/RT:EYRY{P8(Dy\÷_GSsg15-@fmql݇aZJ񉼉 +lvjRhI;x bϿ +S+]Ȫ KuIp6.ˆOm$$qB,C*q KŜ- ի1sQqbol) "O/љa.L`wBWoGQ "VF ۟&H$U,7w)G0$_eY!1 (v^Y*1֤_ƔS{VHr (M<5:']&96o<}JUKH6-*?JX'68ĻV[ѝ ʫL)-V$pb 'd6ʸf,'TN9:ZFC/V?EZ(8ȗ]k5)fڪ@1EaJu9um)+G$ OAQE:-D8ޝyd"΍VCֿyJϨV!f:M&Mk;[$Ntvڧȍ$dy?/}sS) ->]_ JrZnO`sDi?cu]Fr{*!TW|*]`bW;V\N8Zvtu=IH6}~clxp xJt\lH;nlPx"j;ڈ$H'`A벙ݎ!xڧJ6Ӫ +KU)WIZʧrI!#>BC: AMT ~?} s,cus wO ;"HQ] 0JY`L$O2moH="`tp<[qv:y/] "B$l{X;V"nv$IǺk4I~g_䬼EL8\S`s{?UH1M8D&Q?촩F-zYɠx2;GոcJ} ȝ}'`hCd|QRM!}ʛhA=@Ǡ;6T@&A{NGe 4@vōoYIFwO.Rm 7ڬu͡c}}" Սn7yRq*E@Dbs aTʾs_ U}9RZzqzC`1N*_3͕ 2^A3u +,*Xr9Ivu+EQM-'SC5 e/DOwNa "Z& j9D$z$J\)m F_boUʅ縆Y S\F&&/'v +)IHT0ZcvM5e2s@_M$ ɫcxNmE'.O#tX@di\=".$`鸨 <閸񭊜Z|9ZLGE U}8oMj"I~' m01H8m6֞2?dtE%:9OaIyc!)HBSCvVZehpÎgُȤ%KD#,G8'%]} %t|/bWA V4VybZIAZָ02Cfs]=}Fv:53'I:>p`qm&/H/,] 8 ^ KQўM= =oFx.Wϗi91?&?x87Tt rgSP/ ԏャ×)Y2팓z弧qK֡HlI,DFNׯTnJ NJ"/2zhv+}őzKK_]Є&)Вeu;Cj4̙ RuQ[E1YQg V}C-kư@ sZXd8#բZl' Fة+!ޒټD20>$G?c$TWE39HTUb>nhYp*ܲI~[RHxQ:6Ϳ췽b,[{&Ts<#!S~ iFʟKŹTI6B%)H%̚S-Rv=Au22){UL_MvevnIE4+?qp`G,\s튳x˷1 WtQ{l) +0fꬰD@^~8V=UDUWZ&9]c.pzqf->w$1L/KNP[SLcM1vk#}⸝~np;NQo zs`Y$fޡ.`h͜+$fٮ1$0B2u\KɥŪHpsj:q_?JpB~V".e';\NOyg~:$gV 36 ɑ:0%HHz{ e6o"39ݚ۴=љ=fS.lad#`Mov[[EUDGwHr#Apqn/dViC]n O|2[t^PdF.z#~'ai9D ZmBJMu>"#jDV)@kifqٌR@L@Z:n g'F&qU98oYuqZ(s:ZEw5RBCaYٛ)DBGBw o+1j]casak#w2)' 9zzrZkp{Wׁ (f]߹jj~& zaYўΫŖ }!JdoT; R%6Rbo3j"N )V#|!H1ʚH XV=Z_ǔp^:H8ܔKpye/!(V^-}YZ +鯌Od |߾efЮTWԞh,kv7@^"FF +w{ M5A(._"z,a'pT2?%kJsX[!bgXs4Dno|3Pӯ+\W $r'K&R]~o@DNŽY#OXyJm2?-9Q].bA{roBDGD:rJ~^aw@7eW(ΰ"EQ6j +SCNɼC;Y-uR;=T'rSnQ΋D˺Xܛ߈[' E G8sY7EϮ`ßE̚(yѹ:=5W[fk覜zxva?K + `nTm{>B|39=`#[K.c>9]N2C-Sˉ;y JewЯiɾTԯUTg2뇝j3?ȭ@}|XM:QΫSz!XOgD~,_kY$DN=mD GL?;gw +y 3npPT$d{[{`gߏ&#r&˗rOuHE !F]YgfVy_H*绊 &OJɏdz4 N#W+gJNg8SX4wMcc& XHԝĶ_l܊8`:I]_T7˧ pſ/[D&Sӹ:"E%u\ͥ@HLY2"-9cD$C@J:PpQ3.1&Y %7:!B">0Յ,̏`eXe)Q0da#yHO=r +& r" K>jG + +H\f5>o{дzXOlW!ʳ߾(l@ebb'hS-FY68@ƭ5M`Bgy\ Ywy +>^ەa%ѧ@lбKJJ +5D$BSLp~Ĺw<; ĥJ<0li}2N<$R3)# Gg DRi'gޖH2Q=~9㊇~*zn* //#NBFlc: )@+#@E3I /RР;Kݴ/~s +HMSnr3pz w Vz.( ºG6;i. ѩC#ﱿJt ;=ʱ4MRz<`k;g{".:{'?s}N ".6uXQ Z:U̎}n%y\"I)j̓T28 +j^*&;v.$7$j$&}: 齂Ji1ڰ/JQbz%x{ ȇx=` Vb8=v3AWܐƜs9a=S7EyDkEoPc%% 7@v 'Nl&οqR;`ԻBח/>R;'8?}.?! CA~|Wø?%9;d"ze-}JjMZʗL2)!c:i6ȰO:6N [^'fK8V)~A?-@z__\H +N>.(вX tlK3\znZ'KZfzqpl&YpXhV*5<篶:kt;T>B |OfbaaU. +j2:eK8j+C>3ix9:G ?s)`Wbrq8lS֗*,Sei +H@Ε >u4{l̇993XǛdckǶj{WI<\ vڶ[%lW<bLKm:_s-Eޟ b +I1>qO9h +"&Xe]&$ҰL4J(3'-~={u]ȫ +0 m:[udgBG|{ +kȑVRKl]މH]Ra֟ckYFWǪtM@XJ]t.⑈5'XCL N6ӳ$$[.7qsT7Dd_V˃+Qu+>uǔxA(WpұT$& x#[$ע>:o>D!b^2^y)5ݯ9v$[>_Z,\{f K.e{359%%=ap?:2Z˴[E=)ѸgW3g˺ kA.~I";[4$=>r9b7N LikYcpC1ެ(Ɨ@(Fe; +'s{Bd5HFk]vcw} +f5Eszc}h;n[(ΕOd;X ^w k ge:5^a<8g5Lks'UQ=枣qטن9R3Tv3KyZ ]ĨHW>IPr6%VKDdk>cA%,; +ݴ/) +0X-PkV Њ j#gvyDӿ򓍗:$AO!ÈfCRΝ`dwRe&y)N_9G`Ũ@W: +ZH g5,t0 uzZFt#7MR||1&hGJ(4rV Lb9uE<>_^;?2zӫXTT {WF~,p >*R A׽NaLY\ƃS9'\%b[VV:A-cLp47~YkfRW,QܻfUf/lB[Lӣ=`kA`\Q!+Rhvϭ-,o^7jC1L>1rT8Su(ul_f}Ίzk-j]YM-6ф} +lMqCgY!@۰Ux:]/?D: Xlv \c9u9onDø ?/{c-+NJ0``^jܢ%k^E{V%dzr{VuዻN/;ERO`7*gR-Y3Qpln$|,|>+A|әYo}DP^Y4q-'Ѿ~~m"ͧ@H9 +֔3`;RJiab,2-$Gd䊃$΃YEwFqt +{Ww" Fl a|)(mY4otH6<)0l fl;u8&6Q9Cu熕 MwvӬe@]\$ j)1ፂSIϡUt%\,#BH;?hp/ |d/4bcٜ/vX?CH0i2td< y +2 v/Cnxzb=sQO^$%Ԯtg)A<* +?:7-H˺T3OAx.? 5@~ ,m Usc?&a +v.v6Zs`= [kؗbUZGtrj$ڠʸPLE?6;ua^WdvgW1nbn#O0-C5na[IiY$bm>"f3e dkBO{;s*68=ae+ne؁a9~qMt<ҙiFJHw>a+ſ߀?U<[G O\H=GK?'7PP +4g#mi1/E<{~VWrV2̦{P*B e6vgCxi Sol!04|uaSDl4Di>a^u[YhYJulf` qsYܻfDiw&oZ#۫jFW5; s3|:GR|=y0ZY ~sY Db>J? -3v $ج-cm3)ʳ +,.X4¢%ڹ>cH1Ub{ta킲 N1±%Ze\2SԾH?``- Ҩ.Dԛ\<m+vo5&|c[.6 gQɩu(Qb׽12.3Telϫ9} l/,'=M$}d@Qo~h3;U-sO+&^Mz;?"Y~QVV4 L?GjE Ldy}.-Ք'֊Yh[܅ ~X +endstream endobj 28 0 obj <>stream +HtWM9 +ܗTwHd %*{9_uVegc0}|~o}pz1UIp.c/C?,^LN6(pXm1z͵+k"u`_$deK"nqq/~p bDW ˭;#o!Vl +@!"dԕM־ d^2o[L\^Ν:YU{^4])ʼ/'* +˹{ +\/ۦ\+iѳ]@_^T!va\02Jћc7uآW(xޠ_]`,ԁL9SG.&,4ysZ]߬b.%|(X__kL75\yܶb SL9%Oɦ4&8g;kI2r{DSuC|7lyK9cy" hu|YڟM81)d鶊@]!ʲAr۬;u!L 6)~ ^Pg tJi̫t8`S6= SI}=5߲{%<ˤ秨5x* +~N6`Qu |k" T,>G;KF+ȭBS.~Kf;T~5e2mq: haC#͑Pe R02"g@Dk`>_$r ԍ[8 l>[ +-Ѵ^#,'4 +q&_ UNV>ܔb2uY*pьPLo;uݘ3UJE|ΕMd jϕ~c@lK7Bi{==c}zߕ9(~I/2ӯ&'G=ʼn|>pS@2 cU.kDkspGs:\DoyA@{ǔR.*,A[6x~uJF@kJyGPRGK~5Nʶ)dܭF:ڳ<:Ҷ14ďP˭{ZSΔ6lLͫY?`)x>O3 P'-m78mmC !ky EO-GSSyqe{}&h滉?;p3Be*\ 8 +DtHZfPYQgMBI |rR=b8zHoyzDlSjp3 oD(7?KA^RlՔl:ޅ8+}X= jO0e@iHk L oMMm`o–q*f#^=ܽK#Iq\x4}v]UH"M۹g%c7XXʳw~#kIg`U;˦ +ne$Zef^.ѪAA23^A̺PH@mV!-__J6ҭ !J+}38|:;w\n>ݹ { 3StIĤ*71COo +WsMwۓDԆwO^{'8^/@[&TjWAIoFʵC>*"M!])7%?дǁWFȬ0m*o;VeR67`ҙsw1@/+7?򾟽yk V]/X:8vNL=5#E5NUHҺw$n:}\05&$[g3 9d~d$9&eHP.H龟KZ ~l]ܥ~sz~)qWNwFܴj4aƺ_32e,(=%ѿ_<N.XMFdnAK NY/s=?RK_|fdʥ6.U(Ieψ;~tֽ5P SK7Y93IIL#կ|$ג6 ,ZpvaS.dKE>L, 3+'4]֠TflFJ?x/aGDMHfܣyC ϻK4{eKHr3S36Km>`B3 }y&c3/~&XN<(Q'aHOwHs\P}9AZ$GFe]&ӗ|_-hr[Nh2UX0]+.vzSi8g`6͌!jA]d5K 'ge!Ǻ f$i2`b1qv2Pz#}L ٮ; Sh=*1UrD"?6z#6rۻ۰Wte5eko=r7` )L0ڒh7Y`؛"7yDǍI8Kp7@L.ƫٺ!\@S/STUKmD +ևѶ%h&sl'JʢJBDgǻtҊ5]#Ai7{#Ubrfl2& `-5FqDQ4'dDg.gu5Ҹ-8~L4g2V/ؼXn(z DD9'YY+3A6L4BN'=eޓEnNx\ﯓr.܄>IbòUj >ԪpV.tB!=|Fce82=GƽQƽw?+XJ$Ѝt[T|!pAF<⡔ƴSTZ[ >82 % rn:MsLpRރyͪ_|Onb&DTxpo~^,R'JuhT@KQ3$F+YvZjYT5C#ϊֺf0/ 3Gk",KLJm3eY&Hڙ#XkHUQG#IWIEa2.ݭAC4$&r|d AVgMCRlm:2 u.DbECVVbbZ}oFv2_T WY|S_xDsXWC½^69Sx5TBK6d3Xp&e>щQb:z_㞗5`Mǣ`om:Z6vq0YVoʨygw_2O8DcX\UmYGg+ 0 Go k:oT'=A=˫.JKE}^!"xp+bxDtAEe0vn=8> j'edq>bks$t!WD\eC\@ã"{ "_%]/m'@VCR+ +]!)I Qj6-8fc,=Vu/_vU_esE{ Lt~m:~[϶\C1oKffeF5Ш'ާ t buM1jg[G_62sɟ~2 #4SiaU9ncq{&FעGyGvb< +׋DߣS^vs)tæUvxZFw|kJٖ2hcfqhU}zhdhOA7a o吆8Η΄yX~Saf/hUgܵ#Kݬ9ZXFV(?c5" ٮ޼Z[@K!ֶ\( +pF@ +[݋C]Vp=9%A" 3$UKRϯQ G:q*Qp "b.azF AVO{Zh814-!50]gt$VZf;zk>(8 CgD95jV[MVA AeZ͓X Wy-[~K +FE&>uDp g6I 9+D`1R)+Yt tx_?. +L (T:.hCw۸W +$ $t"sW3LK}M)pLW`1p@5VeR1/H-(vNٙ/"rP@7u~07 # \TҵQQ;kst2qڔX | ŖZi`͢1v}6/ 5 7Xɶ7W_T ` pΐ7CVXN=G &o +WL5ƏmT.XE܎HhS[KPMܠqm^TXIAlˮaw~l+ , yS zX9FxU}+eGӎE47=8?~ +LeMO^cyBwzQPw7|X+Salr7O1@uj +cT6 +\sOFkLg>Ea7ku<_ƗWO? pOQ`fR"vΔâ-y=j>#<A_ngVi{[".킾{>~K+)ݾ@IGC$`}L Q)>;z] ٛyljʁLp41 +x)]R_jnwSѣ @ƭS=RAUjV%RQdFb̅)u#@wcݶ/\l4d4p౲|cMBܺ ;Ehpj VU\[>  +Vŭd2/7<'3~('7"4vRP_22q(ֆH<n3.eWڸb?)rdAIF i"2X<f,=";7VB,'Kp~a?a~_Ɓ:vQ:Wbmp4Țjٱ,6H^Gl}~!_RV3ݭyT)VA>z/q/[^;X2JX&/w |8y7i^ 0͓h0vkڔbm@[XSO, }^7Ц &3ڤJ`L]8͈m'w2O$1WOf>8+Lg皫˅-xlkvN4ZrLՕ$jY G:KP{mJ\ Ʃ)/qPc{*e.0zݵnd 7:ժgD^mV1$.:} &h#(_1k-lz|91}Z8nw2,tC}hnf?;{%jQ_lyjE=bd]s0;刋 X3?1 6cj7o_#DؖAս41N] x%F;ysfF5 +ߑ7Ct}"Wm]nv?]־քd:JΫ 2ZԸo m?.U \i@˓0Y~ tkV[+D)n >;oFQ㎌(01ض}&b{! &&sΝ + c9ߍcБE @$R嬧#*uÓCd9²Pg]w41? ݸ _$4)Uۼ.$[,̋rC0+\{%e/G"&&#z{痙T+ + +Oҧ-ZZ QN'sXvVD~JL&G'2N4R[4.0P -,Oo(m/d+Lm=L_y>K5_lt&/E;~+KӖ:2>͚=Yzڭ!~tk=L~Y>4,7JqK'.smðWu{,5]܅L3gy )zIR`e?a^ {daeo9ȘnP +23P7"7ر2O?VeJaIVw'\_Kw"73Ʌ0w燒–q蝞snMݚ[N Ur9IGLz?A'cUlR{@R^ ++FwX0aaO^62j [)Ӯ<_f|I:9(%+Eֳۦ=O`mӊd>p,l&5'(ѧ~-30&Y1A<^Gܟ/6 +IY_K>xVU^=Fs)Ts^Ȫ=xxIgr@zS؝ͬuFE$O{=1o `JY -{FIB={_׿1` nekׁ& ,`mpfL! qPOmYaWOI;6ǫU3Q\GM%;i촣&f# 6L#a=i&hfld_&%<`8]Ȉj؎XRDy68 >|_f_hf:2t sV; ^`nDέOD8TV+Gj6s^g݅Bo)jc"]G-wDpx9ԍR3{W[;sIx! \L}:b:u~0ߛ35QʩWe՛W߫N:2Oh# 5"ANRf+y+VSBٺan5->}JVpɴ7rҗ[Ԏ#6,'dC񶌩Q1h69"4M ?.g/7*eBH/gY pM #ߥ+ ƈX'I&-Z{3"7~(c5*vuA[+-h s-LҼ+ì?#r}:p;O\㰼 a4jgzHN7T^ָot1sSS-)9=%MBoazwW@"H+Mk؝d_۽ ȵyǎ]`,@6$0:ZFxm|Du91-p2=rH<d晶Cdu"6.$~\X}s_AT)n} ~1{[T!N]R&-CU@>uv)VꅤX]Y|Iщt#.$MM,-WF9l0X:˚{j|{QQtm?Ֆ-¦t7i/ $-Gjr|V%I##yY8,_dQB!8neT&ǫpB8Sc%/dKuA Ƀ92 tP0%̖@ػ!\cͰJ e +^(W4)3#̧Sb՛Bt&Hr2rW[Bo#Ր_b4j+n[k}ͭ'FU +uf1HdaDR]M;JhNyײYo3D@f:xP MȜ`Y?upMvgFFVx{gXED}=w\ +~3\%AJmԉCFf&S Ӆ烄l7+fL>zt# &eڑ=&UjnHUWzK +;Uy@@[ ?85fd%FZT@҄+^i^H.G^{7O>FI@Y-VY֙mP0,~Wu``@6_(B'rՀ N<@`73Б?Wi7ف?u=сx"~Vb~'И&vֱS8qV: ;3:b)ڶTq;/LNruX `d"J˵)\3Zn21{j07C qzT;嬠@FGU%Y"-?!ܻbW0IaCg]+uEj2Y gP 5?9JB&=%l踐 NWiO^.M֭+羅 ϙc=_Nd@̡!ThO= cF`D(,h~Y!9)`dy$p$Ei+]80uI~G= +@7qnѸ2E8.(D ?D . +9 BX;DNiʥb1{8]~mNɇH@U TB[>v]4<5XXFUz@jbSQe?  P3WrQ_[a^O0z,f.v,ԋq"¸7x- <<ڔe/]9V,D%Qd՛N 9q|g`cn<s %sJ@zSYQn.WL-pT 6!.Ǘ6/g㏩UpF m& ɽ"uR1h6@MF=H%v[8k!Υr@Dw֐s!`7'ҔW@:?$IWu !yr[:keD _#oW_#ܧ roF=wlw41pV#|\02+@8ٺFf.2'%KWض̧ 9kI(SN6DXv2;״\Ct ehi'̐<\Ob-VϬ,C\:' Q7؋e$W,Apk˚GAj#Yf"UФYx!7uĜ)FقD&]=>ט%sE ݣX~9#K>L;jsn>9(& W :"аo -?I'J!U~nX;yÎjqz{^WfZպA0_K2JqsMnTTFN)N bQL$Ɵ)_3RE۬Ea8𙞜J30[?|(S1FJKI4ȥkY6n|ҭ}5oz*}.Sω )/ { :Tv.۠Yfr,+QʹC`{-6& fOahKB#j:g5f MJ5  5ǀxؔZա 2t|NHLZ},+lwZC]D?\AvGj9ҹݏډiFvV+C*xWL#}˰H,mC8G!zg.E,Ja)c szⲐO_3}cQl{Pq>9fOC=;\=ky& +)1ddJ{ B0 1[!*> +n.eB~zJ9~4̋d & =XyTB5BNr!Cƽ,& !b72v~[)`H>D9rJ'&xihO<1eaP.{<>xGϿ¸o`u?S`32̙UOr=1w6nաD 4';GFp]=i:<,/w]<@M! +h3U_7SW~jQ9# t ΕbXqڂl 2fwUcgͻt+V9=ܓf~z !3n[^pہwA86M2$xtԃIjÍ2l(\or_?{Cϩp :Ym"QAGkē/P(/f˹z F_R#C_ku`J>,%D5A`(PesR!FxhADWAFQHU2cV2D '0d'dWg?Z ')5:i$$ ic^9̅%;PFZ8@a4k= +xwLwADLHϱ/G Sȅs]W%!@ +pvW0㩇];$z>꣐?@;XrXxn@ccWpͼ '",5i#a;QǎxQα2 jaZ@ZS R76/sQu5rCHIFEIǒHZgג@:Mcta:\ 9ۤ +*bz/qݥ{!CP$ +塖t[+ +rVp +i<@&TuM[R"& 7^ )m}ow,Եb&tYgTlYŦ==>Cpg&%DN㍮Xܤ=%LY oPUY@sYS9f."ETDTQG'σmˋ50-Jb :۪$12vVNp + sm_22@ʻDЇ'>3C4@ٺXK#n7+.IjXn)m u3gz~yyY*u~;N.<9zUpwޱ.0FnDS7VV|tی},&+{22_}_]Š~蓉Zb#f&̕Pz<{Wڧ)yYN_\ln`wkx;_RЂngxCWZ-_I=c/س6Ŗ|zKw?Xb7]8J(k8Pd"Zi>N's/_ 1dB\YUN&Zٜ(>,u_N<ŧ扺z 4RHVYMtrZah{1֗<©{V1XF g}l4 ϕ3 4%hV/bh)&jb&ciΐ']%%бRA'*0Q3fF$i%SF٫zÚL"]3fG>^LS=B4@"9t/~'{~W*v.lϩ>,TG=-[ׅݵ)KjQB;YgK3n%R˴{W.t<=HUs̋ {M'=hitf@sx- c+Z?a1Z`E٪)~ t~ yY +߃њ|ʫGWym;mvQ /Ұ;Z-~eN,Z/WM0K9,T`14!_|ܬu-?֬#[B?Gxܯ%Std;}SM>VR7dS{;߁ۡؿVz7B CvC_Wo׻0;Ɗwq$[,lO^gx]@)k~Hޔ檐D>~走EAu(2JÌ)sf|>Y*XrqҼ\+C//KޡIAi=[ӃV[W%4@ƺRH#YNdҎXyɧlu#z1ӗ㖩 JJYYgxÔhMe[C7JD\'DzpW4jjC_LF6BY+ {{eMΘ? ^ ? ~Q I{Y?/!oΗ3;qp$ЦAYx(In@VL0Nΐ_\t+`y¹8-[HyNu֓@!~S_K;/tMvs9i(h)EHjdqyy_mQןiuYM0PΫsy+pGGhr+pt$gl-8I)(7ug2Ԁ]JڤM dcwwf=ߝzn+=0mO]N4sDtכ?6ߩw\\x11K:ҵoOD{r7Ȃs$3܅)T+zciKb$:= +LDfX8q';lt aTS'ҧe77nژcpǪx}1x;j EifWNa('cu _DaD#*jLWځ~*zĩyßM.(xG6К|.b-.)C- [Ud?$-3v՞r:1iO]ݥ4gjUSH nT}a)3h^ +oeyMO[Η@Ul9FHZfߚպV AaW@8iD%תaI +e\z`L)h6$w0&K1R`B5~AnVйELܲ)S2d5{[ uBժ=O% 1ki{g׼q +70>]#G:+'jCQ*m4LgԔOy.#Bք 7@^Q!v#E+9"Iʃ%]cſcCII5P,H;)TBr*Jk@ In>z +endstream endobj 29 0 obj <>stream +H[o ;Z;WΌQ5vq6- f64%PRg[X3CJ-lR <$sfΜ9t~q\OV|BÃŴ;iEn=y4rBܬT_3y=mO؄­rVvWU4z{U/ +w{VT~ +rq`)enB5w7t^퍝 wit91FX&M Q +3(|n̈́j-lzy7tLI~* 2jomʫXˢn*\K٥] +>k}=:hv}uyz[bwvzO$H|q=ym%K0ɛs8E݇an:svBЉ& H?Uu;k:fDFǂQ|m3L჏لa5L # N>o'i[LE~岩mA <^W \({ ]3^M@L^p\~M^̪o17$TH,:l%Mڕ?{NS3l\]}S'ޣOg]}">I&z 8bQ F^م9o魋Uk]Ǡb9o\"p]:ŇØ0_|sϪwٵpǿs%jϷ#Y~鬊:k)۲æ]T]aQnƻ#p^; fp_mׄ*'M"lox$Gŧ۷Ӧ߮oYR}}j:mV`YΫGXUmmi4MWWvWW[7YWv]PmbV}f}E9k,\m:TjyTtౠXV//M&=%m7<yϺ>zV5o^t%.[oY"{}xχJDIb&$Ēd$'%RF9TҘ* 4i1,fx24|,a,c9+83ι: + <y! ."JhaD"HE&rQHt2I.2JjO2e,汈e*ֱiy\(b +O%U`ʨDYLDS4BKkѥD[L0P 7He1&1֤&3 IhD&q$Il&Y'%ZfV*6m,He1թIԦiyZd$x&2řt/>RaGGLKB2wڗоvڗcІ)X/|TĨȇW<"jTvFdTQcd +Yl\޷Y 7gRDqvlK8*O|)4 , $ C0~50++* +*{NJF +| +t +l䈄X)(('Qϡ@OOÃ<wαCJӘMZA&FnNŝ['[sj*Ff:s?Z(9ٯȍ+x`\ x/70`\ h8: o-,_#J;nXؕ!t^U=xs{zXΤx n[n?rhJx +SMj(i"por(ʤHz +ldi(-E/jJ-SPځ䔞Κ28ZPKIL0--J/9IkCkWKkOdihZfI9={Ŭw4eq4Y1ۮ 0Iji$WE*%.% SSbrj:&D" |,thʄU3mE&+%:/Gv.I:ch|-Z/#Nh +{TlnB?a!q᭢Z@րi7 5PqL]X #+LTd%=ɽ9Mya=ɴ̲̱.K^jȧ%h#w(7#g%3?bE[1LL0kv}tP:<-;9p*}~-}*ɾDGҋƞkKwݤJnj}7,GXۈ!̨G/NbX5fl!b.dLU0?ÃJBY 0%HbdBylڙZDH64S qv 22:&Ƃ MbGj>t +vr_0O=*U|o|V[Hf*ɷ!#g[S9*\3/^~GQ/rjuR9}?xs{zXΤx?Ꮫ8=<ܽ!=˶Ϟ,Xև,\=Gy'N?/iGO/Omߴ{HfV?}mn)m:־2!J?7DՅ/]u?OrlM x}|9K"G"M%'9r" HSzDvJzsnScΌ91L9+椨1#ؕtJ2t%F6g 3gO2~ħs^͌z:tY3Efm`VfͰFfIL̥SU zf"ż#I#ֈ `X9 vCD\~Fȏ"G+n2'NH# +i*]eebuĔ` u2Ϯ`+c\ތ@BZa@Ŏza:` ^@5%VtHǗ1AdQj=a'\DC5S}X{5{ͧ,Ɠnzl{mkGXtFUgplR"ڨ8ʞڠ !gd`G>xىY|>zs{*::Ϡ~13h.@z +T8@{-P+kWV[8*䠗zvGON:{즳Ύ:{jj Ŏ=Zv᳉^[ܶT,YG -eA#ă tnґ;rOgQ)HyNhÌP ̌? >S_T<%PsPq,`S`Fy0S! + Ȅ?-YzWTzQz .wl91UND$Y2%9SΩ21YleΗG2&RYSfΛSRNI=#$ږP# Fd: aB=!.#>A~ T\=\-rE9@O|~/?K@?ρOνo*Ο4â:ˍ#:BWZy_ +sFVIQeMg(rRϿ6j34) +HG׮|'=7φ('It%=}3tsr?mOtD>!J f-ia\Zsl4=+dD $$ؚ, R|~!TUtUe < moVTVi >aMWLmLf7C]qleṔrSBXA߀p 7Ԁ + wn G;^=ƀ8\k9^DW^ +/c5 ˒ nIt_ 9d4t ,OL2fPPĂ92_il]&_ώ~ъ1,"Y Gyq%ۢ~JI" "8K &QlFnKubSG#^h-^%tgdZӫo|:)81o\c]!@L11>h߈a^Cg uծ"KmVa}Q. !RP +|t7_bxS/Wnp=q'8,RZ.w΁)r@LYuEwEyE{_Q`#.lzhEY)$>RC=Zc0#5`d+B-v̈Tv `/% ]QU'2%7ܛEtǹaQƕpե[oz_en# ]. +$B!n ru^^ +݅F_/7\vsg +Ut_lnrU/ MUROAǛ1A+߱S 71?ϱqn.{n3UafuEea!fyyI .9(1&3<\V͜,T -e>gq[J!v]gib?0m3}3=wyu2souU3\9ZWTĐ[gίa<+rdWs%J̃F ^0aĖ%/PV"MNd +潮l^nC>rRIQ2f[iy?w \.׋:T^Oe9+oK༝=u-G ʭQ +|32$/~zG?9\<#?ٳwNo_xKS5U f f2X0Kr[OY,?,ׇ$}yN~+wErFtS}h_ӍX6j>EH#1 +{Vq]ֈ;> " (ZJ޴Mi5{>zW (  \M02~E +@ܚѹxzsXx\XO+xV4Pf + c^C!hZj!B,m4qΪm|2hkW4U%Nԭ Ae\T5qqTapqlvk}ǖaql [k@E!fP>!J"j#+V=U*N!^CSHlG +Yd,U!a%vЫ;?pl1zJ2vjR?j@ꦨv蚨N~ed%Tg-fyX^. xދt||'1(k,n"_pwJKҕK˓ \o6XިN}H;Tt;ћ&HʠCo ]96[{6vʀ4r'ٓ=94*L1E؞lMw4hlZ*3&g2Ӂ[GvONzo4~f6W͜Ir3nrm|:IT ];’= J>NOxPp7ٓsxJR9W+2I_'puzM~0uPP괓6ٓ7=dگ^3{||ٓO^ר4s ghDӳ'LQ4Z?̦|4'/3V43䣉gO>N3 i,1Ϋt&=d[{Sf6hٓoMCr5̦|7MϞ|k:b4NO!WFt'`EECCCѪIRq}99Jc5WHX00Kg,Hhis<^y:0Ь*W:" XBTQ]*!UXKrU)/ Za4s 4./V!/ET6ëKie,"C2@y,A|&ey *Ey0XƈVel@%ZlEC0\G# t2{9 4ϊެarɝ4uP1>2D*J=iZLA߸Q@.5HF3x}-^HD#AS /8B\rx(JN-)ŒS5DJQIdeY!PŢOn&7Icڴ B3ljA$Q"t*F"a"I6:=`lr%rU\?\H(D r kڧjfRŽevx F\75n IJIo8_Nq =SY[ W1_)Qؤ5=8oӐޔDq;(MDIp{g $N5#SJ7rQf^A 59ʻL-`)+ER[AehhA1&VͰ#,rۉ tq2Gwq_@E=g;YmSdNQaK|nŐ2@"qh~CE(ed) YuT+c9CW}nN"'8 +Tiũϳ2uLiMr`#BNm!퀛YkJ+BN}ٙdžߣ_|Ruf +[H%aN,>{ Y M=jύU깁saȽ,YmZe>=e=.(fXx&@N批t.I>fA>XV7M{%VÉ8u~<&K:&NR,VsJ2hOnxc=6IGP#>3'.w] + >LӅhteup.[O:HY1,Om 4Jp@7l}T"ALfTWE~Z8ESVAfQ +p~:sg=-?c\:;:#Xكpx]SwB/TBkGh:7B: +P!h;T>Ɪ! aLRbk};lX bi6RR*3s[1K\Y#1?P\R\g⋤śT@K *nV##4I0Խ3 '1HQTÇ${nQVN钿1%e[x"#bή-ytaHgj؀$(/+G()"qj!y!ٍIA5'Rۋ2B\xTm,e=JYU.̼ї+ݢDT>iK1M1G{Fme$Rf#l"ipGB:s*"-mueV&\2Y{6˦]_^F]IçzC5< @e툷4:T|Ϛ֤?wa\w['_?~?_6-V,8䜚5ps QZ.nw~Of:V͆Q\[Fm8)eOSk`L9A_)_Em< ;vhY\9Äxs 7*9bJ=Y0J`ߊLGER ?,i +܍E9] +d Z. q%ɲu'ş'!R.|]nBڽ̢ XȮ}7nw]A?ެ7.9Gg.%}h!YXMoI9W=ck5c3Y6袹νK>oMI4 ė +Ր"/ OF8q`X"(4AQ*kNZ-L<,i5s{otGiwE3 +BaJiVAr4lPDP.v!"4 RF-,n0-AaJh'4vYîq~`P`>4K2Ll_)"1c})NєRaIDN&%Y~8~IS^L\;)#(v#j *BbVt+uޔ=݅4a8(bPDܥ{Ij<~/'4NڥY~ 6~Z׾>;jDZl,+?a>?~b? Hm"} \'V1o]w%%BAҺ٠ ~ևFhsVFXm#i͹XR`U|@.gFcCMw%YCtsI;`N"N;kt[n퐺V=m$Mʦ=YU *iE:E<\&kZc_nmǕI0nCGk2+^-LFY\V~X=Bz%AϽaخ۱ tBr9K}ﯹ2;Ѧ.5Co,1I(Nuhm?Ԩ-: ;"IM).c>ҹ8zqyB@a Uv3#xO,${h|-?lvp5w(z%R05lb|i+|ZE}*9A7J U78ʌ* ?z̻J-)vʽ^q{$xCG +0~<_P.H92W9rkb?.mO9FO0ePXe>eS;NVx"AHzI特wK+@myպXE[v`R O ryWY3N?F3 +$OR; W:l }"{hc; +m([57h3 +<ҟovsǧ f;mq7q-DNՕG2k^˰#4q߬AnA;yL_XkSؒ|E/'18~chVZT,%NΫGkr'Oló(NncR{b>CgqPㆍ!m}=[Fp]h-[1ꁠ$yҞ+>p6/hk~k3,ҾU𢯴g3۲_K}vo +y@K`m5֭4(8p:mY۫5#'ڕ-i`N0!PElCxR +BzZ3{lkoYDou\8zrz)"˩z pk*zՖ*z\6J~gx&Yۧ mae\lѹ1Wr?>Y°ENծׂ*I8=@% ݻpW58IJ"}'~-@'itl;oNWx_C2'#g`˸y}3;pGL^ٷM4L\0}ET6 cώcq*:*^!0ǧjHhF:J\:ņgҁG5D'2XtrVۗ.vutCTml`11QؙW334y+4$&Q cWx2XmUҢe,{4p%O׍P +cZ\[z`qprSK4Ϝv܊7Ӹj;NF~4?~ӟ B4߉H11 œޏЌ;sҖklopZ+Â+ o7TaF˓kKNFҀ0XUnUO=JnEfd)_B3^ނtCS *>-%8 Cm5 +~=u 8uNIq|O+[ z.xT1RV~ܬ|z1'/glNHoh,=1R>00ӣ9/sahL7n1BVOiLٓWxJ csЄ㒲`W~ypK:^zQC %^&H0\Y b'f5ݷga3e<33s8w<7}W On[8qah4jiYĻNxx위s>p*+~yh\Ɂėm$'U[E`_c;$sk#v +B2g%?*-@o+^ha'kcVkYI?W2Xϑ_m +=|^EO~ n81_Z䜬Aг]a)!%X8ᘼY8de GS+(r4q _'.dhWT`NF!S?N6`6n'cWv2^y;'̉pi8ߴ2L<#LZMyBTGut,#޲߿ny,|W{Dz\O-zХF l4?'|4, +pN`ןO]ȕ8߈C_`# Vx}wHXz@"=/[W}]Ֆ#iv{eulnw_=[dapZ?,OqfdWWhߊ}p>N!ر bi JWn9x1Ua^yzޥz2qzFxmK;xS DkDtVÄhw-2{<`ޔF3AMusBf}n*UZ #mR0'Wp}wx BM8V3_~:0=j\V3x4s=`ͨxBwy-ocWgk׼8*o@;A V _PEq5> +ve]qHwpQAL[ sb ovXDr |Iգ6 iP  +rfFJy,n2MA3Ux硎`Y +O$Ώ81B%C\WWclMW8J_"zX;Zdɑ"aYٳަYV6"TTfI2+ l ?_i+؈}BH}*تX,9]LD13-poyb=zQ vTBaFZj]_f8$ܴ;5J9 K/"h)Faƿqhak?\A $sLzuw 1R3\ +5Ga.-3Q[Ϗ28,a +w-b͟bY_W-C}١z3| +(RR0׆)dE_!cѻ}E;1p˻ BT´e@f. !I0O P*HHV[-BGRV"P+e늳 iMix)W?.k`NzmFFN0ڥg:nn1?1)t!^=uWPK]٫QMa78'Gd^hqnpϮF*A6DrZ϶7y{PeDϽz --  *54ѻPUҗՖsXR~U5P,1[K1ueSwA0j R|.-qRk AUB1fݰMOV8n3?~G 5n^#O6|!ǝcg?Y`cCQL +/ R(䘖^ѫzw@Or cMɭg,g^.SGXXE aWläM10$TjEz˽ +/W5wX;&IF6J]VwȎ x:vV_Ju"Ķ C[3FGX|A٨Z^6KɄKb%[1#R + HmѪ)ۈpyGZ +Nښ.3^nm8ѹ")ƒs}vel^2:Xؽh_ a_ L0ǏB؈ dJMvW1P~mzԿXD=UVx9}\nhaܨ5X./=|,(^15oL=RC$&Ķ|1޸"qF] rs]\g6G!,&;6wbnm6ZGYXÓl}e-[O< >/TaZI3]FT~kԳP!m$e3 +@e 0,K {?'-u55ǡNj d 4٠x}aƝbޗY.ȮU:CwlUϻ)%Cp7%.(%73?֧e91"]P%uغǬ-]&ծ z{]뵈)2W(zÃ&AQ<фV е?;&SP11nguЛ;#I'2 ʎ}x/hKy9g +Av&z𓬴xXG-$7Jg~L%P(P 7n~ԳBR?\a=vBו;<<\ڮٞwxy>õ)D( {<\k$]ڞ-vvt %00p8: +o<`GWߔ3sW;vN՟!mzn/aI +CD*큋Hc#[xQ} 0X)<<{rEN2%ލig]"L-VjBKT3yM YcpBmÃVB5_<"^uKvT~%A0ukY^ $fiU ޾)BY1M 09؊5/Ds26ODrIg U|pKފPol˕B 9shbw,:`NT־lspH6}?cѸhn=XRrǨ +(Ekq2Z%i7 \_LjݩqBAItL>E .y;uTfKoqfhuZ0-ss!ՏRdTK +؏;!FXsys"9T! 6`*w#MEC^sX@ZG:ξc: hJ'3'6Y(;U' dWw2U 0ʈG~ދzo m0 p[ |MS/R!4pz ^:ɸRܱ٢JSJh%Jzئ e%} ;{< j>%% WO6&AgjƱ͕G ^|PJw4Z 'nܳ31[Y(2ǭqwSՓsY )Wdk' ɷ'/냍L/@F1C*/lKλ|t~'ΓA͕uf@:3Ǔ31R;حq8;y&~;Rz #*]lʵص7}G\ޞ۩c%Usc73*@KB9K6|?V͆n<-v23QGJww=>!} Y&-7Э0`iah-8G<"ޞdrNR-I3> ڠFب!kI,a>_o'4ɛ>$NREȼ,ژcicz18Rl"3~.3H;_ˋ"d}ΨR?2/$Uf|Y˓܎-1ZA=KƥR:tPxD+bS=^"@/Q[)H!O XZ<4K^1wr=%9lUL1#xzN-sIF _Ttq;]v Ybǡpݙrs &ԕex8XT +66Xu2r kw_! #!eX_#Z[孝F3E$p(nTn?z{2jQGZ9S29׽a )*fXX|nUfceKTƦ(5P%%~RPrQ:jJʞ*m ;֦]̾/3I5qpynNy8y.!K=L2L O&%fHZXE\qlc ^Š$s2ɑ252亡N8 hkEz }!.>34lTLGI?/~_~y /=~OO˧o?~(ߏ~ 0}`z +endstream endobj 30 0 obj <>stream +H\Kl E\WHq=~#(V/s$W֟0Yzr>?{*?Yk4@n9cI727յg1>-ѥ<CP ^}d?wd/.#܄"k4aCv݃6"x:riXu# 뗐yN2y&n]wڍn\Cf'Fq/ +0zoglFȎ}tIcmImւY>!3(/UQ_t'瓕/4 G^@D +ݐPq/ +MbJ>X|_Ws*A}bݲ^>b9{;dbOfiTVdI<>iT#:Mgf](գ$ZzKF?C} +ZO!9{eˉ%ӧ])V=huT\c A'qv :Χ|W{AӜ\"n +}t6N7j~=dd2ܷZ.p#'Vgx^~VDiGМS kJ7w :nqkzi&|~ ~f]D:d14Xz3!J,>m%ȇmxǰ٬_Ͻ֝oF#vBN-,*&մ/t >IP@jS2J߂L܈)u&jTȯL=tTz4cSD4{thwTȷBԺ*K~U%.>}0K)$C";1e: uScrrVEXoMB&UɓZ7)f)A>r ۵)qFZ5"@Fj_d z)2{tJ>3PjơK +%HΜ(#GoŖ4:f.6V [{yN&GQ~Gy'س!ZbE辻zUѦ |ozIeflY/=+H\?Vەa+B#hy/8ksC98EXG?9PO)瀷'k\1 p RɈyR u줋_~s:VFL*NKDH޸.|Z"CeR k"+ǨtCiKo(WҦ3ub!rEqF.A-qTJ'-k$k"zo4 +K8ժzr8K"Vk9U|*o^ՒnOrGf7Hf5v;C +3N72r~UjģmZt! uX"Zl pU' +䤮*f%`GsvfZ"5h6]QOzFJR`Kcz#\:<"Y5b\W\.>zTop/\V/ve̅=#T',>ȓd\R2ר@x&yt#)c@JՎJ9swv8wih\@V^g^kԿwBR%!v> V-)p"¥9u6uTM9zMUFu0؁T4@SA.^Z}d:۷-%a q f_Cv)zRWg!XxYbaX,<Z>nnnkBr1:ωuu#ȏIRBl\ xή^pN8$X)IWd6 0Fn3 {x [Q`wΓK%$?6RNW_=?i/VA\?.GTt0ݻx;2Mak `0[gwg"i$ ^(y6=#l-gtgυ52Wt?cᝍ=[b2 }&XP"@-,`[[ 0Eeu*H^̊}I#]I}#qEAS^XHL"}vp*N'P#3^+nzWXv֜;B(.3Q;(Ė ]5}m/~~hKhxvG\O_Ȥt':i[x0|uKWCcj'Khd[.UBNtڐ>ƣ/?x'W `s˷UIѢ ffJu>q+(W/I)Oq_lѹo޹ c+okkTMe^h!X= 7;dE!_MPA6?;b2bE>Βdߏ71is&1$}X|jw\ѽa&O6r#W& w (t 45;{8jk&V]HIsxem.7WY!P2%y;3KosdW( ջ!@ps5IzQN} DacOXhhb 'f0g s;]71l:2nsȁ S.e4S OzޫE"I μg}(R?Чs`>U@BMriJCSoy%fZѠzczsN}JvK[n Qg +\d.GnСqjiXj.lV4awytgr-C +'LW쯅V#U]DJ$ikUދ} O*C̋ nj)'WjIK,5J(gꐷ/=|qy9FpKV'f4;>ϼ1PQyK0h7|8*-/ﰁ~3^ёd +ܝ=>z%$]:'z y5WJ,jCR OIA_X",ؼ.9w'_kŵK<rV2MQKjGiK4W+5g8;SAii9wqP[峓-aRHBH:6Ƚ=A@ęy[䒑u2$ !BPXeBiU:mЂ|fm'6/TO8@ܓ% gr#X^8"9 D: +!~dޏi?IS'(m93!?hNxDkP< K亓vvT5Q+bᛂ/ vcsЯvt3lCp5BZ\ +D ߩc ÛM$48k3sgC>gY9,фƨETÊ5P4CPe8mj__ğm PwALNT,'|\1>4 2Iǔ +{*V]k*K +hrVA4 H,uIcc̒I׭d94Ҝ^7P<Ҳd|#ir |Bl0{*4{&N>]i7GM~Eڱh:&TW7khuNzʱ#W퇞|$.~1h@[njgSNmq&RaTj֨uI$Ԙ>? =FzrHS@rkګeݓ ymc}B/PU">:+Y3ױ[.":J2AP:f_ ?^;e] fKȴ^pkMJCmZ_qƃUy77 .j;n2sӉ .%aŸ@ƭN|=6$ȊI9OY*xb9A$$wwkl4WdeV{y- >0 y#"ԮqTz/`Dס%<=uv] =:܈{`wԳX?Ȟ{}f>My br7+RqVIaptQnPK8"2XTU%/4^E.eH%Ye슦H9B5gnÚ]ЀᓂuS{tl[GHyV t-=o9{RP=Vnxu9*ijw].N7n:op~ 94x=p[%)ԧXurqx+xz4,Jtn_w xX3L&~lIDO*U&.wD<jR + 1:cI%PaWC݄1^C} _3 7:O{L~#T u˟7D jQB") +6H'J6~4bd}k_^;C`]yAܜdX݆g('nN!jDj!tZ F6Q4@Ciz,:9z/[ɠAaA*٭8{ C${c+%A3vP}N ]1DCu Ni eh{jjy!Ӌ\Fqi&fzY%d9S[~E*h?C66IŔҸf#FQ٭!k{A8R+,}HIBcȐ76C + NM8 4YVzd#UAL.,Fd#i2LM7lC`T vM7.%r5 1ۯ[/j;FF]cE?& i/Kq$U8 >D5y0?<Ck} so~* 6,?1reѪr@M,u>(_z)9[j>N Ʊ 3G&x{ٙgO3%kّRɁrcÝ)_+%a@ VRֶ0..YءpW-gm?mT|?F1H]Ƽяr@ɗ'^*uoD +exFc؉NJDJ_"5$ &$}YҾ(4̐V3:NOhaxҍDO*愘N?DU겞|c^)Uj& +'uM!͍Ԡ<_CI)&d8ULݔ '\C.,QlZHI"6 {hUFX~LXGэI Vڼ1 u;Ե梎$cE7K`VF2 5wz"n0VRy)iaPn-M%;hێj4av55)ty#G ]Q%%<`o@3l?&@19P|8r6bXqckֳ@/9v/6DM2́c:h:j762 7} -ɍ\D%7L՚NmïtTZ[qJ' +LܛXFSSZsN),p9Kr@:N]Vs92B/Y :`*t,*0SiUx#;w67Ō]RokK1{d) bqغ<yAaEbޱ;Bc9ô l_]AMˈJʁ gw$NCl{ (j6"?_O3|Dԅ~`'S0}cou{ =45oϥٻ}ݭpMMS_2/*^RAk'mî7Ms)!eQj\͕/ P\?g R ܸ|Х0I_(jЄVì +t$t1Ja8QrEs~"xt!La[/<60F":ôŻ #!a-X RqC|w Iu𙤦""M +sA,*ݡ9$Qs˫騄PpWspjӞ(kpi㐤7npA/\?S4H\kY#j#Uͺ͚ϥS .9۫D +M`"?`r IT<,@HZ m H0 79+j8m1GV /Yʿ@ʾ$|lH^\5{g) 3Ay7>S >@&aԀNLpUO +4UknU2}JĻE"ChA0*vxgd<Y>w}q*PZII}s/y⮅";-:k ߒ?Ue4oLAb]緘WQ;EA\*8̲aL4ۻ ^ z ǮU2t|4]ٷ=Hr̯QW@7L@CW6|U?jJ,Yp_4LKAA}JvcשfG k3@Pj C8k#5'"@C-+JFviU&FM #X85'"0U`NNY:#sV`WHob`Ƿݟ ; r%lcF*JfE$E$.D*2cpˈU #)p#'al9$!_BPS]>T8K3,1$S(Q==5t$tD0:A4Zz*c#*5@NHL7"1HDf'NpSNZa[Ҍm7{l2OZ@@ >]w?6vBA=hP ƍx*Դ b횆$HmaxP\`GGI(WOW1Cd#8Kka!ej!VI-0t%7ygiй%,ee'SS}XFC /C$.(\?qSz[]py\ﯯ7޼KsSBtu\"? `0/{+x}հ`N]_xcwO/_x퇻ߞn{O_n|x珟e7 /^R +endstream endobj 31 0 obj <>stream +H|WMM kK%TJZWʸ{ɓ =\NoAv߿ӿCz|{iܞї铍㇃ݘcڼ՞z[+|=NlM)l&eH] NKn4K3+CԒ(<4s O+L:u4N ++ے|qXlJVDŽ C_mwW& % jNݹ0(}/ͦl:;NTs  +$pbjcjCaɪw5I  lu=,ܝAY6tѵ1DnPq^ 5k1QZ=xᒶ\< GsKHWE +O$s7и t>^V>Eezw֧oj%i/ dG+8܌DsHJN&LGnjOuJb$lŃQa@V)p4JpB1Y&jq.Ǡ%342=yV:1\~pFs(گBzOs$k8FfVM +a' W徲ᔘTHhVSlQuŚo#!/Л/5GxZ٦bV,q L/ؖ0էM;x4fZ Wϛ臗m=g Q Lka%)$=ǵ. 9'pX8Y gvb :x;gkVC+9EA깝`ը ғ kh% q_̗+,Mxo_pcs[\ _7zmMvJRfm%8k Fi1nkgkXd ";#/$W/7EQ̄o;KllZ=Ð^ʘn1 D +[c,d5)'n,T wncJUP4 ohhyu෵춹>np}LpsqpPpD!WZe60Wa}}1?qڹS63ѽ@3Q||ssܭߔJFϒAxs~9$0&yE|1Y\sq\H披 x\&g'hs-&(EQu''Rc4 Ce;@|+v =+;tmfwֻ*( 1xc82V +oKU6S-~W|l-v\G{ؽ6Osu `=IљJ~B&脰D= k" ָ B5 =8\~6 'V~LRkuV]64s+K ElDE0N@XkKk@0Kk HM,xķk-Xβc֨w?@a ,s&9UKXr_cp.1~O=bK^v}^hjfq#zAZtH4)_5|!g~Mˏ;Sƕw%(GX하*jk:-KZ;.* +8CNs8Mcn1.^ȵ%7,w؁XXo Ռ'9<RK@MV(BZ= ~?FЗ S!+bfܧP\6d/w=* +PFw5(@}8ž߁G ,R# PE{ꛇJ0sfC2%Nan,kM.mJQ y}!zP8} L2. έ#بx,~0l:.HʹtQn +-[EkZnu6jLA aq0|/*ZqlShDj_kdR/sVBGo|?(];:˨RRVC,$l=|䀕ğ>=oS{I0KUOa@n{}Y˼et1ᗾúNMݑj.44 n30 r2|5<8*꿖@E`|p>ضS 2j-yUuHDD~yY/¹v 9>:ᮬq{l,F<;-f=bQM$2ps/EF6iFqO|:%X^޴ mE ieopoٟYt +,V Rے{br5-snKOmŴqEyU8JE=k̞o#ͦw,Ŧ٦T ) F.1B8\,u2p+G`k/7Kj潹O9:[rpc>d6gvr!SZTO{XrlaY8t`NnxqvaR9<.V#e@m-]~$C8/-Lѕ!1̷Ɲ_70L|Texn^A ,-hsP9ᥛ>)Ѷ*[]F0'_ xtD}EY}ӯ]czGj98*\fELc^#3߁)<“c.p ,؈"7KQ!EwڧwU+f*{ʗh*)F +? 8X=&@{hkHH% ىxޜ>](H'x6J6{ 9fR_4+XjJg,i)B9g_Qb)^PEyExᙶ";n7¬5ϵ ~E\ЂG3  8_z8\{V?~/"m$y.[OoZ[K`[ ʷãۚKx_^I5}MuO +xuHANȭwskG6WyFؙ9T8oi9f{FS2x3Ql{cݡ%;3IDW G<xjpR< *i>"^yp:\dfkS'd)$Own:VF]dpf2z"%Y"ݯ+ڌ-'=nޮߕxWz {h5y;y~⊤{d0Q.ۿ1B/bRuVi|-+oS^ewUsJ+V'^k]^##r ތ )hɚ p&G8}gXgC?qbt>L}>M+#ZoVn8yi' +p!VfX^XF=ikEcG`P9rrpg4-1 k꽖_ᔴ3iU=:SP!u6/SZ̸:ƙ+60ۢ*zuMd +6,AYܿ +p?Oߺ9>Dg}kjSLJ s pWrŗa,}פBtHM?چS8IC.5ф[x;lmGzvu ݡGaϿ;7YB >?+Eg~Y"`$ȡ 7jlz9 +pIe!&Z`Կ&^!3x&8$,z>qxsˆ,ctcJ9S!{o s6MRbU>o(=֢C,.wNiشw[,6a0fvIvr?֯z:G\,،;i.ɞz ۾֭=>J/va?k[.ePfJ!] mM[}6ӫ]q+nL¸r?kn>2:Omb`:%Pb_AG*NʃFk0C]qw "s>n8 ȼ[yyAv?_Ez#ÂgK{ ~_% +r G^k=+r5~WW*:obƿh Q|yΙ+eU/y)swDT~W.4u` }N9]L/h;}drXK(A?ͮ?ݥ" 4w]Bb=X{k +qGNIEd;ڴDj^p E|J;tbb y/seM'[m+.\pI|A7t~%rH8/B bO[ >Ijx;U`q_k2OW\`W}Ki-ÝO^.4-Z#2V1!:U0ܣ‹OkmFz}ڽ2":hh0IZ.&4ϥ\wjj:#3ыwd5K<69KbYK4wǚݹd_Ѕv+5GwV#3+I_EmE FQEr> +Eh%*KvQ鹸]y Nk[=y+SOf)o&[ܟ.lYa)`e5}jfJ[U^ؤ XzxhcQ3{&Ֆ ʘ7ug Kwv[`kQltZzSH>96 +&SڒAd}J7X(6qqF@mKP:'nYN*:7d6^tSM+>~Z$:o38|{FV]ٌ E*8S@a&T|n& ϩrd&26R$ +Q5֯ʍ 4Em1-vI.Oz0uwݿ3LLL'k sxj< 1cp7uX~dzT0{jQo+Rajmҙr@&+A-/#uWJeEKMnE`E:XNQܣyx)U2@(6=RߴS\s趲D4% &o EOxصԲf{F$@ +| ƻlϥӐO[,I],Q{g5}*K'vv t2|"gNqi38~I2uͦe_b>Ћmr a%>R"J0;q#4*Ϝ8TյGBz G[9 9.!8s<[(B\ )OnUϱ؁ں0Y)9.冇BTjQz<;,pЇhĆl"*dp"3{8te8j?g|ܢђ-h\}BZ`IҾ<ߜp_clgN#d.C̛97o=7_Tt$WЄCXA|^o2:h쿒icv}k:ó}g<0^4|f{8x1J֬i)l"I2KH})~]l>H36ˁ'Ѓv`WrlԽ1ݨ#roTζ,1B"k)A}e'DfASiElϢk"cNyfbR IP/ >ט[5E+2y+;WDOA>d.iEXjZX'T]=9]̳,-@Xv&H|ɑvza Ʒ@~#T.G'93sM)n1}AFkb3#IOr!n?w(`ƧY%hݻv7ңpl78wB~4g|Wp*CޓHiUfiåmKT#o0|+߭>,q1CO;9{JL1aw -׾4Oݸc,AX*|ߛ(#wGGa C V~t1#R,Z- +}WEܵg3͵/yG4@Ҭ9 +ah6Ϟ8W sb +Lm)2zEy,7NaJM[تZ=F:1P%G(Ox Vc[?oWc[w?0 )>∵aav}"`c)ιs^)u+FVl+VU _8ה>|/E u/2n `+_s09O^,k~au,0F@*WS-wW*[հ"XrH489[竈doEΗrLمӨ⳰#L떢Ka3afM\ۗ0iKQVԼ)~Ƅ;os3turjo֛#`uЎS?k2E{At+fئpR>&6.՘Û;@`bm} |zr컳 V=#?oZ⣔<xZ }G<7FXdU5(fV>B♊K<^O~y=M[-ΐt-QkdF4"Ԛd[`1=rj~;ioݣe +)O,z%Ҿ {3eQ=BþZ*#`_Hl>r8<'fC~:ޛopt w7/mQ(]+=!^nB9a6#ȍY[/?O3f {¬^|6`y~*)+̏Nη bb&2|D3>^Go2_X[HpJRvh-Rqfzw}v] 5*{+8v65ޑNցp.` ۚ >ǁkl 𐗞V΁wRk/?^ +ey\q"Y1%>#-.n3Hm IT׵oםl޻ \mwЗ幤"n'o@ߺͫ77kSy%x*hVG她hVy?|jPl#Vq->嗀<ʐ{pY{"_yX;mK9jճgZ[V4W-O"ZO OBp C'$?Qq\k-yG_b\ UL ::NfeI˧g%vs<7L*wB"HwAf4 x]}b ;p\QkɰJgR9XDšt)l׮TpȈ09@kiy];5ߣo}b90}3 2&1'zǢ שTaOkicb&7T:)QHTXNQ lKJw)5_l+;/6~ r6AJa>vJ2/dhQ;L:_r#5X?"#F'4ܪ@%2wbAG[L&}m]_YGV,*x~GUG /p lO^m6{J˸VF +ON Wh55esYͪJ!.,.Πb (w'9hD-$28Kݽ;Ӭ R;8c$7]kw-ΐYga;<2OwlC^~_~5w `S-nn%A7ߞ*ߨ3_I`}|凕؊b_p:2rL`(6EDfZUc8cxV;f Y~AKV=J덱O x67\LJ"#:RoSZѤcs \hԶn&*؞c?j"ƚ0:$'|Gx=R2k 9Ա8OU+cDPS#=[XW̆&[л|vrI@aC{yh ZFxLНtXfa9fSmĂ&=5hѶo05ʨ 쒁 ͅE683Բdywx&q;/MV-)קhԼmwTWgq+]Xv6l+^(JK9Hsۀ" ]{(BdtɍB/Æȷ{>m dhd3lja.Kebsn-&0_~ o7 )zSΦ!2*3E۲rGf)jh:Zs3-%ЊtV\[ZdŰ-CX_yh +cZ32@}px .p;^.r'AP40+pSۣKrM: uqZyA>3VN8e[/LYqOdPR&1wk p :O*2>ݨo3Bvm~VQ]EzcF^CE#<\H`tX,8Ru p]?θ\w<=!f?u_\5 QRxP +dKY\Rb`") F-zHd11u"B 8m/".k(!ozb75f;d=nmͫ>a׮ޯVkAr_o.*=>da#ťo׷"Py + +ZПEl ĠvMwO2a޸axxq!bh}:Q"IoWw4/ö+aVxd{m[\t-Csg-tXjW@Ca{EXӪ5];dbA;~A$uݠd/ QP~oB{e1'nJ dYb&2XwoNr7ݟ,{Tϗp[(# GO3Os^afy3;mNb{>Cp C )J^ٹ?]sɦƆaddx1?;!g=_Bfy8#"*i$QY:lMpl!E1CE VnV#] <[H,8ô×CϠZ̈́ːD{x28?2kCv$ՀMRk,˩o淥⦃_Heoky~Y<|Kt%mJp٦]FtyA=c7'Y炢2Uh`l>d|2~Ixn[ rw7rƋnsIR ^n9ѦrČR)]:l<93]v+lтeۤt[gf]a2XgܱwE17+d+]u9;C:u> _Ϋh5%{p9}`W /hV}Eq)* fnx^(5J=\w.֢!4KCF#=5^g60j-*ٷ@6CtPzdr`^S E^Mr%_G3CkN'و`$H] xQ\}JUg峅u]#TU;b@yNTatSrYԮVkpDW + +nJ{QoZm*Z ]%c{kA_"hEBWP{r| om3Iv˒?t#n7ج?]DNp6îRI9OL7wdV~ݯ3;D(iAelVm[yX4S) ڋ|r#RE4iQ{g69xew%pi8C:Ip܎T)f.Gɺ6Qwap[SNjмZ=MM~ĊIQa>Gf;d]W zj|+n)7=N<<1~)F*XlA XԦ_µDDyvMB]<ȃ7o6}+"Z7Q]d[QY֍p?[ )Ba[A}z})kfm9LW4*,G=btEnNsw|?poxAׇDRħMdCmO]yGIpm*$jnt"+%]-iAU /\|6\άv\WEsn,*6c`"s;FJ}P)̫g  ,^䌔cm\eZq +܄S ۳^1s6NћWxTy>^nF'Kdc29ɽ[Ut [ FKtCu:4f?ȉ S)~]!oe}ccs-I("9NVӉ1E[*o-];<b)p,$P uÐqTJ2;xf Eܰ;+ xQDÃ`V˗pHѬR8evvX:4 @ aQwЭ aͪh6%G:brS~r| q7I1]{a?UMr8x][]Ir2phb䆋GNp ipX0?"jq ceK m`sF?گw}ԗFcnሬ@W~n&r~l Lbt B v$j1vϹ1Mxeh kH"TNLg~*:w.r(ʴ!%4*dTSC¡G ]݃2r +?7[a{nG}g7bm&L9i1Oe*2lavS}blbxWszt€ښ(×ؤG~~7t&|8:|n6 `9~0C%ﰃ-ԏ8X5׼kT92hZ:8ϴ֓+3re|-Y$|]wu^fW()T/.1_! +{?Mka3&3%dm+ܨs{e2نoHp+L,\[8E5LF1Jz9L#=339ݟf\t)և 4송' +,=9 ,޻39p>UԻ@2 νl75Y0eKe[95Tc?kؕsv$ ^*}8؊/@Jvs)m)%C ưg'V.k?ϥpi~]oC3;ضԟWAl +J/AQQ5]?DHr,hfAWX%`x mw&+=&Xz$s_6~{ yN%~^F j=ed;4.;=_?Mtjx68'i@:'p5a-8J |oXp4Um&g/bswz65y%3^yX!1ylx~#֘8S@IVXFeʄ5Є=n6LlC#¨.px F]^$x bxxm\iuͳ"7fn1ئ9x3S3c+]c{S>|<n"ƍU=|u%csXê?g +f j̱b$ ;aSp؝,=ou2kp m +8yVl2rh`x~LXY7&WmSon0=T(AkO.8ˌQF̬8ؒ9$,)R *y*o(&DgCllLO~n\:@#x+ע^5@r~myDPs#}I¡_vEdGfr4_?F596#Ih1l~d>JE ~15%&ewH+7Xm.n7t_|M#ͧ) S^8ZgcV/s:iZ/^˴ IaCf 8O;갲`K~ʙ!vpHEpeȌ0E +endstream endobj 32 0 obj <>stream +HIe -t)\J6el nT-d y_M6 髼'###c(UT>e]g=R[P^s:zEڟ9&\p6,esΥזCn1ɭuI =nSɇC!z m̈́b &e?7yrYNӆm[B:j=Ňm8=e|hw^$6Wqtqa +}ᓙBhքs$-IiŘա\(L.l?Iq2Y4ŧ.ROF8i'uzr尢4kQ +yrŤMq$€ZKw? +FxZ"">֑ +Bt A4̀c+V [m>sqMۛXU20Ǝ^;l|u٪ +4u\KFZF2Û83_{iap̕$!z E]A"{ܜ:xRp0P[\鮃cqٱc:8+8vftnx!ȷ<GX}nNaahm-Ø4ehvc'PKUPl ทy`$b"0e,vpc oc8#u?DŹ0xRi>[}8E?0ѳ@Lyɾʸ疔NvnsBŸnZW9 +-tQ/we?~9?GT|11A!Q/ctsQ#7:['3W0#Fxk_Q/r-* jdHAjUZɫH}1YX4bj0F!JFu^`Ѫ1it8ddqp)`r>`=t2A 9l3x20jP(,QSpQ{c (QKe:U4%_,0n`wO]3Od5 +V;, ڱvN{*}kpPC3Egvs{"FD:eFj6lԜzvf0 Qsv#(qk,h>>G[#\7AÔα)T{)s.{ 7 +3 [j-n +ͣ=#Jo9 g[jJ%E$uTb)Y2>W9 +{[lGPUhiG $G%M/=$Ҩ&ғxq@} b#L!^k͊uꪥr5 ִBJrR$1,i*vRTܻ+(I<.[\LPA;O32͌ ϡ1oԄTxWԘq7OJ9bCZd(j9br;P 6zuvŻy O{B(b+Wd,, 5aY 9y}M8jJ<,J5c$ +J0-.cs7?PW5UApFւf !q(f-zH3 [u0뾃ҘfrS'iҧyOCO~*k03#^Zg>p+g3yJ[1".ԱґdBԕEbÂO7߁c b0/$PߙDE\x΂6_ h`ٷ-ꁅa bWBޅB94yj +L,22z'[AO>Am]*\ Wۿl{AzU~-Uٞ]m=.JmaSYpl*ϢckfP5Sd ű!^L.4 ՚ousnj{nv%Z6XR)7${Xq-69'H2]#@X Y;p512]lPڊr۾g_-Cx&gQIwkS98*a -[Jj3(֦*6ؑ +mc"AIt&׋뫘lkk$N g݁>чz+U6#ԌAFPXتCBe,-jDȺ>l/ Ctpڰo V1!ګc4A_bܐaV"HYw$_؄5ZBwZF֬4e6mhߡTy]pǸiT%>~:8 !0x֌l +IOش RbI{&v|SRbXgBJ1 Ww&iոмs;/byF' xo^'ڵaQI\lC|Λ-"(^)<n`s+LM `䶈 sE'e7׾JsH7lRAEq}nV eԾP9&Cb47lw!t#P@'ņNA9v2JbB˥[4PT G x_1V7ImT؎M<aG ]m1^D0/,>9MiK 6E,l]a%7 +/Hѥ_تCQJ 7niZb` KRaJS~PlRXͳ)Bڧ:#dQ7[i'${&Z",k +1t,V=~CI*Cdp-=6Mkfſ%VݓPwbhZJuylGKͅ-kV3*duhe`-fKv[4VM(t%C*Ôzp0ko%"7,IQugӵ˜-`UD,Z{ow?{ .7t >#@&!wC1W <'j!h.p,i:t-jBG57]yWsśG͐1Y"V3 uh&aZ@0 ca M#UP A=98B!)n;´U<m4̃BrCo~vNl3hy|^rp5\3Y4SstP]Pf+E(;B,R==$;KUӆݡ`6ΡW,W"l` aGwTrF5ZlZ3[W|0ʚ}0+%ZD)IKTpҴI4!Qiu-eaE+(M<@B +XUTTE0:I +G@yHAܤ;BJc4fCG72DKmi8>-–@u)LX 9QT>`u l7 Jl- ZR'1 ּ.Wt&w yύԨ/MOd`~ â"L0#1(G1#[%w~|Ǐ>{|Wt?*ڈzx:mqzܓYa;#.;ג5ׂc[1JVlmAzg:޴ "!0#tCV0"E!Rq>o_"l=\+m^ ߩU"?nAV8ћq1 ɕ*%Y+f^V%O+юti[HA=sYnj"sߑwZM0agS,g2&.NTU0y0=H+b]{ Jt z} VU7n qݣ,bWDQ BxUDV +1Z"vEVo3#]1-y2/]tV~)VKѼk Ф^ r*Wu&g.M{&\8YN@+,<٢v Gu;8;:@'}8QU>%eZq~ /C: J&ΛWkբHEokYgܱk`w +a'N:0P;?~!J0̊3#"2nZ(e`fW'.ƆU\#IЅق+aŪUA<`#=.-rl9=J/a~Ҧ4>i=`=4mi;MiNN }*R7c 0,a"n]& v[mB+} NIדI/d1bFgRS`^E$I0Ș"c$I8f,/SH^7Ja>%\⃿u٩|VGCdOCE%>KKCS LΥq8VyY88Tpp\@'(~~Ƭ0܈ӏeVq {Yg-\)ԹAk+=D{ذNsD0%:T E8i}$ɮi!3BD BĘ0<5L3";QUVq/ITsnk`Vڼ*Ư^-+ƥ{;x۝S֪ ]dswP4[#j FN[$m Ѧ[-H} ʑUJwe&c+?iFh#]ZJRa)«e3l]Ƅ3̶RDy3. W5Ÿ˙w (0 +.?! U\ +UBN4]ĄgnVo"sδ^1s/fn4& }}[R`χ;)u5|wd9&.NTU0D :!f@7!?K + ݳIW0 *mgm!vT䃻Q@+Bd{(XIv/ذ|뼘銙phɓi=ɓ"dH>stream +Hn9;@cɱfɶF= ]-1&{ؤl/TK] #bU%XSx{O'ΉU?4꽺˴ ȅ҉SF zr?ʡw8׿^ +6߿Jf-?8Q2~#Mʨ<ֿ'.O;+5•| +1Wps8q +"hFGѶYyjp\C+ AS=0-8cH{X駋2y0 oUw \혀5_Tlw0ij(ZV|H'oN*^L"㲳 &g< 쁆X_+XK0?QD⹞̊,dAD <^˫VQEU98-~dp -\5&Ξ&>?%E _)upUBX}g6x +HЋ( X{H >\iBmH^K +oұu<>5 UW_LKC4 Ul%6jS\A2ZjTD `$a&>7 :/-t)&x6 ribp֋c;6Z]qk4Bz +0Mڛa&Uk!!'"ﲷe"uwrwvz>jGԹgk⫵r +MRn o;^W _̖JEXHkYHh[KÔRU'56l#MQҨp.0o + GMnT_Rg3BloC Y>"床IZ6 .Fc Pʐ-<ѠL)!3K3\,X$aTFyo )\PJSMpk"X;$r;>P=P>J*M jCB_ZUdžM:zc<*"j!d*r-$d`D]LĿYno>ˏs& 3Wk33 b)[ډNjue/OưTb},BZb B s~X+a٣39 <7}vf/isyKu*yô J{{(kLm]݁.r?3M; ҟ`xS۰a &gl% R Ypv^&qer8fxu<Zz$xQmqya&.޽v>t:}&&2۴UMJiM4Ch) Vp'p4c$).@I`婹@k{;3jh#넙۱pWU]9I>w gb:P6=dc"kz>ש]䃣LBvAfsXd;釶TUޡ-Yb}Vrt 3S;b1p`T9p DW#bQ[;Y&, +-a[4ujՆDmBt("IR_tEG˞4k}:[FҫLS-L̨n[|\%@KA_Gc` u3LBvzzDB1:H?e6_*x[IHaڞ%9Γ%Zuej7Z,ckg1۾(Bln{hAH^1 #iGv)4ҲQ_ǑQ} 4,ĉש]< &n)~`. +endstream endobj 34 0 obj <>stream +HW]o[}p_ @t;;?IqSm"JRE!P-1H"cKIN[zhB95/'gW{fV7o'SܓgOr:쯣z8|9^\>~|>jww{t. >`g)-ߞ_Nuޫ_C7;t;^k;/y*c+ICTSKפ I}CTMRlK +zqD8!p13R`x襾:Y}<WS!AC,hSi lwѥ+‚[}NpUšj#'O׋ tjSP#@'"UɹYV>BG|Vf!+ZG6>/4P`DxG⚎]9 ex)`'}ޥMc.qxf$MP +PՆȞD2Q\42Cnew1r<r04h_ 1*"EAxE3J_bSBacۦ=r](xSK!Z2]VWi)WC0Q-`i9!%MHs _^yEhSڰ' +t+PƤZbS(Jw)%P-%Έ/5STgA$\Q8[ kb٢UYa y \a jA4Y Sm6dQ20A}lW#DZ MWY{@,M))7k2qLc,,ZsK͞@#ݸ=]YA jR`z\ՆznJ+DLrmA[:hhw,*TY,uX)"`(E} !3! %ɲ8AGEmX-jyS]-ŪxPjids+7QV4e v($8(aDIKta$lb\wP"IV.BֱBUcC!U4 &+1\x \Qr;Nڌ ͚=JDZƀ.Q1.RBo3V嵫(ah`f1Zy8:j#@d3R6g26Rk,z!LX*g@6ZYD\<4Q4ݚuL Vi+0`X$B>ǁYV!;I +$%!+ fjR@sҊp*͸ *ALY$6] Zt_SygwxaONJrcrvϺdKfD ? b.(3TåsA(Z3<[bs,ӁMT['v!@[DSd}0]Mц4z/6yf :b +5wex[J*7NгVfs`% ԕ$bK\.ul0# y#X&YjlO5|=&!i`!^aՒ FܨjsMm{|K`F{[IxkUs^?< IOL m~T( +ן돿߾[ٟgM5I))hW;u>9ԯ=5!@Mpy=3LH^XGѪ9rFKjF '6AI6<2 L2_lkL%jӽp},aKǩPKށcxGf +2˓fJI/8diX(͈yFiO]*" +SC*h5,WI#E&vet;@dZ`bnʳ]ʄ{s?ڤv|Dչ[$b g?²#U]IO^I2cFz%ss$"Q+ +ͳ5LE`uq;SI &|{8y$@N%'dwPOD^E?4AB-._thtrBY^RCϪP@{a/S (*u)hSS\"28|҈ϭWN}֓fZ0:mi ݥWkS1oK4 .jc㔰s3֬wu؞kH)'9T?A9܁0  +g~p"iloxu|zڣ9 Z읭 |vmQn]~,7u7#ɳABd5gQ'`1,H*-i"-!41waIA"C$3ڑ-6llDH;AK3r~Z/djiҜv0 §,qb5j-V'H64t ,|3vy(ÓCܑt3dP%9I/J  +!S}t[mnbFɳ:IGSbJwԚ?B:Y@$D CRôaS#]H;=7~A5L^dn _j?U˙9?:>DR)Q}T0NvgpEDCU/Wg7c`h9g)"l^k´;>-$?_M2[JX?S?}drReg8ak!KNuljGv,*ɐ4N>G9՛Z;3|K@5 +U]JM=vB[§͙> j_W7i&pЪi9u +ɴ~֢[G| $zUL8A!&l"1J2(8J 5,p$R@r"QupR׊?)9BZz:RGKGa5Iij<|5霥Otɷ$P < FmyoM ouOj6MukhЁ)Z-2@6F'0)iGOSLb$O}\47z$ .m ] cQ/7\p+fFXYD) ÏGeTLPE;hc|2%;"3UlV#͚*ʼ.feјെF$mz +dTCiPI=VkkuPJ\ƋҤM=Eι=ɡv&̆GOټgEFTm{׃8rnӏ0A1ytvअsLhHjlLhlpЛ{ ݰ9H|-Tڎ FgN7 Rc@\ۑ)[d-EFD adf@IˆAP)6,PkP$_fܪ]bjqe+nAUޏ.._PR@qjgPͯ[B֪ك~=0ߚzH3`v +> +5/`MOHC֝1l(yȆB][è0; }Yzq\Qx.; Ad2 $xf 1K!Y/Nwu]^[nSu\6b [ {X{zfHBsgEiqπǍ&2a Uq,|k3m9(

4uA\Vnt!a򥺢[Pzvu +֌P[{?:L;=?8PxS)hԫ[s!RQ댁Jwvwl[qutkVRZz[$ +TyK0 ODӾ<_SCLdc:\cH$xMҏ"olsӕ,Fue2-nl%A<ܓ 6]˼D1,zMA(2Ed ⭿!_>|YWW~9~yZ9f2Nc*%_jΠZxhs mӿMdMުD JCH%zE˹"-9d +yYeFpG~ t鸀4C'jV"nGY,d-C4PށIդ>*>uHI=2|lznaA՛6GR&xv%0@v˵Yq]|ax-9zVjT xOOB»Al,nRC>܇^txtwҬJus_cKGwBr.B-E)N#L0D~a**L/ υ0j=;ΊXuJYKY؁z{.ot#`H\]QOYT#kV)ܰIaq\ﶯy|J<^흵^m G82(6@qVJDyԫhW? Lϻʓ `>קej1D Ib9!hy-0촉|hDNc&2\௺šA07#4MT< |6,onfBEitTD!2r([IKctP:XU4 +U1j[w]xMeB e5Mb U 3WK:ra/V ѣޒCo)#^drclaH">9bY"*Ƙ[շ=9rIR'Oh̳T9@ޛlNČUn^šDW9UV2;@A-Z("r*a}3фz/Q 'D}^8)@|賢$x 4CaT]ۥ0 vOӒN gM;ѫ$Pܜ9WU +\N&^_ $QU +I͆눔gd(hpLǚeBr P4c5uQQRww0C $ m&@9ye,(Ŵ$̪!/Mf2(j)[7C~@ +˔@* Ncg>R׻*+lBҤALTԹ1_/g$%C !+mȆ[W÷IAՆ.$\ʰGZ6RB1hH Z >@\Nql`hSR~Sd'ܙ6m, #ƾ=a.D]U-nN I FA!:)_i6AW-$xe]sxQ-tB±$*2E+J'HrҦ8W|HٿɅ'ȋY}[A&.̈́ @ި>HM6P"B.֥RZ:uE+Al Zuj\Ԡb}&eL.7`3 kXlSX#[\x~23.__}0* t_8( +BPDi$oF;URל3F`&9Y^qK0V"_YyfY..a3ř9B@h#tR+@!tJS9҈05N%}c(حhDmͬ-{De%gΤ7+|Q< (O=YUdHyW{o%e7N%i<$}:#xK2,m"FHqa$/QL pgCrwyZDuG?ڴ楱W%ߏ{vDӪ:c,bo *j;tԣ:WV\d*v k,j\f?Yw`[DU E>[Z}4MYXmB)b`[i+4qxG?F5j¹V:2咿)fDSW{T2{3^!i(K4gG> +mhcfDO߬sU\`تK Eqge[8Hk9ۀɗOu_?q?Za6;Ci{_I73Y)'W)5 +#gSO!e+F>I՚5N3z/v=ԓ0&5&‰꿦]zT*Wti{5<2j@⭧p\Bbk>ߋHLjacx(bF@ň +Wz@npڌ4к>\͖L|kֲ3#3z>RIU;nP gpX +&/5C12 +|m,"F!!~J^|0AyK  pЗQBIgpB"|݃bi?M:~bRkPf_'CT΁k:#h֟%! P]#xGlKfz~tKB"{Kbŭ@k'atVFˏ"uo>~zo޼W쫛_~prO?{}ۻ7_w?_{_؟g/ooWxu>]6xÇn_qWx$.Ⱥ?P?P?>Ow<{qs׳tךXt0}C,ᓠ_{I>GCݙNЃYrULn2d-iVكtiIνji aơ3xF/2)HmCzh6g;wP))HbPIf2!h9 W)4[F@tƴw:TB:N(iźq(zӌ!x`d6B曄kF>\/s4r{Aŋۛcp?K~XpQt+ohةvO}edN G3lŪ[" HX0%;}Ri$H^? @O`1wdmb*H3ir̓#1g!`^bZi @BL$~5z}3XO*zv|$ +/A4ahR dG<6#T):8Q+Ub*rTnӃ]T-tcy釔6J UAZfM[*A{6HNο)0>EtPZ>f6sDva(VXW#T NO{#Bo(fmKrzw؛loVD*ijm^IqP+/[&Ge݉PI720Qt2fkWC>=bR|QMGnѳ.w3P\y$?3r/_7<":r!zwx'jΑ= ?%8I!r$XUm;o~GĽ'sUf[T(L +!XU/1]43_tS4ʱO: :g1!|T^jZRkKZzF\ϯ_#yC뱖Ю)=Fǵtg@eLBT<ĉzM#g׉QvgkC/\4t6H꣯.WУ$qh K3C7]Yæpz^ 3_hż!;ŷ(,zgܐ?/5iim>vMWy|yV yx:=gvm]RK!0SF'MI]BS-ӯH Fdf nqifėwtsWd:R (s3Wi@.1^{I>2Fdz$gjKRݮWlynCgNܵ xu,h8|ꙬDOl}NMPeZ[.Ml 0@ZmM[AQ{y_`#"VA=c5 01H|2[hSu[}Ib3^;;AV;ϰ_UT$}"᷒z6`f\\R c7r(gE@CdրH}9vkh@*5lɄaL<"1Hbv,9nۦqi}ð0i$uے= X|äKHKۀܟ3mQwm ,Aa)8$UjbWH1fgP@L.g" VAx^9lp"(a8= 2ݰusCbǧh^kw29m v1мsP<; 59K>wQ2H}CrbeCئ&Q-k6M}wG b(fZ4廓?X{.xͭ\ H@6 ,"UNgּ` k«;m&)le׆0HiU:b=!I6rJb1 &#J 68~ צ*#Ax'<,\J;I \%Zlu^QȻ{$i?ץkO[7Hs{'ɤ\SMT\ˡ|LgFn&1rJ>dn~O<*fMcr䱛V&d XٌuM$3/e\%(h_t;IY7jʕ>/|ϵN\jDǪ]%ڱL=g)eYꊨwVbR U`8#S +yBVhfKIqm#N+^^ylФ$}4I; KMʄ)LjK=_Q~ rxFc]- ɉzJ>XՂz#{D\ע*;T%dh;E;.H_5uVP>8<>PbVSij';,vQNGHHlF$ +jqQFt#:-!j<ʊ׹vghasGg(6=;a)^nc`IzľWc}̦}}[Ah I}a0.N]G[.ͮ/\ɒ丢:%RyF *39(tWEedF_ kCC[, 6;/kf@6|8'%sa+Ejƭ!4v'7 נr堻=QVoK̈́j.]s{.6cBeoݞBrկ:\ÄlR [So帗k&X~pߚwG8`Y6O>i^hw86+xkBؤi?a)r\{e +z7 :zMuE+|[/m0SۘvLTGYh6JuKx1bx~@Ήq8jxͶ^D2'}]giٹ@9pn%mb!^TǍ*kZ_tN]959kfkZvw:ހ2Gu[ H# [RHGI=wt ҏ2}zeеs›оPasJ*ȩYfJ{K.P]ul_oL42-ˠS/R;%9-\1L#Aڱr[a>JO,[>B3ZnC+fF:g Z4|޿% | +󲏶Ҕ&;_r ily'hQ%mΊiK5OLMF'm-mϠcޡ[tB3B8~o_ $#>m*R^,&ϓMZ!k.4_e-Ι٫JbAL1t37tjUI׏&=53 z$d鸯5yZ 1.[sNGϖ3|ҹ Ӆ έ愓ΪR֚B"ϰ4?0]KXz] +GUP}n`# JEyny/\B _Z-ʛ+ox*Ƿ֓(v9´X9ED_΂QoU˧N,:cf0jnxr !.2\Qex;/,G +klDZ61'A;s_t5βf{uA\z>W^^F9-_aaibM8uZUCq7H466]ahy߁Ԟ0_bw{S uicH΄]´d{ƻyh~S"R%$K/=y (rrK.gs7;JPzfTShK÷{i; -VUmȩ7bu |/u֘rio`lkK%gGJp̥ar):Kz_-bƲXH##'n-@ǔG}R>1q1W 2su8dFP/38vJX@^ Wd>pwΉ6gNteFbT0X4iFƹ_ 2qXQ\#Aq 1Sgp + :OAM|%G_uԑ(QZrFNA۷g^)}D5)hJp8+ն\b+K2mMN G_郠=OLzڣP|T3=/Z˵ gz,kևQr(bMRאSS˵#ܠIWLu@+6JkEZ}R:cKݞMϴǴk£rJ5d¦`vk%x-^⺲JZzcbAEw]^L% ?.#>XroԻdHG,~baa*"!hcjE);94QHbԄ:CY@P}/|b?gs$s/]}#i{s.gۀkr63U3yj+jgנ2{gljI٬+ L]8sz$ztd4e]# bym{VL]BdkVIpG)??x:aB~7?OoM9\\;ȡMPґëh1I .]Kn0.DSet)Ӫ]EZX:s?;S!u`ra.9vtѽInƂOpcsԧ]uבJ8O㕇[@ + u&j@L "ΒsBs >wP˩sZyBG8ȖĊiK8PB(`@iUxipNrիpJR"W + %1a|$c<Ϛ}C4Ǟf] TכIO-1>fQ)8rr"tpsY8ҵq'"v\ծTFڤ_ahQC0ӥ 7Z'6D8Ŏ0a|6/{/dʍv{;@k7 +% |=ME|ڇfŘK|UySUG-;Dm +HKܥ!blYcȱXt9 §g4[| +1\^COs/V![7Z @8Hh@AhJJDWoUm%VRf^N"ut +5H_I]nk Wh,rB J`N7S0czJ9LA:*lu#7ehDT`՘P/:Pr h8>뭮pAɩʖw5rwPiGJpJI( +9+/Tnsf5 +S~84ƎhImy6ΡסD]Cz#pEZ@U%UptSm?}^RTR +& +MK) g$9:UVp籁؟g3F>L\苗o=}߼zxϿzu/߽O߼|}t{zϟͫ%`ëW=+(jl ''D{Dwo4{NO '@|W-ݾ퓿ݾ|.|O8b R^5g׻ /+HHզ}o|D,\sI0X׹ܶ. [&S@Cwn8ʬ+#ŝrЫjGDBcCr%v+Gd=\SViJZd[gbe4sN-0c0 FdOC{r,T^N{tdGЪ{Nd΃W,4TihEymS=mzXOGt8R鏘J3̎$3~2u+浵#3'ɻ͕qm!Hh.rlI6-bWD)+M>/FEGa#:mսaap'}ck-syU~x2~E?7`[22/Z:[xHҌ?3b SzO4&N3nE˰=d9Ab0:-a?%hqnMThSArZYOwYÌ̫뉯mtHcᓽhUF)ŐlW'<\ iZ;a.BI2WQ$z ab :~[g.ӬsArCn]k{{;a@Y^Ӵ<-bX-H;\)+#JyM%<E_q_JcYP`E?R>hr@aܢCƳ-őc~SB|#=Pp :6^+؇\*Pա!b`MAf=[~NO8e:.e' ;.HN2:=\F#l =~Cȅ~c\4Fx_.=V_G*wͅ~(+%/,o 䁑`_c"Pʆ)]]] TKynA,k}v%}p21h&>CL&u @ґDwSVO:ժK?aT-:1Z~ԏZ>i0.US~e^hC #!]CpyS|qD[hQŠؑA +G:* +@a|pūVU6JE$v*¯ctEWSu )%ۥI ħ۩r TD\BVdTYtY["bp)k/IqīhiC˴:[+@^N}gibcڨ[Ý +kLLt5.@F>&*֨p0ȅ=¿86N]Nj +# +DLvJG(U3X 0ݖ¾մX &ܟ|Kcd2:O,g,0@T_5QkW ׳J),R>nQqA G%J3y"9qjLG`&&x~{łf CF.n3ӄEQͤ$Eʈc8x3={qFK0(T)rC$?XJ 2}K_PjPEͷ`]Q2`/0IDTO|>30jG \U%@U`R4Z JMDBiJ Nx8TM'CTwS1q=Y؇9`u4Ө +h$;!DRCn>.̆\ g1; +2F]r٨aWh-4^?uTe(n`2#6E|rs OՇ= +#$ФTLDeGӔ3CJwZv?y|8%3jU[ +mY@5%BcgIXM% ++|-,[G::'o)’)yѤBmK՛ +2-_Dĥ% G 5Q\mׅ.BۋAeˉQk(4X +VA SxhQ!ɭ?{~7W>qx_?׻wou__<||xJ9]p6xÇ&A:/?=_z\J{ +ݫ?|U~"Ŗ'W)~#K I:!ÒF~8%|:J2u2gi_2R }j!ƪ烤nbBFQfAdZӫFGWxcMW;i$7!#7CZYr!NF9uigtE[[05amj kTa@!@# "Nj`Q'ZΤBuTg?Fͳ̷ETv͘ǣrdM +[[,U$cLspҸMoF j0ş P/k)>q15gq\`s[$HI~V|֡6WM*b{|ѥbD7aր ZE4I^5>>61|]ͼZKhn)p=`gܻ'wU5(]\6:MQ鬓)4=fNX9źF:v8j4p! R$F$Todˠ 3YKO\Qzo;] +DUt0m`c )$xq"+VtkUv{D1 :puBR|b8A ;0{=NͥM&juܸ›p zJ6FBl_KCvf:0G\t$=%}Ga;;ʥϲ8›)"A^;$ѲAOٿQ QdZgxIl~YQe6c+`beA0dk`AoԩSJ*`W^2u δڈO!UI)>Vh5i>g-&B."|WUM۞ ĮuVq+ws+`rjH@#Ѽc|QT6Ms1^k/lAkJۚ~n1pcH%v ݊aWC J+ <@-T(a؞U{餺W?d,؞DIP Ԇ"֐@_w#U +"ֈt\U;;!Ku🿫ްiJ^6ywH`[gTm*N+$s= Exk|&Nl*maECTLL\8)lں Ei-OByK*?3GEQ)2 YB5ǁPQ}^Vu^26,B,"Ɩ`=p˶1VUv|E/p\٫YxOOl +*5;$=U-cÝ>hF(\kqJJj^{ qZ6r#'>,t ^x~nqI0rRѲHo"rIE۸ ֛FǷErr'Y]6Q<NBF `劗P&&%TT 1OIvgUiǨtLrR5 (=^&"}{(t(m{/N ?mwG+76Rڵ.D8%^ģOcu}M0#L믝z'SL⠨pzr,\*Hit69Tv["vG k,*5~_G[c4lU[+N5 =>stream +HK]= HV!ς! `A}Zi8]Q]][ѯh>/3ȫo}y/__|???z3oݺÏ׫\=^hWqz}}OB0ˤX~[킸-ľeq[U_+(+_v+֗YkQ3fH0;Br_TV N4bpsMn{Is +n^& _p+ֻG4j0]I4!lQ${-7 QKJ쥒R{o)̄Ƅa9ꫛ[ 8#8*a]](ND͒?KG?^&iUDpe tڱ/%q2 hĀ MA;@Û~m+:@6dKbZ@C^G+Rz PG*n:eDƽ~4!fDrIn۔מJT Ad7 Q4'J@i'%d,,[6]+@d QPu8|@y|c{:kQ?d8}Zp-zjٟT~ͣ34DxD0S 5⼐Y9\ ʴv۳nI5yG-nj yܚ٠ IMϒ!h6O 3 ^@4mvZ>_&kDi6;Z2J؞) Q46y`̻7AEv}ɗuʺqBx1hV (gߖ.Y"- +VOUSC1Z4zg}˹y*{K+Z$?0 & of1d:%YyDUIv:ɴ-4uZ>lXXɆPhx'hTɨ:b|KwxLu +7>jFeeJgӭDZ'& ix/Y"hz3q!Uc83p%Wld3ْRy~(8HBZeN$9Cή,ݩ=ef +)d<l܎rBG^8@{. 75ߝ1mI~vPA$FtaPC"[fByƮ}}G\ wcTCG롣ˋ!)j~Ӭ/ t=.0p fL3╉A @'(u"k4AlY`D~I6f-5]ɶi>K Șd11N1!æEv@wdngg6y|趐Fb{n/`CJWݩcc$[TLp!"G>}TE~Glg4waqO<[w]+>^!xdFNOr7>U4r;er!`0ϵH<7U_㮵Yz`UUvvHx5LiE$QXҘD+if PU8٪m`NVZى3.Yyj\GK*R:ٻSG4Pqo CYJ*gU@ |<ػ|l-NZu$U2d:S(+edjf;Ξ'o0B= C;p (x& +eeDeDj+,2W1(-qخ@lg'HȚQ &\tv.jC H]o8'5. L(i1aՍ#ǭƾ`2GԚe <߆<6 .[_%ֿ?E!yo|TG m'30O@fqp}p'%tҋ}ݫG?U.T>ˑ??4ʉ*a, *A%O6ub~t9UXOccB"X SE=2{˵@x+>IH.OǾwۿ% +c2$HH*h!`.9Z@S%gw'8a I$ڳoڇp,PBdTmУJoK 'k {FZB$i*b`,ya )N9 }G.׃T;h$N슒(Og$>ˑ@0͔ W,ͫ6Oa k"L`R5>۫0 ,,E'X@Ŷɠ7P'y#ڨWpIytzw}w3(u˲VmCA/S7@r9V.d6ӏd v) Pbϣp=nq[gl{|D &P DқĨUBnB/-T$PuT\d >*}|# \h,e\s*2XL`i^fIoUG,8xW/ {ȇ~,˦t,)Qk]j@$2KӑPu=>;WddAgMuzDd<Yfmfwˋ㱣1Mm'a(޻vS7$PuӲ]>S{gcU{N5;FXDr3N'ܫ8z'XT6wr> +s|6?[g]s=7L_?,eLRnCC7Q8UJvG'fKc=0RduDQQoe|.plUQZLXLrU:5@ѶM5u|bo"1WJpiȔj1oELjٹ0Zk.% wnowI4z_^Wb4|9}X8o *G˃F<(PFfyp f-0*zj-|GZPYKn\vꞞQχRР ḿ`t@;)g| 6 9?-ڽiJR$ x'KFKw1Fܲ)˧db3[ P:DV̧XSe\ѷ'GT2>\jwͩMsG5&g-VE񹳶ruH6n>+!&.t/[ҏ3GFG ̡Jy|`pb LtSӒtfyϤR`@!8lQ6 .uH49dǰh!?0=y)}`UBUUCš>fHeUY:?+ !> EQ\[>h[ζT)Q;6z-f!±e=n8h@v9< ɉsQr  O?7Il Յ0DY(  iWp7c4YxE %ě?/H|$*HcG=zwg +TAEW3Cr *Tm4B4YX-$hBJ1L +tpR@jz3Wu +ڵ p{u}ծۻNіS` EPE#2t9tYϱ1ܲ&Z yL[T5 uZUq'5>mz}g=U 3֢O3e׷L!fu<~=4UR`r;8)JKA>G& +avUgpyC?m87G׸_}p/og([ t#QvPnK~qQU6tw8 p (qh +$sj(ل 0˩zΥWy.FA֪ +x yl}FMYA+k+Ξ\gڗ*tx<ړQ'Y>Wd!_(ҥ!yϵw fb]^4=~]%Y8*vdO\JJb"J!ΓT*f~%zI׭]\KaE4Ԑ0?\}}]ywFW/(u]ˈ?Zfp,bʹbaIYE/x@LWJ$cג6%VR-6} +QҡE[A8GB#*l^Ͼ]4nP{/ג\~UaonU !l[FLzF~`rV40rwRS$ @D;\h׫DBYGRmʰvQfne' 7 P@Pt/?vF* Ey7 V~J׵;Z4u Umma 2T{&1F*\I(qr̄K.feM/!72 +4f]4מ\u6|Ș'k%<3)(SBE-ͮC$ؓLm Tntѽg;U v7GVeEujbu-AS`)15#CCfr)< ,}, ի `ICE{GnEo02N7K@FQowܧ^)?x+Mt 7\mc%d7gyJh:mGX.H4#$e3szr!-R\`YܶPHŊ$EiF$6Q5=ZyKݳo<ۇw_`o__E狛Ƿl>]q`ݒϨ xv0EGTP&Õ! k঒2,RuicrwAdڶvi^{w8[gAm +C(ԆqQ|C5Me&{G;"\aBl!_<B\U;bk MNm"B1GNHØR6\SO%,/ٜG[ڢۑ̩ȄT`$=E#ҥUDZ۝|Ac#Ң\PգMRmB+!Cf~Q$R3XgV2 5` @a5έپF?"d.iLj+{iRl#qy!6H[>Sb.-:gg:4,5 Gؔ>#v1xCVG7~|Zri$!a+ꄣ4"cV[F ՙcj=*R&NA\Or +lXI-\֞:Δ9+M.iۋ͚]C}^|pdTx9ضLV"X뉾rp8rs$aY( L}8 =-,:VdO))8bRi3 Q u5b >IcFzW'wԪe/nS ZsUGڰ[+ *鄨HkĈ,GZme]$X=TeAJ]J=; KbwDkH5H*ׄ}:aOӄj-ԟȿX;Xn*- J=Yw)Ja[l4y$o -:ݠ>M]Ս*'YxZdѺ!ڽ OHR#iR|G^X1)iZL LDk^#dR1&>Gz*&kb{H`[foRCq8# xjߐ"'͐iZ$dSwд27h 5(> + .6Ϩ3I-~9 ΎLR6:CWp`I9nHJmH"a}.KW瑶6?6y,>=(_p^_8gbkNa$4w̪/c$Wu iV+К/5-/:{_HM)rVrٚ. J8z<*[tmO{-,9\:RUO?W.אp<ڽg') ?5G}`LNX` E_t˗]exf<Ģ,ĺ7 :-U =zV!O=Dz3 MWy%ȮAw'^U.=\.#4D+KkP+d$X ~G$h bGZN͏+NjǠO<3X5B<з\=-ZnnJ5=52М{g%XtIx qd%( .hQ. m11h +1p] )$ li"4 +2nv|- +{b +5yڪQERve7 ~fbi2=J9YM"K@OIutlK'>3EAt&K5+4L~ٶ&&J*ѓIY4o c2DZ٭qKr>C'#ȹ$y׼tiUґU-y憴7rj=n(Yʼ~nK8Ο_:gTB7D +rFGP +55 E 1M7vDq^x E=ۻok}.lNL{$reIjRհ2Y{k>xnY7uj+`+NIsOh0" Xy,j#RJe;#ECh[VH;\bF%C+[ʖFsFmmE_ w¸^'ܠ%A)<w"Iz>nAj#]S>l+ +lnImv{ưd6;v(;`QW}~_8Nsm Se^-Gޱ$כPzYa,ם}n 4_rN␭{xK +>C^# |R=IwQ.sVfx5_"!%,c[z-"PUrvT SOʿ9*_Uֻ*UcpOSvarƦ83}=n7)(j$E|dJMbKqM:ʈCd-$K^f;k&"m'gJk&5a̩py]Nd*ϕ!s3kc<|E(/SsӦZu^:)wk(DI @(h +*'k#+E51;lVQ9dVz@5ڬP!QA7ЇKIm v +zyCL| "vܛ_\4ULO`/#0Q8+k,v&@9c"ʘqrc $c]qGih+h^x`d7N2u[L2{j/N3q7ѺQOp[`Nj5Wbz?Qo:V!P7p ՜ET{/ PLF; <^gэV!;WiE(jAXDdbmuفwWšȦy:15YJ|ԝjD+^Y +'QS\>fy!SSdv,}$o1P LK\)ZGWM^,zN&}"˔T8188}Z&V9wSRk|tT5 0N~q i^5VpY6w"-nS=E *&!dy1p RB3I*xlb +4j)iCh?2DyDTUӢ1[z)jWQ얈M+(iʈs a]Eg &G;a:)ޏX %Lsm2mͪUT[Cu*n8O2>ƶ';Qel#aQIB9ĸu0 ZpV%% (]O3ZV_(,yDWf]hi`ʇL-VEZDQrKͤ?kTҾHऀY/V+ +w!ǮIF2'#u5xj~UuvQ?Mc؋˷=Bxѿo~w_UE5~_?w߽}Z/Z7ؿ 郴XAC3AEIr&IuI$7K>C[\Sq]l}IDR2/aམ:ΪI燕b/9#][(:&Uded.H,!)M- rv(uTJy#$٘Ɛ@Yh{wY!L{6SJ5e +p…9ӏ5I^$A ][!пϹ Dv Eh2%C5䠍&&Bt>S\,;FSEX$aJD(C+?4`l5MEdHm#H+"K`RgfTIk,.bnHlL_H6y)P" C] MS +ʢ'UnL݅(K-b)k"Ͷ(^aDmS`ٛwIuR+X*w6&ȧy@J&rj9"RڍFPRĵR>_\$b DԸ6O=+Z2㦂t ͱx*|M7"gVVDhѕ$ !BIgw(ŵaGj6M@'vgW+)=Ҥ˨,%*3Tꦵ{5<4p]BB7D/A6!Z̍;#xI?}؞U" .Q}YGbYn.<rF)(󽖲]g+} F4uHkwd53=SCc z=E}7= + RYm3VN[1)u8cnP .\ "``sیo.K`1൯ )3=vK6(fgDq>m;)@k ۖAN`ToD P-t'D!s%.dx~. +#QŠLe\e}e Wi?oB="BךN0!ɬmu1KY + +$^fF sGjs.xE=o=i3(uasؔY)0eŞ2v:\_t[Ԃ*At/"E(rOxMxϛqB-n*ّv QY\c#7lz8R:&\}&yz Yb*! + ,\4Zpd`i622E" ,ִUl-!*fݣYK+D[T&*،ǔm)YQjDҨW )YKlVUrΤ鲣ˁIl,>PhݾAYO\X{3$rzw4Sp֑YqHP u#&I1k>IА׶|,IpQ^C!4ݻcTZF.k_T_kj5#=߯4nUv +ST%Ɋ037KTZ܈[[Rv2R\ƻ$J5J>[ 0Skǎ%fGڋͲBfkZ3~AdY 4ҨwQcSMZG9֎dF[SȀY/w R!jgMFNmMT4klgw~.zV8 k) +[e^tC 6†h#| +L$gE(oax_\Ǜ>~x̙~bz,-htZ-k]TLQܡwGneHTMQCpS\9Pƨ"_|<ٹFF1Yv"/b;H#"ǭ8A ׇYS"9W̶7TuOR;:flj>{DFFN, Qe'xҘE"GC.6p\O' bØiMHdd 6R$CvC,xXt$" 5ÑZ)<&l>z~msAnz1 mOG2SlX^W핇O]'xQ)LKf$c%nIJ/9قն&ޖW;5ƠV Ua Pٖl +c{4(Z#-$ ݲM4&cHi: C#%A^,We]?B9Z6Ȳ{c{㪬AG#DXAN&3W䵈4s}qF^AU.V߯Vj,*gwq)LkVg?rk PSfύ5r)SU# gv6qY-DVhu"}8gCٷ̙NsRDV~)4S"8w$͊0;|Enf9V@8h(Gr;txE<`/ϱXZR!T׈՟"!\ؕ-2yk^i^`bGu5+"C-ZK}pnPUCAK'uJ©߀1ۯD}1pQWa˕dmY2%]ՙqRrd@t _ YA8п XN;UUU{d`ebCp%%/fUp,[s +X :da\s 'y$ ]a?$ XKv!'%iVMzrUdZjmy^h [8/m?욖EDkF_2uLՕ=W2X,=xEJYDN7;y|UUc3Ĝ5_*Qч6̀@,`,{4L<ϻenw=|Tr[B~/N*=7-byC&$ z,-y=7)vC",%Sb=qRۗX&X1<\ܰKzeޫ˸ {GT\ilw`6# f"7XR]#c@ֆV$7`vR }2(oj1 iyioz0p19{ʒ_3(Gքc +4fo?)˧B+HtQ%Md?S>1?ɰCoM8THeRqHqb'esx32NRh`KҧЋ7 -lb,R8TP @''W}򤫇 fu-8wH!{XSi2vj>no}Dk4TofSIfIw|e] b,ԭg;H 1jrW1^L$9kwH.@Hor7YD  q"N".%C+G~ZSM 5~SBlb)ՓCE1qSY@\7Uy/M|WLX&`yXH88M.KTZVؤeC8=P(~HJL2D3x-z..fl(W* Acz\Ӌ2$/kdĤՉ?TC}UqRcGp{k(뷰a~{} 'ZPkgې Z^F@ۺnS"z}!z|u#ʉT{yNn](˼:m=Ued!"@x;/ͦyc" V}=rTZo*:b2%{ v=9!%cgVǃ-iJ1HjG]Y!n0P=8gW#8Ξ+4H3ΕtaՍQos= 4ML}PL`b4TǎiO"\_GiPCa:DYtg_6t,/A &ef{r #Iփ!{HzM\ +>P]sӦŕu}_ȥR碬h4 Ue*xưZk7y}H]nd @VQ\,ꋆlO ;{颻w;/W(uɊPű-µEE9-#C%g-vo1,X]o <*fi0M(<`pc +#NpbJY3bwH;ͨX[߾APr+{.8C `m6k!a/y& +q~StK,"I9,eb328s/xfݤLn.~̹&a_^1x35hbAI1cf:lEk1϶(cJ#K/5NTѮb'B Z$ǎ2#m}6%RK㈿ p>8|dq!FWsөyǐQW ^]Lkݾ kdžAIsxm"8Ji6v1(ʰgKsѤNõDP<Џsš?,\ڔ'~Ƽ b !fy0&Bbq3=62+5u;8{|ܲIuhgKݟu J)T w?*^άG15J+I6 +j r|l׾6.|!QT8׌goȮ6+x+-mEr4A7`$vOdȽ5N0<0痪xXMcV 䂷 Ԧz0sjnD/d3Гm$qCc^6+z]7=;:Ih14|@ Yk܀h*o?k=]JV<&C&ă<.QOUWMBXuE?(FK^08 +ͥMN V5Vܓ/k;9BP.Ԯ\K7%,9yDBBizM3O͘>ඖXhtgUdC26Sc^%KJ2%M,unBۛzOϏ>|AkwA#/Ow><|{Gq{tfwj1>K?yUIV4㊔}*S#tq>x_)1(/:L kgQ)'OLPCzܮG! +jdsVLd +n#z6CͨJ;Sn%  +39ة0c3yw5L>>}~"5櫚W }udߢT'vÄqJa,2Ha'& ^BjL)@R *#4_&-FE +q6K$ ELES%M"u\AhYgN @&Ш=}x5`ܡj +cF +lr2r7FR-C0.(^ϜƙL|$6*QE!H%)Y6C G\3sTsYڼ]y]ĈmB(>BW,3V0z^^,ݫèݶp!3z^B:RUӣۀxMg+/N#u)\erJs.bLl<[{q)igDw@eovYD1SH԰dw(7d/`q>WŻ)ދmOߔTEqƹ#H]665|R.&"!^^M{ ^+@veeN-l{pU~}}U;q*e_[%UCAT{Q(k*U$ R(⬺,U^db"?{Qs Jӫ-ܣg[hiV͚,a+LE@,Z,h*H$ҬĜT/ + L1*W<^K7 "m! +TႮ/\{/hG#RZZX[6d^Yuѷ+s4GLH۩ٙp0SBKzy)E]̾E \E1(D?Y}oV%ÔF侃=dY0jQ5a0sTjc!weE/2̫no[Z^__G,4f8eRmS-ƚe=9١nC _$Ȍ(QMAACOV_Gb0}K`["y!Jp˪oqO +Ηʇ8f\LqT՚pK5O5 ,UJcz3\,cnwfjj"ͤ3QN:cx{{h3G$7 o)l2 0*c?nEvU袆f&6jxb?\7)"6M)2ș%}CK,v򩹁O$t:IŕRyEhv ?544.S T^kYNK +x Y]HZlE0-Vet=5xY!Ki9_\SC=3Nu 4'= )))ԬxoԚ%` Q(V&8tNʹ 557??}afWǛߟ<>}<޽{o?ǯM:ۛqܽ:E]'ɋb,}n(pj,P K25=hGp!(9hV(fZ{R1CmCЩ!BJ<&;58.юQRuBѸUQحO!% Mk¢\lSx",ޓXJ@i!,<#k{ +9f`>.nxH(e$)eGiƚJ8m0̀/~UM3Vc h_K#$[快|ܽ}t٢ױ[|jB5BsޣI$dYZOr!jG4琬`t'"B5Hz'>$c_sk +' $alb},y#e|0 vzq~&rRhW`iMk]E7 [ULg#mӲ<ȿ{iiDH[V})r1IZ; [pH+& +kfJE>Qxi{Jл)[5YU@8#\f2&RFaqs:/7:Lb=s ۡx;dCԣ1RN/ݾ1Iad/5Y­N +.Hq Ɓ:jc<\(pҲB8eN@9 +SзO7 ͢Ca2qb4BSE$ +4`\DLV5wN* u\ɦ ,WɤX)`E\a'WV^ʱ9l_6z;Uق1һ:[$`lsCWoHxF]_K$Ah`Vqo`{w݈_ZFc>ht4UsiC}Րߔr(f&m,YYb4(0rI^VdeɅoVsDU$,gNC{4FU'"wUQjЮVQLZGbv]ĭ;l4y"83ݣ|0ɛ d|Hb])nmJ%]@;O5 !OG7u1 tu!RLil`EBOM5K:r SESlohX3HCbMc,tNJ^eyDl:}744y̕c^㕁ZZgQLG7I>yM{Hi\zq1q39y g8+G`֡DSR(%})5"߇n5^֛4)K0gӃȩv6.O޲ +Oydb QS)%HgѧWՅgqA]v˹CNjV}۳7!C=C/.e8Y(C7LiLː[4` EM#8+W7XZ3렺+RF J6rٻks$]ĵ(2#F/W]Q#)&[SX3F IRX-kxG-qcjNjR ,L@ȁa̬x@ܗJUQSgr؈nYT0sȬCF"bZ*C ]c5^7҆Yأox՝!:Kqfr[Lra h +'\rڃHUK `*c7os~Z?0\d O^ʻi:b6  ]vwC G}H*-PJ|Ufh@]3㢈xI)Frqll{4u&hbTeiLiSp!jYłhA=M;mDYB8K(0$_2!#`2_m1[JƽŞO[DBN:K;{rN+d1/ddY KcF+ +YS `b70 )`t|,uϒHX%aF*OJct/],Q?3Y?zd.l͂$qC-9!9p"+t>'ū?~p៧?im^|{xzo_߼ۿ=>z?}|7?|?~s^^7>?>.Q8uç$Ux.o/eшu7֜fBv Ԛj)Y8s1%ԣGW:$--؀+ kf#Kjr@S"67 ȕ̇=G!m  /iҡu6J{vlPҎ)@EX 7kmm+ 3o#6 @7kR=md㽐\f00z΄+7/LUmUk:y +gˊ?RgEbu*ٜ$ ^~OK+so$MJF+%*Œ_Ik^5ǃ]/{gd]OeEԹ<|tbUYԈt4ǁ}YLM軽xmEЎ Cv1 GK%O. +b\Q汷REN[Oߒ}6IzKGôS!c: q;sdG^w5_IeKHn웅$FYD0AnɌp7ՏKVXu.EF#"o2 !{{c}G(ɂQ +sBQeHL2#|W&@9Sj~cwhGG2ր˙EQ&qiP>Fgv3D]2>*i\uf*J[1CV)BdA.Iz yLb'WjZ#1deP͇JZi7+E_oQ 㷾a|ccA +ohc\t^"1pG(VyD'[Qw&{Ɔځ_h2;^>(ȿP!%A jP'WOCk^Gww+h k`[zny0csGQf+U'ѥK!_=+O,)^^s@7vZ'K ƞZmaV먱|>V߂){AQ>s|踀Kܪ˖>v>&?@1Ep|M ǩ jp=U@7@'h'.=w^g=`/`K1\k[ ~JKll{:6٠%A7*!z U|x+ɰӐ䣲f/`S)D5)IVx?*ޘr´ +;C25䗅9T^XlTZ +E`'m'E8nҦ+v#AoqP +ҲY,!sAm,Tv\dM=2㝫2mf>g +p; +5״tl֓_[Q`YHM7_scNHتţs7;*MjcXn<28DlÔvxYX``-|$ +!',sFmcy|,5ڶ1;FobŖO3Xi'H|yUEPK~NWe-Ӯ40fzTY葮j{3 Y.*)Q͔#<rbWS a4pVlM1] Ї~]#T߇ZKi|hlvbJsm(:=/^AǤw<ȓU =zrF%̗>yEðסpR6PmCS@|I VFg1N +n|; EA:F'\>f'eh 7Nv( +&认b]Y3 Mc+!VSld>$wzW! !HAë?߲'Y +MRe=K_ vRwbp"L&&-ƹڊS{ +WKRplP㨘ZʽlTɩ\)_Gi2Vx+O?`"qgdk%!j :P='@5&7]CЏ +S^d="!a@1@SK`>o+(Pל_*h[a +c94e +Ab4L}yEf7@ehHv1 *vA 7ޭXޕAgk苑 \J9ZͧJmPAӰJg`J2WWk5#֚j(tjAAV3Cr8f958Z).-ê"z `AL"R ).#M ,NOaB;e9m|k t %:D10 5ˠQ0` @oG&蒃W6D''[g!gAr?aCG.aЍKגPM:iV9I7UcTMvI}oRLcRM/ؘ]jP=0Gj6{E]0nK妦ٍNnT[*!-cGLr߿pzn mvV"qcv_4߉UqW!$^h_ @[ +endstream endobj 36 0 obj <>stream +HWAf x-j%';9B| fB>ߧJ72VKRcc]#nן^_>ݾ>jޑi=eucl}\6GzO5pIncÔw*#\r}V><^˽Q;{+KS"Že:MkU":Y=:ePٝzeYn /3NYJĢiޱt.rq;5&Wn O}sƹ4̒ K`{)yDFbjm9nFJ=JY2t%+["_tk3]zd޶!QrG滕qG]yl[!gE;CLL#ױMrlN1>F3$Qcں?9(f<>;g8w\:}swucY4w1 Ƌ-0a6! Q%Ȳ;ԇTyl#OyX|_}^;96y]}qpZ1.0;VMƟ5AGu)&&o鰲~W0 +_aMAj6fYi>G"hFG1^LtўI#y^IV E(!'b !D#kbTNX8n CA^!jӉ] =JJ cX +YLU7P="K<ǒbmvw1ݜv,qG1lpGVQ~}8UarZJs1>TTCUyNQPjSU l ",).̅}וJʑnKz R^ FFqWc-:ȪYCfZ6q3y^SRbsRщb'> ExpRSh23&NjXi6 [ jಹ#nOA˲O2=,3QÞEL& !H4@BK kTQmtK#8G<ϔ( +%65YhO.IrU(8\?n^҉ dח__˗?z?}ȑ'_~÷~O\{.#k\e]'ۮ M *38IJ& a]ʚp/VAg2gYP:deTNq԰̑Đ^1K +luǷ9B[Kbށ"zl 50}~.sQq:?y3 srMD2Fp{Dgƈta^_q&jΣ;L7o>|dC7^> +bh`m9iJ9一ID׵k+t*Ԡ Fi S+#%@Lp |/Ü]kw`OW@1[.q G0pOw %eP5Tr/h$G867m-jPaIR sr%W9aǷ^!tJle.p⩸ ̺b 8eʦGe+B|:;).q/LFMU-d^,!Jσ|iVщ1@6ThGGc9xy{p lElNhaS^Pq!UhCHcs1DF?P 8M`D,v#xlob,^PETϯɩd$kPqCv/[SZ Ӣ1rJ}P$"M䋌_{8 ū]ZJBx|J!kXrqZa'#(Hb(/P8 S+`fgE} .@9|(\>#rW YgR$jwW+BrN*|p Bx ` +|+؝He6ZPu28kToCXTG4OFyh-ϲԲ ɰFD;c` +)e,jL%#*ЎG@a)K$-KG*ADgajs:7ųy-*V+uLS4~t3 +{sƒecMT"7隻\J6}0tWeog[Cq"ɲ jֺڊS`"X.Ͼ^EN,koo-[ Ljen1bG?Р25&BpC M`'ڧ*<\Cf]fy!T6G.}-%n&,}"3ݵ)Duؘ$Lg*Cb\D :2)g= a3BUNzPx;-#X 3[p+UW|#'uMu}H=5s& RʈJ[*)[;jk}~f׽LHL6B4@!aH H/3I2o['QGGMa)ڞCXFK~`8?kw\w<~ų_n~O/yg/no~yy_7oۻ._swwY/xw}}s^;~|oߞCxqr a3*Qϰ~Fßgtl'2CZ㌇nУWO߽tI~Ÿ|? "ϗa)X!!]Ή_V' "$= H 3C"F\6x92[C7kAH$;/ɜ<98H83B)lCtD8#MԆ@5MUfG1e##{h6)tF_Z 0RUB'a3}oPZ~amm*WwuܪZE +@ +գWwF)Hᭈ8>DPLKdP CKYM@E F˒ oB({+-qUYY݅N`0̚#M$uI%e dDKgŨeMXɿ6 +0>n7YqAgp7 +"Ԋ&}NZZ6|mR)S[sЩe6; 6F8%;PqRq\ǩIǃV$~Շ| [ +;R[ڊ#o<M$(+JAlGTvSC)*܋i‰AyBW=HSKn{GD::eb0vVk)ճ0rY(=M%5|cĩy&k X(9r/aHyI'9p ~Z +IT p!rk@Y%}b')}bBLj!Br*b̓V.R3߿RIN22cnej:a,j<⒎|VG,_gh~ksjE*J0cG}!}Q0fkNiQUϚ}#N,*8 k;MuhqC@װ!M|Ip`# )BnNP/n_C7H9>M *VIȁJKX(F<߀Đ)f͠C9>b3\A+[IVD f5cU$dxdŸP ͂NL+k/KpxJN5)Xx#+K9NiFYeZ-~hYɐ=Ix@j$N*o#Λw"}Fg nת暚/RNUԖ{ѱ {4l1dO.sR@Tw|N\PJCU%bRߤ3_`4PjB2 Geh{gG=rb5CϾJT t aQSmofz*Qn@~VWp4z`3CGIa6ءk8n#VK{򋠤" +|9]u1ve=2SṚ,"j\L9nq}Bw)KEUb:\ΐRi0*I PMT +үv9\򙲛%TSd;ݘyIzLUs1y=' (1)W+$f o[FE2̭LjuB]d6mjRb,$Xϛm3Ly9& RQ3㠫V~'H~apu&ͼѨ&^-R@DڞN@0hˆHC za\fWF{։Q J$L5"%2@pB*BEVi(z?Q6wk .kȨF {PP4HXG_Ye\2סH+}eiǥ|}FJ+"YiUS>QPhfG>_W"[®'9c]fU*YV\=ڨtnqU͢ޔOw&rŴĕ$Z[b0>Sr9UwqdwOvƥI[VTQ.kvMT$1Tg! +2Tϻ.1d +a0P9@lcA)re}pT7:Jpnݵ,tnhI5bvt%}-cz  C%ak`ay:_ \$)@PРHh~+"prtUͼyU/ 4`>iVA ߄XRɓBQ`3.4Ĺ+L]1e^'Li@ǖ.]CkY!c6CQ}  j bԻҽFr%5ޙD[+tɝhjxMFOVKA2]PY*1fn k𘸤f.SB`XH3v4Fa673(sAAV5]gS0ATq-Qb(z,ϡӝX*Ļ.*qLqӵNAIS+ӁVk[,Rz4R'mRK<4An zdo><>o?rt:~??O/Ϗ~<~j݇M~Be 8ywysCᬗ<ۻmEKK%ԠDg+42Iޕn7\YY#\PZQMɨ!QӪo)q)`RT0\mBy/kVXpxdܭ6Mh>?-ͦpAVv.(|J5Wr@a$kبOʹRa +n-GIf/rݐ0L +eК>p ʍ1_}9"3PB,1Ba,·t*B(|-RQ(D;ŃM/H:Y +!!TW|+𙂻MkuF([Y~E۩' f=W.a)OnD$LrN ]̊]\R*W}bl-l@R%w0Y `E$u΀q/7>{e0dzpd:؍N]-ePh7?C" 6QnnkRd~Ԁ7&({ݛ+CO:29gbZvI) BB_M';S5Y3m_c`nl#aFѵ%ֱbbF(ifJjÜXʀx00#Sm9*h}Z>NH" qϾmlGU*4ȲXnP 0EDk_:R* hH, u"|EhP؃@ +z@t@jH1Q+ӓ?d+bA^ƞ#YsΖTghB3jcO}ڜ8@K;pTPX ߏV( 6߹X +_ޖ'Xfߔ_V1I,y9@*sj@#*Xf6 &\f2 (.^~qwc V\^4Cu8!+`jNeM1xH[ ڪNŁH6Z)"Fqp@G-q*A˟Z ɜ|0%m0ߎ8RKs<6bee lEyQ󾽔|j_u uX &^UN_uT(o, ܪ#n@ӒdhlmġX,CLJ8 S0c( ]cV70<|2 +hϪ w<,w5|0hpD|p9":jY +t aplPl@'%_#X3]L}pl"/f]6.sV`ot{iBnBQ4xbdHsRJR/IزA|%9;p} 4 +?!:sJSrb'w/GKI\J;3FAs FҝFt.EM()<- ;e-Z sKI4w:(/c@D@=MR+@hPRGڬ(vo5*=/ya'?p0gF۲Tg^ +NѪ +a7FOHF>SɆ+Z"[ŻS_5Ux/HH2&U's1 ꒩ly +`)ț<+NGQtQF>822[v +[/' t# ٠|f݁fzXʒnzl+ٱwǚpdW+R Η2sZ8zBE:Jna5W Zz83i⽺d36I҅QXGze!7cT@"EBghFcl)23nV +rV)J7՟L G2oƷnoְ\߂H8^\qa]'nVnPu52C1e鶥.Ƃ 'cRیS i6 uئ>]hr!>ZN < дmil5߼UWE|-xx$\3> !W6\ zi+b 4Fhr0J9?6LcsxTx-Suwۻ7(?>__˧92|p|z>cg|&w]P )7岣WRW^Yb$x"6VĸW-323;O?{㯺[c )^2\wں3$E2k ^톶@vgPUU㾮Y-Y6㽡wKjzWz-gL*҃|tl( E0ܩfuJYS3jZKyH.!A1 +3-Tڸ},C7:M"K[ ~FLlƖ`qҪꀋAƚ +:W?OkUGMgC)d9)-rHM M٭ܗ`4!ŧyziuw1r.}ͼT3 [ҩݥEVYwz6y*~ k\dt|-;GI ޺Q1*hL:yN(s)yc9y=ԡrE^QX6Od/dQw$ 46U !'W+p\fpڀ 5-@7̅Hn?Ql0$lZw]E|J0 (Dݵ_ Xt»FM31:-K +[C [mҎX50DV=M +cÓׁFw9 lyfjM"]{m \u~U]xJϲ华4R_2akjR?ZWJun \R-5D'+0cOkr-wP۾zHKN_C܅Սg(w®&n+%˜YVru#i{ ~d.٣>/ ^k)^Тu IE{vD8Q 4ڌUsa6:&{;[6Dl2<7fCVNKłlS+1LdCڥN~Z/>^+ʯʊKcyb`0<P|06UbTOJm+gd;1 ^(l}A7Ї4W3R1D>z}/Id!WcrIFwTb͈#*DJF>QaNGjX!N,ɢ|D SrR/X[:^%5 +XHOtIJX*Б&D78%vߩ0C{NJ*b[樱 ޿i |s#!sEN\4-<7mԵCCf~0a\>oS5)$q;L|X.r<Ѳ4cnd"}$KS}wT3zj_[&2-+P|1^l߳.|9D{{\hd`i(OE֍4ZӴ63OeQaQvwaRMؖ[l]9&jz,;vr2qd;uY^.YhDc-l5ҥHu&IrXE7ߚl}Ɏ!9-_%[&65⽿=N~akbMad +ߣ](HMk8`kpnZ6R ZNƷaA6_Wo'B@yn-86OF%' ,R9jM[=TޞUdDYOQZ>e#6ܬfm;)ٔZ$[ԟ(5ڻȒ>fK+z@ͣdA^.$;-3W\ceP'\yuSYwO@+h-DD7>IaA;lԱ^n JODZZGMC8)n{?NE_á]:lX.>ѯ+>?NN-e!~h6 A(0> ZFm!ΆbARR׻00 CTFMb`CT1:kZUzԠt% +?LBW\x7WaW vK(-\KFGuۢht<@rI\U;"(s7l+hֻWBXyɉlhK{9Iy1SJ:u*b%&gr@̓֋,:df@Axv +6B4ElV*yDD~G?[~y3>w .[aL&c%El?u"7)M8nt'-;z[|z> "?4n@y#d]leRSm@D x[51kT>NhT4ռԻҽ69cҜAq99!~8*ՠȤ4tu@l#9 ^BM'MtnC4-^ #ԟCHP6/m PjI BvMD]f#ZOhdD҉Kz6u%DP.z/l;;<6j") q.Md]j`&螬zBҴnsv SЬG`ٍxeZzF|zS8@_7{^[<2oѬ 7z3[*^p*CT0=H=QB@tvb!JQt0z9.4*UTH|DŠKɰf)ʴu,ج\/JpxseADU?D EK%gi9nd5S:5*ɕӪ@r ̄z H%4f(y\--e}mju*:@ijF!s\}MKr Rńic_b+"D<>[*}׮S`#$!;BJS{SpiZn#:Q]ݎ/!9sD@mDHg"Zʐiϱ>?:e9d$xX.{GK3v5,#.P +]YDP M#:s"g/4 %H&r`jozMF +X';&) :lu\Lvd|ubo^B%+†tG|l[Zc +UD?]+ o [6*A,zyLt+Z_lܻtzغb*xJ[ϳ+Ӭ2Idݗ";;@c +Z$I#r'2[n~0ցy6D٭~1O"kN1o rBH p7R^C[VK/N穦Nq +it JcЕܐ.Ӧ(0: Vٖ\`C +Pᢚgi8c|J)CJ!C50UNEv9z9)Ȩ{"mհY$DVY#^7~QJY`ҏHϖ] 4J)Q2n*3Nq};(@ǰFXggR؛lZًAYp8z԰LJi:L :'1s/#٪1l7RjE26ԒXe5TSH}(GSE0+9g-qr;L-7Hv>jԫBlmMaWVv:g+컳4ֹ M;uE6~b3立0`ȸA0GfcFֳPY/,ka,vܚΙC>۔܀eȇyVMOx{V рh9+ Θ%O㼱մzz(95@T2&v+zG's +y +G%q(aOC p-&raSE5B -)*@8x!s`+;}C:Ƒ1{pDoKji91P09Db*>Ll+L1' &j,}opؠ⦅k\Ҙ(.Vf,Phkӂpo{Rkd꼗ܑdNFO [CU al0 AgԍEyWF Ub Pgw `,/C7}Cz5ϣJ$ި]HOM 3<z̺tTOT6jخH&'chutG;J A9*ک`2Ļ)S 9 4R,[j*ֱyX_}A⌇8 dX !wCH,(lUq\ r|tlvuY |#|iLv ".X2YFʞ^{Y =+ 1#4%j =A8Bp7%lp$84{xN!T"̇=eE(6 +JcW)|Lb$z+mdF7\}<覐%k3Qޣ lG(@D m}gphY#3sW_w_> ?||<~z釗ϟ{:ˇOϿXOʡ?SDo/??~sa/3j_I䈢W ,E[@%=nR@;2"#|Kqg_T0OJbiI Peb/8<[7ٗQG"Z0PͰ1!?qjD_*Ѹl*B`ջ)&fb?P8O888O ;k߅&#M=υgB(4_a4%]K9D2Zϕ/Rv/6KPT-|ˆ-. 8Sb 8;RpKRi@"](~rUPK!:R^}Cmy%>"R0?J@*\Jʌ;)jQJTMR_IsEL.i{D6[kD3N:LCowk]D#hIoͭ.Z mwXjFJ x\<pЖ}e^ L 'u4 +-Q6&:a~r]s|QG9;!C74߸_mF *CU+k-rcEdDw4FISعոY)OBfeȭ݄ݟ#\%.| ywrgOtS|,@fuyTb +:YQ,`ȧUnW3&dQK#:moe8-V0fy%+ ^_;lz83]zH)2n.{0q9冒nݝgJ u#EfD[t!G˭"YHQUY$jآ{LlK'`sWA"FW +r:n Rմ uՑ_o-"bQ\nG 6:-jaI :4k#U-wO O}\ xhY=[H[e!1{iۦR5JZ{b7OɜNE3%+}j/\L?)9$=)oG_Tʷ× + +i`TeǗ41~ Jj~{:!>[AGxpa@CصŶX+Wg@]s6i=be+GcΤYrF c` +O\vY30.Dz#sذexi9vPi}=LH1X7f5y]qX!c(Op3婘#W?T6-DB3Tkb1,Pxu0[Hx~龝9Z%yV ՛ɹj=صhX+$'h70//t#$:=|Vf+nMn@r䘞&aV"x,GEw%Or.&x7 V80E{CtlSME>uZ`% BX;BpD`N_ڟa;F,LNahTch԰[|dFcUkO9!B*y^ј]b(q-Z잉 뙱=bV5<0 v'Ue(V2f98䠛5bh~MgvQ"0%${ #3WeMƿH8+?w}$,bMl0VvE&ȳ~I^,UugF% *u>:u$]-5Q}N qܚTJb .SS;, Qy):`QQNx &E?Fp#licIPZ!F2K'T4aK*}ª##}@IW@ +g‘  g&QƦNZ(ĘXڂdz<Y27) hiSHl=4v!jH.@`;/"p6p^`L&k1t=s/66*sm,6,˼M7ۜ$1*|StJw u^k012\hm^Cb% + +8́.i7l{riX_; >?ƿRBSYY32tzKAkx*Q-OCFJ:8a-㫍o֩(OeT_t%kD91+m5{+{MtM5CFY6V"1< Q#.zreAHZ$[ eOP\Xtp&IGXE)GNw]]Q +xzCM]Pg-E7yDdHi&19ED. +A@">hn:BH5l\X s'[+:IOfU/[~ +_` %EH]OrbXgd +\FBOh6~^25%GdDf~sJeD)mwJoy:f2^TmđݐĶ/sN"ZV&FZ1vzəY\͒(`Ux̣^@"M!u H`H7$aM.D]B8;Ť:Z*HlN: ItGqd[$e)e-K.F;R5S:**Wفٹ!*[/th4g :<~BA 8hD1us8*e]545pPQ~3FoE]ŀrGJ +Zxcn(H!t}k(+"cE}6v䙳A@Kx?R JKH^J/>WVs`gkɁ(6 \%LGau!%p F  r4(ȱF@0CѼF&u*fH"w,vTDmfٚ@ +8[aa0BPR&s.͇^ !omz*!e/=gdy"Q1&I5ɓUѶc5a?޵5;FakSkc?޻6}ƃ}엑?{ &2~ڃ[_d/ޘ?cp;o|`/۟;N1-=eBy}9Q=sw;{/]X9Oo#B|T]BQJh䱂TJ{s Lj&@en C C젹3V.) ce =v[]cڪ[;D~ǎĖ nFC/[^!(|oP?b<٩> k7x1'΅ʄZ4w.$; 1Z?է\~̽YĴP܀P3gbЍ)sqnmm@ȬeMc]2 #Q{vBSQЂ!PS, ~5W ,n} ̒Kݡʑ+aU;pwpLjX|%DHh#+ќy;Q`p Qf$l:枼C FijP&)X,L ͮC 7v]Z?é2te`0 1 x?,kLI9}=Ѩ{'["RT0[LrV ӐWUkKv梓RXNx35=eR +,jv]>\ +x/ۯTE,cCِu5an>'noO.8nh <)oCێ0f <4}譹VףY t}'a3Y΅.3X1Z@=Cw% o?BR`y?]|N?C3C.0% ++PЇS(%Q` i-,E)@ jbƹǩ&e<+v, ]E[9ȓBvDEaiAͼ !'; +&n4wJm:TC_!+ LPP/R(e#gU3[zmvE͊ 8j/[ɰn(;mn,;p<2maFEJ-t&QnA1sqWLWy|"Gu)!%fZNzނx#j.K^uUS9Tr*y | , *|{ 0W)/+/'WaTpQj\ry~0"= 4Bիjַ(Q>;_HB>6uAU(N2[>+ }ıjkB\etvKD>т'؋_ ~:t{ЈI7I'D6' B5;Oר]Ԫ.|y},]-(ot ;y)Mt,79ο3ZO,ё-LПk=Uu#.ҷS0 Ԡ:A5$2O,NQ3fU9Xexcme=-/5d!AiC:|~aD^gS8GlTϡ(Ѹ-2V?2ޕvH*NE ]drc{-%UN~$ +UZ:XQ|%Exn$+m@\l*$2%FlLeu>_ob)Yu^b') wh7XcoLF3OZ, VhWL\եZߴLkUT#cOt~Wq]T EP>stream +Hͪ}k–d[BKˁB I)#[e{N&xbe|Rx_ E㏗wJhR +~9.۰QOpYVklu7vB2<)=؞4xK'#^/#?}0=ދ_o9f-kk~n}O^_?~맏XY,_Wqa6:{VwFjt:I{Q+ت`!rVZmk!\ *ժ:pķbjt7"ښZRTQ:y]oq +:#F"gP:EI‚IC{ێzzV dE9Ҁladd.CkJ@ՈԟmB]6^"rOU)-x͏ Jِ-r QlFYr#ʽtsjmCR):៛:O,[w7T(T0&JyCuBU?{U)60Gf^UҬH9G"uf I6TxKetjz~J^kUPZ(js{YPn}]HӨ !EnuŸ@wMD9-*Zw%Ru/ TSr{󙚤LLbBj!("z[›ERRbISUmH6=\j5_e[ڑ~1QTPBAS ::7q-Epa"wcƘܪ{2vڜG#qKָ n2܋%Rk.R! i\4r7{يxNkMל MAX-l[},t8o5m6 !w`S@iu~F똀5h֞)ޫYWuyW(6\M7(Sԭg45<{[[UZRH^D݂Z A?4 ©$}#_(ZCcdF2Y!A47aUqA[ȣ{w3!,u /L>V)*5 kMv/2~ Kۋv]ST; aVvv|#d=+nLٲi|T~W*V=ZLkHDmGʅy]S^e"z'?كUP;O&I?md]JѳM+CBJpԘ%خgEYSD1&Fy"'͝N;!Svk>G8G%阱duUL +pZ>ǷoSCr.[QzdKOc&Y*l4og_5]~w/~ߋ_5zU1?Ô<2]Ķ>}Ƞ캿Lj 2l.BRŁVg$Sõy$43Ӧ7[b!q$?@{]e(隣NM({jG'\!oLHo)%P豃~ْl]wn AF]hN]e%m]Z1m]B-\z#-v.P.#ܒ9Q(w3mcT^g)lnB꯸*djdPjpdž^}Y0|Ѧm)d&>y]V TJd M k"Us|rِͳυl)=IePr(}-MT^ߠEVDZ»D]\L +~%хߎ"68>g;"ߩ=xԀQ)r.d,[yV.eK^(d ?A"R~:Z;-yOz m܏Bg|ݥ ЄЦ=۵PDeZ΍A1ܱٻM& N;1Swk6|* +Ü# -sVPvLc9XkxUO0:_V000C>˻ 'ߐQSfnAU[j6r<;iB5(OIAK,owhSm_KUcM#.q =7x圶Һm C'sa:aB6J;֙X_x50w{wsl.r|YH%ߠ D9[g,*h {6R|ɲ@B[F +_stx]?޸\ҏTAMm[?@g?Z<1EhvҫiAlAخD|fw'J9nCM5v6?m͖ )>EsѤ+: u-bfȦu5 ZC/P/f(fr~{١z gts)l""Q",%|dND[u 9n~o.v]2Mv"ZrTMe^&!hU=No; 6:^GwmqeE)8ҩ&={m= f :FVXH:q8Ԗb;0mxl fȗw/w1ԖYG ёSmFUhrPVABytsf-3doeXFq©W}"eAⷆ7 [Ͷ٤-ۏhC:uB_9`RuJg\ $Z~𠄢 B~ܨ&H{]~/q:P(&,COዝֵ p"UvxXi2v^צ¾~^ }qdpx dC&wJvW']!j]:[%]QfͲV7Z@8qm\7+0+nR/cӴ +\'y%sXyX3wG8<꩸ueKZ]/xX[B /er_Q'j~B[:3J` C@ 48`;ii5fUm%J|v5[h>^9։;(:-!hf&BdWؗx:d^ܚ MsCCH0S6Ih=;Ϝ ʹ;tqn崱ݺtMB5V 6wH2N;6xE&ҫQLrAzè%(,-g gN4Z~>n=qch^>p#;X)Mجt1sIU,6,[..%O^g㟿~x{o?O|Wz7M>E;_t4s@]Yi[i&& {z2b!8[Bnk#!73 )"oQֹU:sCS\Ӻyd::Eǒ2]a#F׺EcvC 4"vQ㐅w-P 0ZθW㶷wl#r&3N΅IݾDt)$@eH? n@@weqմܪk``g +Dh+Ä t "V*ս޵(=r)x4o&h}F(] hYQ4CFĭ5շ*sH9t1$PcHkt!˔!wTPN_uX0 \5VZͭވ=FQH;pYJ=`YyL6w GԖiVSAg: =X8,y.I3=ОѓtD݉઀u2ׄ|h8An: &WSdyL{ +oqAN9<\ ߡ2UFlsL]f5|]RN +|7Ro'ܟrM *`Vp#t(D2}\_/kXaw'U2d^`fizfOuR,&Vx-("JEN7$< a Gm9鐺OM + +,3ڀ4Җ\L2qN΀]jlQY<Ŋ^ 44,ʱE(St4sTD2pM4(`:QjP8K[i2~Al<ᚴpTWe.Q"\!XF 6i hUA:@чȕW@:OK,U￶'42iij`0ɳJ:V:pY'wgz:!r. -.m *6qSzb *04dB!qK˲86FjH 2LX7#Yzjlr 1{ 'd}wYŭ fYvLBf)y ^^^K{P x[7er6jz!rϒ83'd! 2HF[{[ m6N/ݜO'|zzwJ'gӋߜs'WwۻS:___ ON}vU >뛻I=/(˗O^" p䪊N~;fPGގ1+%GI7QߋG<wŠg˯xk/ܴFU0jZl-.>).AY5~I (<.DQȕtd:0 +* I=>x4"%Cu(=<@Pk耰ho$I/FZ-@( `qVKpÃ88#Q:8LPKiə'EYtI%,Qj_br9Zy~&yG6-GA|C?dHxx_G?:;{{y:0!A:O;c䬳 7@RNZr{zm<qZGfZJ@3r]'Gq9^]t>$SXkX@p((>"N3]+x|Z\pvǰ)xb:VDpϐ{ Ⱦa!(cR9-;JFR$=AM +0$ 7 ^$1F|r0 # A\2`㳟P  ij—PGө[d"1Rc`"_kK?sI!rn68n !-,[` n<>9\@  +3GBR;+D$ZIeGrka!VAR05iCtp&DL:F8׉'%$2YjO +2BDx$& *OԔwH)I+5yNt ꇢYj1f%|eArQ <k87%5JFI(\ǘHXWL|fQEf F#n ).\ +x)P$H \wwtu#g%܀Hgת˼KI86?u&(9ɌtC0y{E@ tJ+];7a3D|#ԟk ze)Ѥf]\E̓%K1c7׉Ƈ$֩VpaD\58KzUIlBnKq$ +W5F,Vi#L 2P?+/ +fqXJsΫ\"9Znul?׾m D%")fȳ_(SY7{r٧8|(sK_prf*UdžYMN T? >oLd$'9VNJ@*4j楜rH +`2QO<Ѣs-3 a+|r֒'΁# NGl$$;dМHXu" @(yl%Ku uSRLC7<_piOGOA-?fskZ6XCnE*TaԵL«-\#51%&\8:Bh6B (S*m+l.S3[&ABxq-l92ESர'd .*ŰU@~/* +g( e5D3@@Tn"lv3GEp(CWo5(|I +N@w ڒ } g(S=D%yR-|[p ^&C1>+O>5sh'xIB~eWHx7qJ ܯEz3 qq`2s5% .tzY3wגgm#29|UudJC[]z}=2=)WzA[6PqGw"0%2}?Y>TUe p}|G+ *uV`4'BkU[j/[%w-{ɻ3rfQ,QSK]N7-ju?Gjl];nf4jlXjR]>+ÉMaZ5A\3"XG$ s̄|w}LO"!z9 +r޳EɯRK.j@N~G܇1 +=ULٞ7jE%$9Y(k:m$w/)Y?\z ȥj'ȃYZ2/Vi3r 1|5[f߶d5 SϜ_*HT*݌Isk;+].1vތ*V7(Kþ}~l%UMG7$ћrU,=n"AqTxrTF+5:^z\>o[5ԒbShc}8drJё)Cnx)YYE5ˤCd 6$!}ɨkU:(ø@_/?~w}y'9Ïğ|#?(%ᙿ? /~Jo>ɗGy*E);cZe/ nvrЖc 2A"%X'$1 5R}$x`ߑ=F$ccGWo%t(L6X!8CDJjP^x pФ~pw `?w2^\/2<$SvԺ1J.By@@fpPx)o !*Kԅ׼bݤk8HfiL7+ b? iYB #Wh&~BtsV=?c= (K$Y r˘8anb' t`emj27{yu˨] +ʼ4)wxStyA5.ѡ(YpBlG!2ʀ50Z.S:ٳ@C!! *z7XцNp0ظ4P2.!&FCbIbbuـL+)>:_OLtW,I-RZxC([ ׻1ynRj +R*dO3# "MWǿ.=+ + }BƪsU'W,cL`Ab,I #lbYۉĘ{v: +JK dP҂>sQ4[] [u#aZDHc`]=Bq9IFzzP7B;%5SfiCV˔|ÚDg+) 5ex^Ln6Qj0/=h&GUBw֡| hlUίF~Ӭ,4j=^ȧ)n hǁJφsP4Y|0ßtJEjS P2-+Gd鍒#b]?Ы}Oр>0 +R5%Pϼ'aP⿰9sMXcgsdKC %Sp_iFԪ0bZ !?5,2MnI'P u ׸_Mڌ0FeU"J\ e{F7y]Fd +lB@TÖ8:WV)KdG8E-EQ\a I˄eɐԨB' MsleSPr[h#1Rp"g1KeFgC;D_S-("+.:hv5 +Fg y/D 49֑B4Uе\PXWf`D͓G4:E UըحP&i6 +p㻼(DJS6ߠ8S]OI4%Q}WBm"'{bj3zIH"Ű hZvh?g⧽@p!+]J}+ILa,] +q3@$4J>P E^dbJA $6zvtowBy^>UjfmOGꈢyH`Fg,Xj#zL^j0hlLǘY։)K*ACe:ߖXxO}$'-Eʲ-Eoh" sa^Fu-"d3Eiv +y WC>a0hu_/P-36]zĂ`6(V7pRRjcB*##Wm5@>OjFRhD7l*\ZY[7jQZ8ʎH30T^N H9r[Z5=|-\6V +soN "DhfY +=itnoUv>)B M6V5ff=4UJNNwQTAWs uQ*B&j + Ϛ-⠴yR, 5t"6!#f<=Pi.O7z1L,ϵ OĽ3O`%E* .X;uo5D}qWE)2$4)tX>*I\z>\Rg2 ˂wOj2v ФmV#ʳ +sL:D+/-qS v2}.M#1"C+p ]tl߂e@B^2 +\Ґiv<!R-5 n"M0mN߃QU: Ym0Q<>D'vA4"b-.eK" PDrl\A,Ї>uTcut(4rܼ"HiQK:U*B{=Fq>mJ`.T;WG9-4CMKɎj?-:BWۮfyu˛>|ŇK_\|w9!ûS:۫7W|{Yx?ۣ۫@~^?y7WTܜ^=?}{qaڞ>|W?<||Ə?CQ&_y2>G=SԷToO[H~$>:Zbl:l8LAKL=6?Id9Ί{!(VfwuUSԆ":XwQ'AvE49Z{w$?YZ4u<$@/9atE,mmB]!(hΣHQQ'palIb`? +$0]lP1FP*GBR\ x)] 3%]k<NVOԧk6;7שׂCp fф"JFN8N@|Y̐jAcƔkZ<lX3Qa?T3B.P8a(GvwPzޞ y/vK G $DW`@"sOhR=+p6,Q#86u.r$'\ޱM2UN2|V8tDC8ƶuш DCC+! +\]nqhƇE1Q^$`}bQjJBV F`ekrJAeq+<sDԼQWPms]E2h +Oٸ +P;H't_XJ*Gyʱz~RN5uI拸Y>0>H“UCW81# 'Oky2xj0#'~kUipO-QB|,^wLu4IAQYJL>(iE"Ǿ KuWrCQ6!_b9xW*V,$1*Glr]Dr3)T݈bw'_9Tx֖JҠº*Y-]NŽ8iTD|vaJQ\mQc*,vJeGPqi*UXh,hM /<C">hr./GBX CYYl[!ߣV;Z߃^TԕѺQ,SZy@ %2P !FZ4qv`3z$r#1T3+8S%\a8P QBpv@@=shbj +<ʇlHwstKx:>j`fJ](4]$,/,JGE)y[e=y5(H>{XAC!A< |q೘?>`}3Y Yڴ{0"Ođ%2{Mţcx-}-XA575~cJ P3ОB|b~py;@{v$W8+oʜJ]3Ip<-GbO܁ QjG +*y?h~|5ߓM2Ťm Rscߙo"%PH̝NtL:-6ߋ'xV `:4f$f{;㬀{{e7;^ؿ{7y? ]o,H8^A2'"{ <]Ĭ^Қrm$^sr0Y-&{/k{KKD' 8C/_)|\NUo*TI4A z{#c?n4gtR-)ۘ{eJ +$٨<K0M5I: A$g$Akx) 8@9 4Lmj¸0U)rV䂣ދRSUNoe+O󯓖@S_t]7}YV#7&? +?ԘuA!F9 跶=E1}:0m +nw\~8,ZR6V D5 k1$2D swiq;Ig;鷌HC0E]9%yWSy9 |6spOþsFFx6dd6,Ԝ`giA*֙}5ܰΝ;*a>䜃0(]t;-Nq{U?5G7^xQ͒`;+H_8-!&${CebktK?w}#H 0 #~^8ݚ5GՎ`nŏ_{6f,=fǣG[G<, ~"ZL kš/ +z0Z9a/Uϟ('{qI,VWz'pUVG&ubf]X/~'ttMsQY,~=>&8q?&tv[J;ںrq{4C +S/ fՌ~n rK%H%M$ъEl4N6ȍeuF;3jdr[cOMQ6tO?^0jb{(a:xAm.%KzK"HizbdG ~ʙфaʏfˏGV}bilQ Hj%#%Jі 7CgQn?jEM~܈~4GƦܜ-=>.z[z=cӏa_Ji|V 3 ɟ?7VnsK>-}n>U/lL`U +endstream endobj 6 0 obj [5 0 R] endobj 38 0 obj <> endobj xref +0 39 +0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000045996 00000 n +0000000000 00000 f +0000194229 00000 n +0000578044 00000 n +0000046047 00000 n +0000046383 00000 n +0000194528 00000 n +0000194415 00000 n +0000193260 00000 n +0000193667 00000 n +0000193715 00000 n +0000194299 00000 n +0000194330 00000 n +0000194601 00000 n +0000195221 00000 n +0000196312 00000 n +0000222856 00000 n +0000233174 00000 n +0000246542 00000 n +0000268460 00000 n +0000290052 00000 n +0000311669 00000 n +0000332950 00000 n +0000355085 00000 n +0000377242 00000 n +0000400050 00000 n +0000421782 00000 n +0000440658 00000 n +0000453508 00000 n +0000474601 00000 n +0000482158 00000 n +0000486118 00000 n +0000511442 00000 n +0000537565 00000 n +0000560996 00000 n +0000578067 00000 n +trailer +<<33BEF8C917EB5B43B0DBC365525DFDDC>]>> +startxref +578240 +%%EOF diff --git a/meta/config/language.tex b/meta/config/language.tex new file mode 100644 index 0000000..326a1fc --- /dev/null +++ b/meta/config/language.tex @@ -0,0 +1,52 @@ +\usepackage[english,ngerman]{babel} + +\makeatletter +\newcommand{\newlanguagecommand}[1]{% + \newcommand#1{% + \@ifundefined{\string#1\languagename} + {``No def of \texttt{\string#1} for \languagename''} + {\@nameuse{\string#1\languagename}}% + }% +} +\newcommand{\addtolanguagecommand}[3]{% + \@namedef{\string#1#2}{#3}} +\makeatother + +\newlanguagecommand{\algo} +\addtolanguagecommand{\algo}{english}{Algorithm} +\addtolanguagecommand{\algo}{ngerman}{Algorithmus} +\newlanguagecommand{\loa} +\addtolanguagecommand{\loa}{english}{List of Algorithms} +\addtolanguagecommand{\loa}{ngerman}{Algorithmen} +\newlanguagecommand{\abbr} +\addtolanguagecommand{\abbr}{english}{List of Abbreviations} +\addtolanguagecommand{\abbr}{ngerman}{Abk\"urzungsverzeichnis} +\newlanguagecommand{\losymbols} +\addtolanguagecommand{\losymbols}{english}{List of Symbols} +\addtolanguagecommand{\losymbols}{ngerman}{Symbolverzeichnis} +\newlanguagecommand{\uni} +\addtolanguagecommand{\uni}{english}{University of Bamberg} +\addtolanguagecommand{\uni}{ngerman}{Otto-Friedrich-Universit\"at Bamberg} +\newlanguagecommand{\chair} +\addtolanguagecommand{\chair}{english}{Professorship for Computer Science} +\addtolanguagecommand{\chair}{ngerman}{Professur f\"ur Informatik} +\newlanguagecommand{\chairsub} +\addtolanguagecommand{\chairsub}{english}{Communication Services, Telecommunication \ifpresentation\else\\[.5em]\fi% +Systems and Computer Networks} +\addtolanguagecommand{\chairsub}{ngerman}{insbesondere Kommunikationsdienste,\ifpresentation\else\\[.5em]\fi% +Telekommunikationsdienste und Rechnernetze} +\newlanguagecommand{\seminar} +\addtolanguagecommand{\seminar}{english}{Seminar on} +\addtolanguagecommand{\seminar}{ngerman}{Ausarbeitung des KTR-Seminars} +\newlanguagecommand{\project} +\addtolanguagecommand{\project}{english}{Project on} +\addtolanguagecommand{\project}{ngerman}{Ausarbeitung des KTR-Projekts} +\newlanguagecommand{\topic} +\addtolanguagecommand{\topic}{english}{Topic} +\addtolanguagecommand{\topic}{ngerman}{Thema} +\newlanguagecommand{\submitter} +\addtolanguagecommand{\submitter}{english}{Submitted by} +\addtolanguagecommand{\submitter}{ngerman}{Vorgelegt von} +\newlanguagecommand{\lsupervisor} +\addtolanguagecommand{\lsupervisor}{english}{Supervisor} +\addtolanguagecommand{\lsupervisor}{ngerman}{Betreuer} diff --git a/meta/config/packages.tex b/meta/config/packages.tex new file mode 100644 index 0000000..a3b3644 --- /dev/null +++ b/meta/config/packages.tex @@ -0,0 +1,153 @@ +\usepackage[utf8x]{inputenc} +\usepackage{lmodern} +\usepackage[T1]{fontenc} +\ifgit +\ifpresentation + \usepackage[local]{gitinfo2} + \else + \ifthesis + \usepackage[local]{gitinfo2} + \else + \usepackage[local,mark]{gitinfo2} + \fi +\fi +\fi +\ifthesis + \usepackage{setspace} + \usepackage{wallpaper} +\fi +\usepackage{etex} +\usepackage{latexsym} +\usepackage{ae} +\usepackage{color} +%% Mathe und Formeln +\usepackage{amsmath} +\usepackage{calc} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage{amsfonts} +\usepackage{dsfont} +\usepackage[nice]{nicefrac} +\usepackage{cancel} %%druchstreichen von Formeln +\usepackage{latexsym,marvosym,wasysym} +\usepackage{ucs} +\usepackage{ltxtable} +\usepackage{ragged2e} +%% Fuer anspruchsvolle Tabellen %% +\usepackage{longtable, colortbl} +\usepackage{multicol, multirow} +\ifposter +\usepackage{url} +\else +\providecommand\phantomsection{} +\usepackage{hyperref} +\fi +\usepackage[numbers]{natbib} +\usepackage{lscape} +\iftodo +\usepackage{todonotes} +\else +\usepackage[disable]{todonotes} +\fi +%% Graphic +\usepackage[font=footnotesize]{subfig} +\usepackage{graphicx} +\usepackage{float} +\usepackage{tikz} +\usepackage{pgfplots} +\usetikzlibrary{calc,arrows,fit,positioning,trees,backgrounds,shadows,decorations,decorations.text,decorations.markings,decorations.shapes,decorations.pathmorphing,shapes,patterns,fadings} + +\pdfcompresslevel=9 + +% Code-Hervorhebung +% Quellcode +\usepackage{verbatim} % Quellcode einbinden (\verbatiminput) standardpaket +\usepackage{moreverb} +% PseudoCode +\ifthesis +\usepackage[chapter]{algorithm} +\else +\usepackage{algorithm} +\fi +\usepackage{algpseudocode} +%\usepackage{algorithmicx} +\ifposter +%\usepackage[vlined]{algorithm2e} +\usepackage{times, relsize, booktabs, caption, helvet, paralist} +\fi + +\floatname{algorithm}{\algo} +\algrenewcommand{\algorithmiccomment}[1]{\hskip1em\textcolor{gray!60}{$\rhd$ #1}} +\renewcommand{\listalgorithmname}{\loa} +\def\algorithmautorefname{\algo} + + +%% intoc zur Aufnhame des Abkuerzungs- und Symbolverzeichnisses ins Inhaltsverzeichnis +\ifposter +\else +\usepackage[intoc]{nomencl} +\setlength{\nomlabelwidth}{.20\hsize} +%\renewcommand{\nomlabel}[1]{#1 \dotfill} +\setlength{\nomitemsep}{-\parsep} +\makenomenclature +\renewcommand{\nomname}{\abbr} +\newcommand{\nomaltname}{\losymbols} +\newcommand{\nomaltpreamble}{} +\newcommand{\nomaltpostamble}{} +\newcommand{\usetwonomenclatures}{\nomenclature[\switchnomitem]{}{}} +\newcommand{\switchnomitem}{R} +\renewcommand{\nomgroup}[1]{% +\ifthenelse{\equal{#1}{\switchnomitem}}{\switchnomalt}{}} +\newcommand{\switchnomalt}{% +\end{thenomenclature} +\newpage +\renewcommand{\nomname}{\nomaltname} +\renewcommand{\nompreamble}{\nomaltpreamble} +\renewcommand{\nompostamble}{\nomaltpostamble} +\begin{thenomenclature} +} + +%\renewcommand{\nomname}{\abbr} + +%% Hervorhebung der Abkuerzungsbuchstaben %% +\usepackage[normalem]{ulem} +\newcommand{\m}[1]{\uline{#1}} +\fi +\ifthesis + %% Stichwortverzeichnis + \usepackage{makeidx} + \makeindex +\fi + +\ifpresentation +\else +\ifposter +\else +% ausf\"{u}hrlichere Fehlermeldungen +\errorcontextlines=999 +% +% Page-Layout: A4 aus Header +% Alternative +\setlength\headheight{14pt} +\setlength\topmargin{-15,4mm} +\setlength\oddsidemargin{-0,4mm} +\setlength\evensidemargin{-0,4mm} +\setlength\textwidth{160mm} +\setlength\textheight{252mm} +% +%% Absatzeinstellungen +\setlength\parindent{0mm} +\setlength\parskip{2ex} +\fi +\fi + +\ifthesis +\usepackage[automark]{scrpage2} % Kopf und Fusszeilen-Layout +\else +\usepackage{fancyhdr} +\fi + +\usepackage{listings} +\usepackage{pifont} +\usepackage{fourier} +\usepackage{menukeys} diff --git a/meta/config/unibaColors.tex b/meta/config/unibaColors.tex new file mode 100644 index 0000000..dce653c --- /dev/null +++ b/meta/config/unibaColors.tex @@ -0,0 +1,35 @@ +\definecolor{unibablueI}{HTML}{00457D} +\definecolor{unibablueII}{HTML}{336A97} +\definecolor{unibablueIII}{HTML}{6690B1} +\definecolor{unibablueIV}{HTML}{99B5CB} +\definecolor{unibablueV}{HTML}{CCDAE5} + +\definecolor{unibayellowI}{HTML}{FFD300} +\definecolor{unibayellowII}{HTML}{FFDC33} +\definecolor{unibayellowIII}{HTML}{FFE566} +\definecolor{unibayellowIV}{HTML}{FFED99} +\definecolor{unibayellowV}{HTML}{FFF6CC} + +\definecolor{unibagreenI}{HTML}{97BF0D} +\definecolor{unibagreenII}{HTML}{ACCC3D} +\definecolor{unibagreenIII}{HTML}{C1D86E} +\definecolor{unibagreenIV}{HTML}{D5E59E} +\definecolor{unibagreenV}{HTML}{EAF2CF} +%Not CD, darker versions +\definecolor{nounibagreenI}{HTML}{82A50B} +\definecolor{nounibagreenII}{HTML}{708C0A} + +\definecolor{unibaredI}{HTML}{E6444F} +\definecolor{unibaredII}{HTML}{EB6972} +\definecolor{unibaredIII}{HTML}{F08F95} +\definecolor{unibaredIV}{HTML}{F5B4B8} +\definecolor{unibaredV}{HTML}{FADADC} +%Not CD, darker versions +\definecolor{nounibaredI}{HTML}{CC3D47} +\definecolor{nounibaredII}{HTML}{B3363E} + +\definecolor{unibagrayI}{HTML}{878783} +\definecolor{unibagrayII}{HTML}{9F9F9C} +\definecolor{unibagrayIII}{HTML}{B7B7B5} +\definecolor{unibagrayIV}{HTML}{CFCFCE} +\definecolor{unibagrayV}{HTML}{E7E7E6} diff --git a/meta/exampleCode/code.tex b/meta/exampleCode/code.tex new file mode 100644 index 0000000..e9e925a --- /dev/null +++ b/meta/exampleCode/code.tex @@ -0,0 +1,12 @@ +\begin{algorithmic}[1] +\Function{Mean}{floatlist} +\State mean $\gets$ 0.0 +\For{entry \textbf{in} floatlist} +\State mean $\gets$ mean + entry +\EndFor +\If{floatlist.length > 0} +\State mean $\gets$ mean / floatlist.length +\EndIf \\ +\Return mean +\EndFunction +\end{algorithmic} \ No newline at end of file diff --git a/meta/exampleContent/exampleContent.tex b/meta/exampleContent/exampleContent.tex new file mode 100644 index 0000000..9deb7f7 --- /dev/null +++ b/meta/exampleContent/exampleContent.tex @@ -0,0 +1,32 @@ +\section{Einleitung}\label{sec:ein} +Einleitung nach \autoref{sec:ein} + +\section{Hauptteil}\label{sec:haupt} +\subsection{Bilder und Grafiken}\label{subsec:grafiken} +\subsubsection{Bilder}\label{subsubsec:bilder} +Bilder befinden sich im Image-Orgner und lassen sich mit \textbackslash image\{Breite\}\{Datei im Image-Verzeichnis\}\{Beschriftung\}\{Label\} einbinden. \image{3cm}{logo.png}{Uni-Logo}{img:uni} Die Referenzierung erfolg mittels \textbackslash autoref\{Label\}, also z.B. \autoref{img:uni}. +\subsubsection{Grafiken mit TikZ} +Grafiken im TikZ-Framework\footnote{\url{http://www.tn-home.de/TUGDD/Stuff/TikZ_final.pdf}} lassen sich mit dem Befehl \textbackslash scaletikzimage\{Datei im Image Verzeichnis\}\{Beschriftung\}\{Label\}\{Skalierungsfaktor\} einbinden. \scaletikzimage{tikz}{TikZ-Grafik}{img:tikz}{0.9} +\subsection{Tabellen} +Tabellen lassen sich mit dem Environment\\ +\textbackslash begin\{longtable\}[H h t b c]\{Spaltendefinitionen\} ...\\ +\qquad\qquad \textbackslash caption\{Tabellenunterschrift\}\\ +\qquad\qquad \textbackslash label\{Label\}\\ +\textbackslash end\{longtable\}\\ + definieren\footnote{\url{ftp://ftp.dante.de/pub/tex/macros/latex/required/tools/longtable.pdf}}\\ +\begin{longtable}[H]{|p{0.2\textwidth}|p{0.2\textwidth}|p{0.2\textwidth}|} +\hline +A&B&C\\ +\hline +\caption{Tabelle 1} +\label{tab:tab1} +\end{longtable} +\subsection{Code-Ausschnitte} +Pseudo-Code Ausschnitte lassen sich mit \textbackslash pseudo\{Name des Algorithmus\}\{Label\}\{Datei im Code-Verzeichnis\} einbinden. +\pseudo{Mittelwert}{lst:mean}{code} +\section{Zitate} +Mit \textbackslash nocite*\{\} lassen sich alle Einträge in der Bibliography ausgeben. Mit \textbackslash cite[S. xx]\{Key\} lassen sich Zitate einfügen. Z.B. \cite[S. 234]{Kurose12} \nocite*{} +\subsection{Abkürzungen} + +Abkürzungen können mit \textbackslash nomenclature\{Abk\}\{\textbackslash m\{Abk\}ürzung\} \nomenclature{Abk}{\m{Abk}ürzung} angegeben werden. Diese werden alphabetisch sortiert in ein Abkürzungsverzeichnis aufgenommen. + diff --git a/meta/exampleContent/exampleContentThesis.tex b/meta/exampleContent/exampleContentThesis.tex new file mode 100644 index 0000000..d2a7777 --- /dev/null +++ b/meta/exampleContent/exampleContentThesis.tex @@ -0,0 +1,36 @@ +\chapter{Einleitung}\label{cha:ein} +Einleitung nach \autoref{cha:ein} + +\chapter{Hauptteil}\label{cha:haupt} +\section{Bilder und Grafiken}\label{sec:grafiken} +\subsection{Bilder}\label{subsec:bilder} +Bilder befinden sich im Image-Ordner und lassen sich mit \textbackslash image\{Breite\}\{Datei im Image-Verzeichnis\}\{Beschriftung\}\{Label\} einbinden. \image{3cm}{logo.png}{Uni-Logo}{img:uni} Die Referenzierung erfolg mittels \textbackslash autoref\{Label\}, also z.B. \autoref{img:uni}. +\subsection{Grafiken mit TikZ} +Grafiken im TikZ-Framework\footnote{\url{http://www.tn-home.de/TUGDD/Stuff/TikZ_final.pdf}} lassen sich mit dem Befehl \textbackslash scaletikzimage\{Datei im Image Verzeichnis\}\{Beschriftung\}\{Label\}\{Skalierungsfaktor\} einbinden. \scaletikzimage{tikz}{TikZ-Grafik}{img:tikz}{0.9} +\section{Tabellen} +Tabellen lassen sich mit dem Environment\\ +\textbackslash begin\{longtable\}[H h t b c]\{Spaltendefinitionen\} ...\\ +\qquad\qquad \textbackslash caption\{Tabellenunterschrift\}\\ +\qquad\qquad \textbackslash label\{Label\}\\ +\textbackslash end\{longtable\}\\ + definieren\footnote{\url{ftp://ftp.dante.de/pub/tex/macros/latex/required/tools/longtable.pdf}}\\ +\begin{longtable}[H]{|p{0.2\textwidth}|p{0.2\textwidth}|p{0.2\textwidth}|} +\hline +A&B&C\\ +\hline +\caption{Tabelle 1} +\label{tab:tab1} +\end{longtable} +\section{Code-Ausschnitte} +Pseudo-Code Ausschnitte lassen sich mit \textbackslash pseudo\{Name des Algorithmus\}\{Label\}\{Datei im Code-Verzeichnis\} einbinden. +\pseudo{Mittelwert}{lst:mean}{code} +\section{Zitate} +Mit \textbackslash nocite*\{\} lassen sich alle Einträge in der Bibliography ausgeben. Mit \textbackslash cite[S. xx]\{Key\} lassen sich Zitate einfügen. Z.B. \cite[S. 234]{Kurose12} \nocite*{} +\section{Abkürzungen und Symbole} +\subsection{Abkürzungen} +Abkürzungen können mit \textbackslash nomenclature\{Abk\}\{\textbackslash m\{Abk\}ürzung\} \nomenclature{Abk}{\m{Abk}ürzung} angegeben werden. Diese werden alphabetisch sortiert in ein Abkürzungsverzeichnis aufgenommen. +\subsection{Symbole} +Symbole können mit \textbackslash nomenclature[s]\{$E=mc^2$\}\{Energie\} +\nomenclature[s]{$E=mc^2$}{Energie} in das Symbolverzeichnis aufgenommen werden. +\section{Stichwortverzeichnis} +Stichwörter\index{Stichwort} können mit \textbackslash index\{Stichwort\} angelegt werden. Weitere Schlagwörter\index{Stichwort!Schlagwort} hängt man mit \textbackslash index\{Stichwort!Schlagwort\} an \footnote{\url{http://www2.informatik.hu-berlin.de/~piefel/LaTeX-PS/V03-index.pdf}}. diff --git a/meta/exampleContent/version.tex b/meta/exampleContent/version.tex new file mode 100644 index 0000000..ef4b6f1 --- /dev/null +++ b/meta/exampleContent/version.tex @@ -0,0 +1,16 @@ + \section{VERSION} + \subsection{git} + \#: \gitAbbrevHash\\ + @: \gitAuthorIsoDate\\ + \gitReferences + \subsection{gitinfo2 -- setup} + \href{https://www.ctan.org/tex-archive/macros/latex/contrib/gitinfo2}{Gitinfo 2} + \subsubsection{git hooks} + To fill watermark at buttom, deploy gitinfo2-hook.txt to githooks: (copy and make executable) or use \texttt{make git} + \begin{itemize} + \item .git/hooks/post-checkout + \item .git/hooks/post-commit + \item .git/hooks/post-merge + \end{itemize} + \subsubsection{remove watermark} + To disable watermark, remove option \texttt{[mark]} from \textbackslash usepackage[mark]\{gitinfo2\} in \textit{config/commands.tex} at line 16. diff --git a/meta/exampleGraphic/tikz.tikz b/meta/exampleGraphic/tikz.tikz new file mode 100644 index 0000000..b3ac8b5 --- /dev/null +++ b/meta/exampleGraphic/tikz.tikz @@ -0,0 +1,6 @@ +\begin{tikzpicture} +\draw[fill=gray!45] (0,0) rectangle (8,1) node[anchor=base] at(4,0.35) {Ein Rechteck}; +\draw[fill=orange!60] (0,1) rectangle (8,2 )node[anchor=base] at(4,1.35) {Noch ein Rechteck}; +\draw[fill=white] (0,2) rectangle (4,3) node[anchor=base] at(2,2.35) {linke H\"alfte}; +\draw[fill=white] (4,2) rectangle (8,3) node[anchor=base] at(6,2.35) {rechte H\"alfte}; +\end{tikzpicture} \ No newline at end of file diff --git a/meta/exampleLiterature/bib.bib b/meta/exampleLiterature/bib.bib new file mode 100644 index 0000000..325e78b --- /dev/null +++ b/meta/exampleLiterature/bib.bib @@ -0,0 +1,8 @@ +@book{Kurose12, + Author = {James F. Kurose and Keith W. Ross}, + Title = {Computer Networking: A Top-Down Approach (6th Edition)}, + Publisher = {Pearson}, + Year = {2012}, + ISBN = {0132856204}, + URL = {http://www.amazon.com/Computer-Networking-Top-Down-Approach-Edition/dp/0132856204%3FSubscriptionId%3D0JYN1NVW651KCA56C102%26tag%3Dtechkie-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0132856204} +} diff --git a/meta/style/IEEEtran.bst b/meta/style/IEEEtran.bst new file mode 100644 index 0000000..90acb4c --- /dev/null +++ b/meta/style/IEEEtran.bst @@ -0,0 +1,2425 @@ +%% +%% IEEEtran.bst +%% BibTeX Bibliography Style file for IEEE Journals and Conferences (unsorted) +%% Version 1.13 (2008/09/30) +%% +%% Copyright (c) 2003-2008 Michael Shell +%% +%% Original starting code base and algorithms obtained from the output of +%% Patrick W. Daly's makebst package as well as from prior versions of +%% IEEE BibTeX styles: +%% +%% 1. Howard Trickey and Oren Patashnik's ieeetr.bst (1985/1988) +%% 2. Silvano Balemi and Richard H. Roy's IEEEbib.bst (1993) +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and/or +%% http://www.ieee.org/ +%% +%% For use with BibTeX version 0.99a or later +%% +%% This is a numerical citation style. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEabrv.bib, IEEEfull.bib, IEEEexample.bib, +%% IEEEtran.bst, IEEEtranS.bst, IEEEtranSA.bst, +%% IEEEtranN.bst, IEEEtranSN.bst, IEEEtran_bst_HOWTO.pdf +%%************************************************************************* +% +% +% Changelog: +% +% 1.00 (2002/08/13) Initial release +% +% 1.10 (2002/09/27) +% 1. Corrected minor bug for improperly formed warning message when a +% book was not given a title. Thanks to Ming Kin Lai for reporting this. +% 2. Added support for CTLname_format_string and CTLname_latex_cmd fields +% in the BST control entry type. +% +% 1.11 (2003/04/02) +% 1. Fixed bug with URLs containing underscores when using url.sty. Thanks +% to Ming Kin Lai for reporting this. +% +% 1.12 (2007/01/11) +% 1. Fixed bug with unwanted comma before "et al." when an entry contained +% more than two author names. Thanks to Pallav Gupta for reporting this. +% 2. Fixed bug with anomalous closing quote in tech reports that have a +% type, but without a number or address. Thanks to Mehrdad Mirreza for +% reporting this. +% 3. Use braces in \providecommand in begin.bib to better support +% latex2html. TeX style length assignments OK with recent versions +% of latex2html - 1.71 (2002/2/1) or later is strongly recommended. +% Use of the language field still causes trouble with latex2html. +% Thanks to Federico Beffa for reporting this. +% 4. Added IEEEtran.bst ID and version comment string to .bbl output. +% 5. Provide a \BIBdecl hook that allows the user to execute commands +% just prior to the first entry. +% 6. Use default urlstyle (is using url.sty) of "same" rather than rm to +% better work with a wider variety of bibliography styles. +% 7. Changed month abbreviations from Sept., July and June to Sep., Jul., +% and Jun., respectively, as IEEE now does. Thanks to Moritz Borgmann +% for reporting this. +% 8. Control entry types should not be considered when calculating longest +% label width. +% 9. Added alias www for electronic/online. +% 10. Added CTLname_url_prefix control entry type. +% +% 1.13 (2008/09/30) +% 1. Fixed bug with edition number to ordinal conversion. Thanks to +% Michael Roland for reporting this and correcting the algorithm. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% DEFAULTS FOR THE CONTROLS OF THE BST STYLE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These are the defaults for the user adjustable controls. The values used +% here can be overridden by the user via IEEEtranBSTCTL entry type. + +% NOTE: The recommended LaTeX command to invoke a control entry type is: +% +%\makeatletter +%\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +%\def\@bstctlcite[#1]#2{\@bsphack +% \@for\@citeb:=#2\do{% +% \edef\@citeb{\expandafter\@firstofone\@citeb}% +% \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% +% \@esphack} +%\makeatother +% +% It is called at the start of the document, before the first \cite, like: +% \bstctlcite{IEEEexample:BSTcontrol} +% +% IEEEtran.cls V1.6 and later does provide this command. + + + +% #0 turns off the display of the number for articles. +% #1 enables +FUNCTION {default.is.use.number.for.article} { #1 } + + +% #0 turns off the display of the paper and type fields in @inproceedings. +% #1 enables +FUNCTION {default.is.use.paper} { #1 } + + +% #0 turns off the forced use of "et al." +% #1 enables +FUNCTION {default.is.forced.et.al} { #0 } + +% The maximum number of names that can be present beyond which an "et al." +% usage is forced. Be sure that num.names.shown.with.forced.et.al (below) +% is not greater than this value! +% Note: There are many instances of references in IEEE journals which have +% a very large number of authors as well as instances in which "et al." is +% used profusely. +FUNCTION {default.max.num.names.before.forced.et.al} { #10 } + +% The number of names that will be shown with a forced "et al.". +% Must be less than or equal to max.num.names.before.forced.et.al +FUNCTION {default.num.names.shown.with.forced.et.al} { #1 } + + +% #0 turns off the alternate interword spacing for entries with URLs. +% #1 enables +FUNCTION {default.is.use.alt.interword.spacing} { #1 } + +% If alternate interword spacing for entries with URLs is enabled, this is +% the interword spacing stretch factor that will be used. For example, the +% default "4" here means that the interword spacing in entries with URLs can +% stretch to four times normal. Does not have to be an integer. Note that +% the value specified here can be overridden by the user in their LaTeX +% code via a command such as: +% "\providecommand\BIBentryALTinterwordstretchfactor{1.5}" in addition to +% that via the IEEEtranBSTCTL entry type. +FUNCTION {default.ALTinterwordstretchfactor} { "4" } + + +% #0 turns off the "dashification" of repeated (i.e., identical to those +% of the previous entry) names. IEEE normally does this. +% #1 enables +FUNCTION {default.is.dash.repeated.names} { #1 } + + +% The default name format control string. +FUNCTION {default.name.format.string}{ "{f.~}{vv~}{ll}{, jj}" } + + +% The default LaTeX font command for the names. +FUNCTION {default.name.latex.cmd}{ "" } + + +% The default URL prefix. +FUNCTION {default.name.url.prefix}{ "[Online]. Available:" } + + +% Other controls that cannot be accessed via IEEEtranBSTCTL entry type. + +% #0 turns off the terminal startup banner/completed message so as to +% operate more quietly. +% #1 enables +FUNCTION {is.print.banners.to.terminal} { #1 } + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% FILE VERSION AND BANNER %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION{bst.file.version} { "1.13" } +FUNCTION{bst.file.date} { "2008/09/30" } +FUNCTION{bst.file.website} { "http://www.michaelshell.org/tex/ieeetran/bibtex/" } + +FUNCTION {banner.message} +{ is.print.banners.to.terminal + { "-- IEEEtran.bst version" " " * bst.file.version * + " (" * bst.file.date * ") " * "by Michael Shell." * + top$ + "-- " bst.file.website * + top$ + "-- See the " quote$ * "IEEEtran_bst_HOWTO.pdf" * quote$ * " manual for usage information." * + top$ + } + { skip$ } + if$ +} + +FUNCTION {completed.message} +{ is.print.banners.to.terminal + { "" + top$ + "Done." + top$ + } + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING CONSTANTS %% +%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bbl.and}{ "and" } +FUNCTION {bbl.etal}{ "et~al." } +FUNCTION {bbl.editors}{ "eds." } +FUNCTION {bbl.editor}{ "ed." } +FUNCTION {bbl.edition}{ "ed." } +FUNCTION {bbl.volume}{ "vol." } +FUNCTION {bbl.of}{ "of" } +FUNCTION {bbl.number}{ "no." } +FUNCTION {bbl.in}{ "in" } +FUNCTION {bbl.pages}{ "pp." } +FUNCTION {bbl.page}{ "p." } +FUNCTION {bbl.chapter}{ "ch." } +FUNCTION {bbl.paper}{ "paper" } +FUNCTION {bbl.part}{ "pt." } +FUNCTION {bbl.patent}{ "Patent" } +FUNCTION {bbl.patentUS}{ "U.S." } +FUNCTION {bbl.revision}{ "Rev." } +FUNCTION {bbl.series}{ "ser." } +FUNCTION {bbl.standard}{ "Std." } +FUNCTION {bbl.techrep}{ "Tech. Rep." } +FUNCTION {bbl.mthesis}{ "Master's thesis" } +FUNCTION {bbl.phdthesis}{ "Ph.D. dissertation" } +FUNCTION {bbl.st}{ "st" } +FUNCTION {bbl.nd}{ "nd" } +FUNCTION {bbl.rd}{ "rd" } +FUNCTION {bbl.th}{ "th" } + + +% This is the LaTeX spacer that is used when a larger than normal space +% is called for (such as just before the address:publisher). +FUNCTION {large.space} { "\hskip 1em plus 0.5em minus 0.4em\relax " } + +% The LaTeX code for dashes that are used to represent repeated names. +% Note: Some older IEEE journals used something like +% "\rule{0.275in}{0.5pt}\," which is fairly thick and runs right along +% the baseline. However, IEEE now uses a thinner, above baseline, +% six dash long sequence. +FUNCTION {repeated.name.dashes} { "------" } + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PREDEFINED STRING MACROS %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +MACRO {jan} {"Jan."} +MACRO {feb} {"Feb."} +MACRO {mar} {"Mar."} +MACRO {apr} {"Apr."} +MACRO {may} {"May"} +MACRO {jun} {"Jun."} +MACRO {jul} {"Jul."} +MACRO {aug} {"Aug."} +MACRO {sep} {"Sep."} +MACRO {oct} {"Oct."} +MACRO {nov} {"Nov."} +MACRO {dec} {"Dec."} + + + +%%%%%%%%%%%%%%%%%% +%% ENTRY FIELDS %% +%%%%%%%%%%%%%%%%%% + +ENTRY + { address + assignee + author + booktitle + chapter + day + dayfiled + edition + editor + howpublished + institution + intype + journal + key + language + month + monthfiled + nationality + note + number + organization + pages + paper + publisher + school + series + revision + title + type + url + volume + year + yearfiled + CTLuse_article_number + CTLuse_paper + CTLuse_forced_etal + CTLmax_names_forced_etal + CTLnames_show_etal + CTLuse_alt_spacing + CTLalt_stretch_factor + CTLdash_repeated_names + CTLname_format_string + CTLname_latex_cmd + CTLname_url_prefix + } + {} + { label } + + + + +%%%%%%%%%%%%%%%%%%%%%%% +%% INTEGER VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%%% + +INTEGERS { prev.status.punct this.status.punct punct.std + punct.no punct.comma punct.period + prev.status.space this.status.space space.std + space.no space.normal space.large + prev.status.quote this.status.quote quote.std + quote.no quote.close + prev.status.nline this.status.nline nline.std + nline.no nline.newblock + status.cap cap.std + cap.no cap.yes} + +INTEGERS { longest.label.width multiresult nameptr namesleft number.label numnames } + +INTEGERS { is.use.number.for.article + is.use.paper + is.forced.et.al + max.num.names.before.forced.et.al + num.names.shown.with.forced.et.al + is.use.alt.interword.spacing + is.dash.repeated.names} + + +%%%%%%%%%%%%%%%%%%%%%% +%% STRING VARIABLES %% +%%%%%%%%%%%%%%%%%%%%%% + +STRINGS { bibinfo + longest.label + oldname + s + t + ALTinterwordstretchfactor + name.format.string + name.latex.cmd + name.url.prefix} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOW LEVEL FUNCTIONS %% +%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.controls} +{ default.is.use.number.for.article 'is.use.number.for.article := + default.is.use.paper 'is.use.paper := + default.is.forced.et.al 'is.forced.et.al := + default.max.num.names.before.forced.et.al 'max.num.names.before.forced.et.al := + default.num.names.shown.with.forced.et.al 'num.names.shown.with.forced.et.al := + default.is.use.alt.interword.spacing 'is.use.alt.interword.spacing := + default.is.dash.repeated.names 'is.dash.repeated.names := + default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor := + default.name.format.string 'name.format.string := + default.name.latex.cmd 'name.latex.cmd := + default.name.url.prefix 'name.url.prefix := +} + + +% This IEEEtran.bst features a very powerful and flexible mechanism for +% controlling the capitalization, punctuation, spacing, quotation, and +% newlines of the formatted entry fields. (Note: IEEEtran.bst does not need +% or use the newline/newblock feature, but it has been implemented for +% possible future use.) The output states of IEEEtran.bst consist of +% multiple independent attributes and, as such, can be thought of as being +% vectors, rather than the simple scalar values ("before.all", +% "mid.sentence", etc.) used in most other .bst files. +% +% The more flexible and complex design used here was motivated in part by +% IEEE's rather unusual bibliography style. For example, IEEE ends the +% previous field item with a period and large space prior to the publisher +% address; the @electronic entry types use periods as inter-item punctuation +% rather than the commas used by the other entry types; and URLs are never +% followed by periods even though they are the last item in the entry. +% Although it is possible to accommodate these features with the conventional +% output state system, the seemingly endless exceptions make for convoluted, +% unreliable and difficult to maintain code. +% +% IEEEtran.bst's output state system can be easily understood via a simple +% illustration of two most recently formatted entry fields (on the stack): +% +% CURRENT_ITEM +% "PREVIOUS_ITEM +% +% which, in this example, is to eventually appear in the bibliography as: +% +% "PREVIOUS_ITEM," CURRENT_ITEM +% +% It is the job of the output routine to take the previous item off of the +% stack (while leaving the current item at the top of the stack), apply its +% trailing punctuation (including closing quote marks) and spacing, and then +% to write the result to BibTeX's output buffer: +% +% "PREVIOUS_ITEM," +% +% Punctuation (and spacing) between items is often determined by both of the +% items rather than just the first one. The presence of quotation marks +% further complicates the situation because, in standard English, trailing +% punctuation marks are supposed to be contained within the quotes. +% +% IEEEtran.bst maintains two output state (aka "status") vectors which +% correspond to the previous and current (aka "this") items. Each vector +% consists of several independent attributes which track punctuation, +% spacing, quotation, and newlines. Capitalization status is handled by a +% separate scalar because the format routines, not the output routine, +% handle capitalization and, therefore, there is no need to maintain the +% capitalization attribute for both the "previous" and "this" items. +% +% When a format routine adds a new item, it copies the current output status +% vector to the previous output status vector and (usually) resets the +% current (this) output status vector to a "standard status" vector. Using a +% "standard status" vector in this way allows us to redefine what we mean by +% "standard status" at the start of each entry handler and reuse the same +% format routines under the various inter-item separation schemes. For +% example, the standard status vector for the @book entry type may use +% commas for item separators, while the @electronic type may use periods, +% yet both entry handlers exploit many of the exact same format routines. +% +% Because format routines have write access to the output status vector of +% the previous item, they can override the punctuation choices of the +% previous format routine! Therefore, it becomes trivial to implement rules +% such as "Always use a period and a large space before the publisher." By +% pushing the generation of the closing quote mark to the output routine, we +% avoid all the problems caused by having to close a quote before having all +% the information required to determine what the punctuation should be. +% +% The IEEEtran.bst output state system can easily be expanded if needed. +% For instance, it is easy to add a "space.tie" attribute value if the +% bibliography rules mandate that two items have to be joined with an +% unbreakable space. + +FUNCTION {initialize.status.constants} +{ #0 'punct.no := + #1 'punct.comma := + #2 'punct.period := + #0 'space.no := + #1 'space.normal := + #2 'space.large := + #0 'quote.no := + #1 'quote.close := + #0 'cap.no := + #1 'cap.yes := + #0 'nline.no := + #1 'nline.newblock := +} + +FUNCTION {std.status.using.comma} +{ punct.comma 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.no 'cap.std := +} + +FUNCTION {std.status.using.period} +{ punct.period 'punct.std := + space.normal 'space.std := + quote.no 'quote.std := + nline.no 'nline.std := + cap.yes 'cap.std := +} + +FUNCTION {initialize.prev.this.status} +{ punct.no 'prev.status.punct := + space.no 'prev.status.space := + quote.no 'prev.status.quote := + nline.no 'prev.status.nline := + punct.no 'this.status.punct := + space.no 'this.status.space := + quote.no 'this.status.quote := + nline.no 'this.status.nline := + cap.yes 'status.cap := +} + +FUNCTION {this.status.std} +{ punct.std 'this.status.punct := + space.std 'this.status.space := + quote.std 'this.status.quote := + nline.std 'this.status.nline := +} + +FUNCTION {cap.status.std}{ cap.std 'status.cap := } + +FUNCTION {this.to.prev.status} +{ this.status.punct 'prev.status.punct := + this.status.space 'prev.status.space := + this.status.quote 'prev.status.quote := + this.status.nline 'prev.status.nline := +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ { skip$ } + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + { skip$ } + if$ +} + + +% convert the strings "yes" or "no" to #1 or #0 respectively +FUNCTION {yes.no.to.int} +{ "l" change.case$ duplicate$ + "yes" = + { pop$ #1 } + { duplicate$ "no" = + { pop$ #0 } + { "unknown boolean " quote$ * swap$ * quote$ * + " in " * cite$ * warning$ + #0 + } + if$ + } + if$ +} + + +% pushes true if the single char string on the stack is in the +% range of "0" to "9" +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% multiplies the integer on the stack by a factor of 10 +FUNCTION {bump.int.mag} +{ #0 'multiresult := + { duplicate$ #0 > } + { #1 - + multiresult #10 + + 'multiresult := + } + while$ +pop$ +multiresult +} + +% converts a single character string on the stack to an integer +FUNCTION {char.to.integer} +{ duplicate$ + is.num + { chr.to.int$ "0" chr.to.int$ - } + {"noninteger character " quote$ * swap$ * quote$ * + " in integer field of " * cite$ * warning$ + #0 + } + if$ +} + +% converts a string on the stack to an integer +FUNCTION {string.to.integer} +{ duplicate$ text.length$ 'namesleft := + #1 'nameptr := + #0 'numnames := + { nameptr namesleft > not } + { duplicate$ nameptr #1 substring$ + char.to.integer numnames bump.int.mag + + 'numnames := + nameptr #1 + + 'nameptr := + } + while$ +pop$ +numnames +} + + + + +% The output routines write out the *next* to the top (previous) item on the +% stack, adding punctuation and such as needed. Since IEEEtran.bst maintains +% the output status for the top two items on the stack, these output +% routines have to consider the previous output status (which corresponds to +% the item that is being output). Full independent control of punctuation, +% closing quote marks, spacing, and newblock is provided. +% +% "output.nonnull" does not check for the presence of a previous empty +% item. +% +% "output" does check for the presence of a previous empty item and will +% remove an empty item rather than outputing it. +% +% "output.warn" is like "output", but will issue a warning if it detects +% an empty item. + +FUNCTION {output.nonnull} +{ swap$ + prev.status.punct punct.comma = + { "," * } + { skip$ } + if$ + prev.status.punct punct.period = + { add.period$ } + { skip$ } + if$ + prev.status.quote quote.close = + { "''" * } + { skip$ } + if$ + prev.status.space space.normal = + { " " * } + { skip$ } + if$ + prev.status.space space.large = + { large.space * } + { skip$ } + if$ + write$ + prev.status.nline nline.newblock = + { newline$ "\newblock " write$ } + { skip$ } + if$ +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.warn} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +% "fin.entry" is the output routine that handles the last item of the entry +% (which will be on the top of the stack when "fin.entry" is called). + +FUNCTION {fin.entry} +{ this.status.punct punct.no = + { skip$ } + { add.period$ } + if$ + this.status.quote quote.close = + { "''" * } + { skip$ } + if$ +write$ +newline$ +} + + +FUNCTION {is.last.char.not.punct} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +FUNCTION {is.multiple.pages} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {capitalize}{ "u" change.case$ "t" change.case$ } + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\emph{" swap$ * "}" * } + if$ +} + +FUNCTION {do.name.latex.cmd} +{ name.latex.cmd + empty$ + { skip$ } + { name.latex.cmd "{" * swap$ * "}" * } + if$ +} + +% IEEEtran.bst uses its own \BIBforeignlanguage command which directly +% invokes the TeX hyphenation patterns without the need of the Babel +% package. Babel does a lot more than switch hyphenation patterns and +% its loading can cause unintended effects in many class files (such as +% IEEEtran.cls). +FUNCTION {select.language} +{ duplicate$ empty$ 'pop$ + { language empty$ 'skip$ + { "\BIBforeignlanguage{" language * "}{" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {space.word}{ " " swap$ * " " * } + + +% Field Conditioners, Converters, Checkers and External Interfaces + +FUNCTION {empty.field.to.null.string} +{ duplicate$ empty$ + { pop$ "" } + { skip$ } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + { pop$ } + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {empty.entry.warn} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ url empty$ + and and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + + +% The bibinfo system provides a way for the electronic parsing/acquisition +% of a bibliography's contents as is done by ReVTeX. For example, a field +% could be entered into the bibliography as: +% \bibinfo{volume}{2} +% Only the "2" would show up in the document, but the LaTeX \bibinfo command +% could do additional things with the information. IEEEtran.bst does provide +% a \bibinfo command via "\providecommand{\bibinfo}[2]{#2}". However, it is +% currently not used as the bogus bibinfo functions defined here output the +% entry values directly without the \bibinfo wrapper. The bibinfo functions +% themselves (and the calls to them) are retained for possible future use. +% +% bibinfo.check avoids acting on missing fields while bibinfo.warn will +% issue a warning message if a missing field is detected. Prior to calling +% the bibinfo functions, the user should push the field value and then its +% name string, in that order. + +FUNCTION {bibinfo.check} +{ swap$ duplicate$ missing$ + { pop$ pop$ "" } + { duplicate$ empty$ + { swap$ pop$ } + { swap$ pop$ } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ duplicate$ missing$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } + { duplicate$ empty$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ } + if$ + } + if$ +} + + +% IEEE separates large numbers with more than 4 digits into groups of +% three. IEEE uses a small space to separate these number groups. +% Typical applications include patent and page numbers. + +% number of consecutive digits required to trigger the group separation. +FUNCTION {large.number.trigger}{ #5 } + +% For numbers longer than the trigger, this is the blocksize of the groups. +% The blocksize must be less than the trigger threshold, and 2 * blocksize +% must be greater than the trigger threshold (can't do more than one +% separation on the initial trigger). +FUNCTION {large.number.blocksize}{ #3 } + +% What is actually inserted between the number groups. +FUNCTION {large.number.separator}{ "\," } + +% So as to save on integer variables by reusing existing ones, numnames +% holds the current number of consecutive digits read and nameptr holds +% the number that will trigger an inserted space. +FUNCTION {large.number.separate} +{ 't := + "" + #0 'numnames := + large.number.trigger 'nameptr := + { t empty$ not } + { t #-1 #1 substring$ is.num + { numnames #1 + 'numnames := } + { #0 'numnames := + large.number.trigger 'nameptr := + } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames nameptr = + { duplicate$ #1 nameptr large.number.blocksize - substring$ swap$ + nameptr large.number.blocksize - #1 + global.max$ substring$ + large.number.separator swap$ * * + nameptr large.number.blocksize - 'numnames := + large.number.blocksize #1 + 'nameptr := + } + { skip$ } + if$ + } + while$ +} + +% Converts all single dashes "-" to double dashes "--". +FUNCTION {n.dashify} +{ large.number.separate + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + + +% This function detects entries with names that are identical to that of +% the previous entry and replaces the repeated names with dashes (if the +% "is.dash.repeated.names" user control is nonzero). +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { is.dash.repeated.names + { repeated.name.dashes } + { s 'oldname := s } + if$ + } + { s 'oldname := s } + if$ + } + if$ +} + +% Converts the number string on the top of the stack to +% "numerical ordinal form" (e.g., "7" to "7th"). There is +% no artificial limit to the upper bound of the numbers as the +% two least significant digits determine the ordinal form. +FUNCTION {num.to.ordinal} +{ duplicate$ #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ "1" = + { bbl.st * } + { duplicate$ #-1 #1 substring$ "2" = + { bbl.nd * } + { duplicate$ #-1 #1 substring$ "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% If the string on the top of the stack begins with a number, +% (e.g., 11th) then replace the string with the leading number +% it contains. Otherwise retain the string as-is. s holds the +% extracted number, t holds the part of the string that remains +% to be scanned. +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +% Converts the word number string on the top of the stack to +% Arabic string form. Will be successful up to "tenth". +FUNCTION {word.to.num} +{ duplicate$ "l" change.case$ 's := + s "first" = + { pop$ "1" } + { skip$ } + if$ + s "second" = + { pop$ "2" } + { skip$ } + if$ + s "third" = + { pop$ "3" } + { skip$ } + if$ + s "fourth" = + { pop$ "4" } + { skip$ } + if$ + s "fifth" = + { pop$ "5" } + { skip$ } + if$ + s "sixth" = + { pop$ "6" } + { skip$ } + if$ + s "seventh" = + { pop$ "7" } + { skip$ } + if$ + s "eighth" = + { pop$ "8" } + { skip$ } + if$ + s "ninth" = + { pop$ "9" } + { skip$ } + if$ + s "tenth" = + { pop$ "10" } + { skip$ } + if$ +} + + +% Converts the string on the top of the stack to numerical +% ordinal (e.g., "11th") form. +FUNCTION {convert.edition} +{ duplicate$ empty$ 'skip$ + { duplicate$ #1 #1 substring$ is.num + { extract.num + num.to.ordinal + } + { word.to.num + duplicate$ #1 #1 substring$ is.num + { num.to.ordinal } + { "edition ordinal word " quote$ * edition * quote$ * + " may be too high (or improper) for conversion" * " in " * cite$ * warning$ + } + if$ + } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LATEX BIBLIOGRAPHY CODE %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {start.entry} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + initialize.prev.this.status +} + +% Here we write out all the LaTeX code that we will need. The most involved +% code sequences are those that control the alternate interword spacing and +% foreign language hyphenation patterns. The heavy use of \providecommand +% gives users a way to override the defaults. Special thanks to Javier Bezos, +% Johannes Braams, Robin Fairbairns, Heiko Oberdiek, Donald Arseneau and all +% the other gurus on comp.text.tex for their help and advice on the topic of +% \selectlanguage, Babel and BibTeX. +FUNCTION {begin.bib} +{ "% Generated by IEEEtran.bst, version: " bst.file.version * " (" * bst.file.date * ")" * + write$ newline$ + preamble$ empty$ 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{#1}" + write$ newline$ + "\csname url@samestyle\endcsname" + write$ newline$ + "\providecommand{\newblock}{\relax}" + write$ newline$ + "\providecommand{\bibinfo}[2]{#2}" + write$ newline$ + "\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}" + write$ newline$ + "\providecommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + "\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus " + write$ newline$ + "\BIBentryALTinterwordstretchfactor\fontdimen3\font minus \fontdimen4\font\relax}" + write$ newline$ + "\providecommand{\BIBforeignlanguage}[2]{{%" + write$ newline$ + "\expandafter\ifx\csname l@#1\endcsname\relax" + write$ newline$ + "\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%" + write$ newline$ + "\typeout{** loaded for the language `#1'. Using the pattern for}%" + write$ newline$ + "\typeout{** the default language instead.}%" + write$ newline$ + "\else" + write$ newline$ + "\language=\csname l@#1\endcsname" + write$ newline$ + "\fi" + write$ newline$ + "#2}}" + write$ newline$ + "\providecommand{\BIBdecl}{\relax}" + write$ newline$ + "\BIBdecl" + write$ newline$ +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +FUNCTION {if.url.alt.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentryALTinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + +FUNCTION {if.url.std.interword.spacing} +{ is.use.alt.interword.spacing + {url empty$ 'skip$ {"\BIBentrySTDinterwordspacing" write$ newline$} if$} + { skip$ } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%%%%% +%% LONGEST LABEL PASS %% +%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ type$ "ieeetranbstctl" = + { skip$ } + { number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + { skip$ } + if$ + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%%% +%% FORMAT HANDLERS %% +%%%%%%%%%%%%%%%%%%%%% + +%% Lower Level Formats (used by higher level formats) + +FUNCTION {format.address.org.or.pub.date} +{ 't := + "" + year empty$ + { "empty year in " cite$ * warning$ } + { skip$ } + if$ + address empty$ t empty$ and + year empty$ and month empty$ and + { skip$ } + { this.to.prev.status + this.status.std + cap.status.std + address "address" bibinfo.check * + t empty$ + { skip$ } + { punct.period 'prev.status.punct := + space.large 'prev.status.space := + address empty$ + { skip$ } + { ": " * } + if$ + t * + } + if$ + year empty$ month empty$ and + { skip$ } + { t empty$ address empty$ and + { skip$ } + { ", " * } + if$ + month empty$ + { year empty$ + { skip$ } + { year "year" bibinfo.check * } + if$ + } + { month "month" bibinfo.check * + year empty$ + { skip$ } + { " " * year "year" bibinfo.check * } + if$ + } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + this.to.prev.status + this.status.std + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + name.format.string + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { nameptr num.names.shown.with.forced.et.al #1 + = + numnames max.num.names.before.forced.et.al > + is.forced.et.al and and + { "others" 't := + #1 'namesleft := + } + { skip$ } + if$ + namesleft #1 > + { ", " * t do.name.latex.cmd * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal emphasize * } + { numnames #2 > + { "," * } + { skip$ } + if$ + bbl.and + space.word * t do.name.latex.cmd * + } + if$ + } + if$ + } + { t do.name.latex.cmd } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + cap.status.std + } if$ +} + + + + +%% Higher Level Formats + +%% addresses/locations + +FUNCTION {format.address} +{ address duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% author/editor names + +FUNCTION {format.authors}{ author "author" format.names } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { ", " * + get.bbl.editor + capitalize + * + } + if$ +} + + + +%% date + +FUNCTION {format.date} +{ + month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { this.to.prev.status + this.status.std + cap.status.std + swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + } + if$ +} + +FUNCTION {format.date.electronic} +{ month "month" bibinfo.check duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ + { pop$ } + { "there's a month but no year in " cite$ * warning$ + pop$ ")" * "(" swap$ * + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ + } + { swap$ + { swap$ pop$ ")" * "(" swap$ * } + { "(" swap$ * ", " * swap$ * ")" * } + if$ + this.to.prev.status + punct.no 'this.status.punct := + space.normal 'this.status.space := + quote.no 'this.status.quote := + cap.yes 'status.cap := + } + if$ +} + + + +%% edition/title + +% Note: IEEE considers the edition to be closely associated with +% the title of a book. So, in IEEEtran.bst the edition is normally handled +% within the formatting of the title. The format.edition function is +% retained here for possible future use. +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + convert.edition + status.cap + { "t" } + { "l" } + if$ change.case$ + "edition" bibinfo.check + "~" * bbl.edition * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of a conference proceedings. +% Here we use the "intype" field to provide the user a way to +% override the word "in" (e.g., with things like "presented at") +% Use of intype stops the emphasis of the booktitle to indicate that +% we no longer mean the written conference proceedings, but the +% conference itself. +FUNCTION {format.in.booktitle} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + intype missing$ + { emphasize + bbl.in " " * + } + { intype " " * } + if$ + swap$ * + cap.status.std + } + if$ +} + +% This is used to format the booktitle of collection. +% Here the "intype" field is not supported, but "edition" is. +FUNCTION {format.in.booktitle.edition} +{ booktitle "booktitle" bibinfo.check duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + "l" change.case$ + * "~" * bbl.edition * + } + if$ + bbl.in " " * swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { quote.close 'this.status.quote := + is.last.char.not.punct + { punct.std 'this.status.punct := } + { punct.no 'this.status.punct := } + if$ + select.language + "``" swap$ * + cap.status.std + } + if$ +} + +FUNCTION {format.article.title.electronic} +{ title duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + "t" change.case$ + } + if$ + "title" bibinfo.check + duplicate$ empty$ + { skip$ } + { select.language } + if$ +} + +FUNCTION {format.book.title.edition} +{ title "title" bibinfo.check + duplicate$ empty$ + { "empty title in " cite$ * warning$ } + { this.to.prev.status + this.status.std + select.language + emphasize + edition empty$ 'skip$ + { ", " * + edition + convert.edition + status.cap + { "t" } + { "l" } + if$ + change.case$ + * "~" * bbl.edition * + } + if$ + cap.status.std + } + if$ +} + +FUNCTION {format.book.title} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% journal + +FUNCTION {format.journal} +{ journal duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + select.language + emphasize + } + if$ +} + + + +%% how published + +FUNCTION {format.howpublished} +{ howpublished duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% institutions/organization/publishers/school + +FUNCTION {format.institution} +{ institution duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.organization} +{ organization duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + +FUNCTION {format.address.publisher.date} +{ publisher "publisher" bibinfo.warn format.address.org.or.pub.date } + +FUNCTION {format.address.publisher.date.nowarn} +{ publisher "publisher" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.address.organization.date} +{ organization "organization" bibinfo.check format.address.org.or.pub.date } + +FUNCTION {format.school} +{ school duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + cap.status.std + } + if$ +} + + + +%% volume/number/series/chapter/pages + +FUNCTION {format.volume} +{ volume empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + bbl.volume + status.cap + { capitalize } + { skip$ } + if$ + swap$ tie.or.space.prefix + "volume" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number} +{ number empty.field.to.null.string + duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + status.cap + { bbl.number capitalize } + { bbl.number } + if$ + swap$ tie.or.space.prefix + "number" bibinfo.check + * * + cap.status.std + } + if$ +} + +FUNCTION {format.number.if.use.for.article} +{ is.use.number.for.article + { format.number } + { "" } + if$ +} + +% IEEE does not seem to tie the series so closely with the volume +% and number as is done in other bibliography styles. Instead the +% series is treated somewhat like an extension of the title. +FUNCTION {format.series} +{ series empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.series " " * + series "series" bibinfo.check * + cap.status.std + } + if$ +} + + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { this.to.prev.status + this.status.std + type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + cap.status.std + } + if$ +} + + +% The intended use of format.paper is for paper numbers of inproceedings. +% The paper type can be overridden via the type field. +% We allow the type to be displayed even if the paper number is absent +% for things like "postdeadline paper" +FUNCTION {format.paper} +{ is.use.paper + { paper empty$ + { type empty$ + { "" } + { this.to.prev.status + this.status.std + type "type" bibinfo.check + cap.status.std + } + if$ + } + { this.to.prev.status + this.status.std + type empty$ + { bbl.paper } + { type "type" bibinfo.check } + if$ + " " * paper + "paper" bibinfo.check + * + cap.status.std + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { this.to.prev.status + this.status.std + duplicate$ is.multiple.pages + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + cap.status.std + } + if$ +} + + + +%% technical report number + +FUNCTION {format.tech.report.number} +{ number "number" bibinfo.check + this.to.prev.status + this.status.std + cap.status.std + type duplicate$ empty$ + { pop$ + bbl.techrep + } + { skip$ } + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ } + { tie.or.space.prefix * * } + if$ +} + + + +%% note + +FUNCTION {format.note} +{ note empty$ + { "" } + { this.to.prev.status + this.status.std + punct.period 'this.status.punct := + note #1 #1 substring$ + duplicate$ "{" = + { skip$ } + { status.cap + { "u" } + { "l" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + cap.yes 'status.cap := + } + if$ +} + + + +%% patent + +FUNCTION {format.patent.date} +{ this.to.prev.status + this.status.std + year empty$ + { monthfiled duplicate$ empty$ + { "monthfiled" bibinfo.check pop$ "" } + { "monthfiled" bibinfo.check } + if$ + dayfiled duplicate$ empty$ + { "dayfiled" bibinfo.check pop$ "" * } + { "dayfiled" bibinfo.check + monthfiled empty$ + { "dayfiled without a monthfiled in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + yearfiled empty$ + { "no year or yearfiled in " cite$ * warning$ } + { yearfiled "yearfiled" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + } + { month duplicate$ empty$ + { "month" bibinfo.check pop$ "" } + { "month" bibinfo.check } + if$ + day duplicate$ empty$ + { "day" bibinfo.check pop$ "" * } + { "day" bibinfo.check + month empty$ + { "day without a month in " cite$ * warning$ + * + } + { " " swap$ * * } + if$ + } + if$ + year "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { ", " * swap$ * } + if$ + } + if$ + cap.status.std +} + +FUNCTION {format.patent.nationality.type.number} +{ this.to.prev.status + this.status.std + nationality duplicate$ empty$ + { "nationality" bibinfo.warn pop$ "" } + { "nationality" bibinfo.check + duplicate$ "l" change.case$ "united states" = + { pop$ bbl.patentUS } + { skip$ } + if$ + " " * + } + if$ + type empty$ + { bbl.patent "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.warn pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + + + +%% standard + +FUNCTION {format.organization.institution.standard.type.number} +{ this.to.prev.status + this.status.std + organization duplicate$ empty$ + { pop$ + institution duplicate$ empty$ + { "institution" bibinfo.warn } + { "institution" bibinfo.warn " " * } + if$ + } + { "organization" bibinfo.warn " " * } + if$ + type empty$ + { bbl.standard "type" bibinfo.check } + { type "type" bibinfo.check } + if$ + * + number duplicate$ empty$ + { "number" bibinfo.check pop$ } + { "number" bibinfo.check + large.number.separate + swap$ " " * swap$ * + } + if$ + cap.status.std +} + +FUNCTION {format.revision} +{ revision empty$ + { "" } + { this.to.prev.status + this.status.std + bbl.revision + revision tie.or.space.prefix + "revision" bibinfo.check + * * + cap.status.std + } + if$ +} + + +%% thesis + +FUNCTION {format.master.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.mthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + +FUNCTION {format.phd.thesis.type} +{ this.to.prev.status + this.status.std + type empty$ + { + bbl.phdthesis + } + { + type "type" bibinfo.check + } + if$ +cap.status.std +} + + + +%% URL + +FUNCTION {format.url} +{ url empty$ + { "" } + { this.to.prev.status + this.status.std + cap.yes 'status.cap := + name.url.prefix " " * + "\url{" * url * "}" * + punct.no 'this.status.punct := + punct.period 'prev.status.punct := + space.normal 'this.status.space := + space.normal 'prev.status.space := + quote.no 'this.status.quote := + } + if$ +} + + + + +%%%%%%%%%%%%%%%%%%%% +%% ENTRY HANDLERS %% +%%%%%%%%%%%%%%%%%%%% + + +% Note: In many journals, IEEE (or the authors) tend not to show the number +% for articles, so the display of the number is controlled here by the +% switch "is.use.number.for.article" +FUNCTION {article} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.journal "journal" bibinfo.check "journal" output.warn + format.volume output + format.number.if.use.for.article output + format.pages output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {book} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + author empty$ + { skip$ } + { format.editors output } + if$ + format.address.publisher.date output + format.volume output + format.number output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {booklet} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {electronic} +{ std.status.using.period + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.date.electronic output + format.article.title.electronic output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {inbook} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + author empty$ + { format.editors "author and editor" output.warn } + { format.authors output.nonnull } + if$ + name.or.dash + format.book.title.edition output + format.series output + format.address.publisher.date output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {incollection} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle.edition "booktitle" output.warn + format.series output + format.editors output + format.address.publisher.date.nowarn output + format.volume output + format.number output + format.chapter output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {inproceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.in.booktitle "booktitle" output.warn + format.series output + format.editors output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.paper output + format.pages output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {manual} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title.edition "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {mastersthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.master.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {misc} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.howpublished "howpublished" bibinfo.check output + format.organization "organization" bibinfo.check output + format.address "address" bibinfo.check output + format.pages output + format.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {patent} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.article.title output + format.patent.nationality.type.number output + format.patent.date output + format.note output + format.url output + fin.entry + empty.entry.warn + if.url.std.interword.spacing +} + +FUNCTION {periodical} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + format.organization "organization" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {phdthesis} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.phd.thesis.type output.nonnull + format.school "school" bibinfo.warn output + format.address "address" bibinfo.check output + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {proceedings} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.editors output + name.or.dash + format.book.title "title" output.warn + format.series output + format.volume output + format.number output + publisher empty$ + { format.address.organization.date output } + { format.organization "organization" bibinfo.check output + format.address.publisher.date output + } + if$ + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {standard} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors output + name.or.dash + format.book.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.organization.institution.standard.type.number output + format.revision output + format.date output + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {techreport} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.howpublished "howpublished" bibinfo.check output + format.institution "institution" bibinfo.warn output + format.address "address" bibinfo.check output + format.tech.report.number output.nonnull + format.date "year" output.warn + format.note output + format.url output + fin.entry + if.url.std.interword.spacing +} + +FUNCTION {unpublished} +{ std.status.using.comma + start.entry + if.url.alt.interword.spacing + format.authors "author" output.warn + name.or.dash + format.article.title "title" output.warn + format.date output + format.note "note" output.warn + format.url output + fin.entry + if.url.std.interword.spacing +} + + +% The special entry type which provides the user interface to the +% BST controls +FUNCTION {IEEEtranBSTCTL} +{ is.print.banners.to.terminal + { "** IEEEtran BST control entry " quote$ * cite$ * quote$ * " detected." * + top$ + } + { skip$ } + if$ + CTLuse_article_number + empty$ + { skip$ } + { CTLuse_article_number + yes.no.to.int + 'is.use.number.for.article := + } + if$ + CTLuse_paper + empty$ + { skip$ } + { CTLuse_paper + yes.no.to.int + 'is.use.paper := + } + if$ + CTLuse_forced_etal + empty$ + { skip$ } + { CTLuse_forced_etal + yes.no.to.int + 'is.forced.et.al := + } + if$ + CTLmax_names_forced_etal + empty$ + { skip$ } + { CTLmax_names_forced_etal + string.to.integer + 'max.num.names.before.forced.et.al := + } + if$ + CTLnames_show_etal + empty$ + { skip$ } + { CTLnames_show_etal + string.to.integer + 'num.names.shown.with.forced.et.al := + } + if$ + CTLuse_alt_spacing + empty$ + { skip$ } + { CTLuse_alt_spacing + yes.no.to.int + 'is.use.alt.interword.spacing := + } + if$ + CTLalt_stretch_factor + empty$ + { skip$ } + { CTLalt_stretch_factor + 'ALTinterwordstretchfactor := + "\renewcommand{\BIBentryALTinterwordstretchfactor}{" + ALTinterwordstretchfactor * "}" * + write$ newline$ + } + if$ + CTLdash_repeated_names + empty$ + { skip$ } + { CTLdash_repeated_names + yes.no.to.int + 'is.dash.repeated.names := + } + if$ + CTLname_format_string + empty$ + { skip$ } + { CTLname_format_string + 'name.format.string := + } + if$ + CTLname_latex_cmd + empty$ + { skip$ } + { CTLname_latex_cmd + 'name.latex.cmd := + } + if$ + CTLname_url_prefix + missing$ + { skip$ } + { CTLname_url_prefix + 'name.url.prefix := + } + if$ + + + num.names.shown.with.forced.et.al max.num.names.before.forced.et.al > + { "CTLnames_show_etal cannot be greater than CTLmax_names_forced_etal in " cite$ * warning$ + max.num.names.before.forced.et.al 'num.names.shown.with.forced.et.al := + } + { skip$ } + if$ +} + + +%%%%%%%%%%%%%%%%%%% +%% ENTRY ALIASES %% +%%%%%%%%%%%%%%%%%%% +FUNCTION {conference}{inproceedings} +FUNCTION {online}{electronic} +FUNCTION {internet}{electronic} +FUNCTION {webpage}{electronic} +FUNCTION {www}{electronic} +FUNCTION {default.type}{misc} + + + +%%%%%%%%%%%%%%%%%% +%% MAIN PROGRAM %% +%%%%%%%%%%%%%%%%%% + +READ + +EXECUTE {initialize.controls} +EXECUTE {initialize.status.constants} +EXECUTE {banner.message} + +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} + +EXECUTE {begin.bib} +ITERATE {call.type$} +EXECUTE {end.bib} + +EXECUTE{completed.message} + + +%% That's all folks, mds. diff --git a/meta/style/IEEEtran.cls b/meta/style/IEEEtran.cls new file mode 100644 index 0000000..d7e02e3 --- /dev/null +++ b/meta/style/IEEEtran.cls @@ -0,0 +1,4722 @@ +%% +%% IEEEtran.cls 2007/03/05 version V1.7a +%% +%% +%% This is the official IEEE LaTeX class for authors of the Institute of +%% Electrical and Electronics Engineers (IEEE) Transactions journals and +%% conferences. +%% +%% Support sites: +%% http://www.michaelshell.org/tex/ieeetran/ +%% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/ +%% and +%% http://www.ieee.org/ +%% +%% Based on the original 1993 IEEEtran.cls, but with many bug fixes +%% and enhancements (from both JVH and MDS) over the 1996/7 version. +%% +%% +%% Contributors: +%% Gerry Murray (1993), Silvano Balemi (1993), +%% Jon Dixon (1996), Peter N"uchter (1996), +%% Juergen von Hagen (2000), and Michael Shell (2001-2007) +%% +%% +%% Copyright (c) 1993-2000 by Gerry Murray, Silvano Balemi, +%% Jon Dixon, Peter N"uchter, +%% Juergen von Hagen +%% and +%% Copyright (c) 2001-2007 by Michael Shell +%% +%% Current maintainer (V1.3 to V1.7): Michael Shell +%% See: +%% http://www.michaelshell.org/ +%% for current contact information. +%% +%% Special thanks to Peter Wilson (CUA) and Donald Arseneau +%% for allowing the inclusion of the \@ifmtarg command +%% from their ifmtarg LaTeX package. +%% +%%************************************************************************* +%% Legal Notice: +%% This code is offered as-is without any warranty either expressed or +%% implied; without even the implied warranty of MERCHANTABILITY or +%% FITNESS FOR A PARTICULAR PURPOSE! +%% User assumes all risk. +%% In no event shall IEEE or any contributor to this code be liable for +%% any damages or losses, including, but not limited to, incidental, +%% consequential, or any other damages, resulting from the use or misuse +%% of any information contained here. +%% +%% All comments are the opinions of their respective authors and are not +%% necessarily endorsed by the IEEE. +%% +%% This work is distributed under the LaTeX Project Public License (LPPL) +%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used, +%% distributed and modified. A copy of the LPPL, version 1.3, is included +%% in the base LaTeX documentation of all distributions of LaTeX released +%% 2003/12/01 or later. +%% Retain all contribution notices and credits. +%% ** Modified files should be clearly indicated as such, including ** +%% ** renaming them and changing author support contact information. ** +%% +%% File list of work: IEEEtran.cls, IEEEtran_HOWTO.pdf, bare_adv.tex, +%% bare_conf.tex, bare_jrnl.tex, bare_jrnl_compsoc.tex +%% +%% Major changes to the user interface should be indicated by an +%% increase in the version numbers. If a version is a beta, it will +%% be indicated with a BETA suffix, i.e., 1.4 BETA. +%% Small changes can be indicated by appending letters to the version +%% such as "IEEEtran_v14a.cls". +%% In all cases, \Providesclass, any \typeout messages to the user, +%% \IEEEtransversionmajor and \IEEEtransversionminor must reflect the +%% correct version information. +%% The changes should also be documented via source comments. +%%************************************************************************* +%% +% +% Available class options +% e.g., \documentclass[10pt,conference]{IEEEtran} +% +% *** choose only one from each category *** +% +% 9pt, 10pt, 11pt, 12pt +% Sets normal font size. The default is 10pt. +% +% conference, journal, technote, peerreview, peerreviewca +% determines format mode - conference papers, journal papers, +% correspondence papers (technotes), or peer review papers. The user +% should also select 9pt when using technote. peerreview is like +% journal mode, but provides for a single-column "cover" title page for +% anonymous peer review. The paper title (without the author names) is +% repeated at the top of the page after the cover page. For peer review +% papers, the \IEEEpeerreviewmaketitle command must be executed (will +% automatically be ignored for non-peerreview modes) at the place the +% cover page is to end, usually just after the abstract (keywords are +% not normally used with peer review papers). peerreviewca is like +% peerreview, but allows the author names to be entered and formatted +% as with conference mode so that author affiliation and contact +% information can be easily seen on the cover page. +% The default is journal. +% +% draft, draftcls, draftclsnofoot, final +% determines if paper is formatted as a widely spaced draft (for +% handwritten editor comments) or as a properly typeset final version. +% draftcls restricts draft mode to the class file while all other LaTeX +% packages (i.e., \usepackage{graphicx}) will behave as final - allows +% for a draft paper with visible figures, etc. draftclsnofoot is like +% draftcls, but does not display the date and the word "DRAFT" at the foot +% of the pages. If using one of the draft modes, the user will probably +% also want to select onecolumn. +% The default is final. +% +% letterpaper, a4paper +% determines paper size: 8.5in X 11in or 210mm X 297mm. CHANGING THE PAPER +% SIZE WILL NOT ALTER THE TYPESETTING OF THE DOCUMENT - ONLY THE MARGINS +% WILL BE AFFECTED. In particular, documents using the a4paper option will +% have reduced side margins (A4 is narrower than US letter) and a longer +% bottom margin (A4 is longer than US letter). For both cases, the top +% margins will be the same and the text will be horizontally centered. +% For final submission to IEEE, authors should use US letter (8.5 X 11in) +% paper. Note that authors should ensure that all post-processing +% (ps, pdf, etc.) uses the same paper specificiation as the .tex document. +% Problems here are by far the number one reason for incorrect margins. +% IEEEtran will automatically set the default paper size under pdflatex +% (without requiring a change to pdftex.cfg), so this issue is more +% important to dvips users. Fix config.ps, config.pdf, or ~/.dvipsrc for +% dvips, or use the dvips -t papersize option instead as needed. See the +% testflow documentation +% http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/testflow +% for more details on dvips paper size configuration. +% The default is letterpaper. +% +% oneside, twoside +% determines if layout follows single sided or two sided (duplex) +% printing. The only notable change is with the headings at the top of +% the pages. +% The default is oneside. +% +% onecolumn, twocolumn +% determines if text is organized into one or two columns per page. One +% column mode is usually used only with draft papers. +% The default is twocolumn. +% +% compsoc +% Use the format of the IEEE Computer Society. +% +% compsocconf +% Use the format of IEEE Computer Society conferencs (CPS) +% +% romanappendices +% Use the "Appendix I" convention when numbering appendices. IEEEtran.cls +% now defaults to Alpha "Appendix A" convention - the opposite of what +% v1.6b and earlier did. +% +% captionsoff +% disables the display of the figure/table captions. Some IEEE journals +% request that captions be removed and figures/tables be put on pages +% of their own at the end of an initial paper submission. The endfloat +% package can be used with this class option to achieve this format. +% +% nofonttune +% turns off tuning of the font interword spacing. Maybe useful to those +% not using the standard Times fonts or for those who have already "tuned" +% their fonts. +% The default is to enable IEEEtran to tune font parameters. +% +% +%---------- +% Available CLASSINPUTs provided (all are macros unless otherwise noted): +% \CLASSINPUTbaselinestretch +% \CLASSINPUTinnersidemargin +% \CLASSINPUToutersidemargin +% \CLASSINPUTtoptextmargin +% \CLASSINPUTbottomtextmargin +% +% Available CLASSINFOs provided: +% \ifCLASSINFOpdf (TeX if conditional) +% \CLASSINFOpaperwidth (macro) +% \CLASSINFOpaperheight (macro) +% \CLASSINFOnormalsizebaselineskip (length) +% \CLASSINFOnormalsizeunitybaselineskip (length) +% +% Available CLASSOPTIONs provided: +% all class option flags (TeX if conditionals) unless otherwise noted, +% e.g., \ifCLASSOPTIONcaptionsoff +% point size options provided as a single macro: +% \CLASSOPTIONpt +% which will be defined as 9, 10, 11, or 12 depending on the document's +% normalsize point size. +% also, class option peerreviewca implies the use of class option peerreview +% and classoption draft implies the use of class option draftcls + + + + + +\ProvidesClass{IEEEtran}[2007/03/05 V1.7a by Michael Shell] +\typeout{-- See the "IEEEtran_HOWTO" manual for usage information.} +\typeout{-- http://www.michaelshell.org/tex/ieeetran/} +\NeedsTeXFormat{LaTeX2e} + +% IEEEtran.cls version numbers, provided as of V1.3 +% These values serve as a way a .tex file can +% determine if the new features are provided. +% The version number of this IEEEtrans.cls can be obtained from +% these values. i.e., V1.4 +% KEEP THESE AS INTEGERS! i.e., NO {4a} or anything like that- +% (no need to enumerate "a" minor changes here) +\def\IEEEtransversionmajor{1} +\def\IEEEtransversionminor{7} + +% These do nothing, but provide them like in article.cls +\newif\if@restonecol +\newif\if@titlepage + + +% class option conditionals +\newif\ifCLASSOPTIONonecolumn \CLASSOPTIONonecolumnfalse +\newif\ifCLASSOPTIONtwocolumn \CLASSOPTIONtwocolumntrue + +\newif\ifCLASSOPTIONoneside \CLASSOPTIONonesidetrue +\newif\ifCLASSOPTIONtwoside \CLASSOPTIONtwosidefalse + +\newif\ifCLASSOPTIONfinal \CLASSOPTIONfinaltrue +\newif\ifCLASSOPTIONdraft \CLASSOPTIONdraftfalse +\newif\ifCLASSOPTIONdraftcls \CLASSOPTIONdraftclsfalse +\newif\ifCLASSOPTIONdraftclsnofoot \CLASSOPTIONdraftclsnofootfalse + +\newif\ifCLASSOPTIONpeerreview \CLASSOPTIONpeerreviewfalse +\newif\ifCLASSOPTIONpeerreviewca \CLASSOPTIONpeerreviewcafalse + +\newif\ifCLASSOPTIONjournal \CLASSOPTIONjournaltrue +\newif\ifCLASSOPTIONconference \CLASSOPTIONconferencefalse +\newif\ifCLASSOPTIONtechnote \CLASSOPTIONtechnotefalse + +\newif\ifCLASSOPTIONnofonttune \CLASSOPTIONnofonttunefalse + +\newif\ifCLASSOPTIONcaptionsoff \CLASSOPTIONcaptionsofffalse + +\newif\ifCLASSOPTIONcompsoc \CLASSOPTIONcompsocfalse + +\newif\ifCLASSOPTIONcompsocconf \CLASSOPTIONcompsocconffalse + +\newif\ifCLASSOPTIONromanappendices \CLASSOPTIONromanappendicesfalse + + +% class info conditionals + +% indicates if pdf (via pdflatex) output +\newif\ifCLASSINFOpdf \CLASSINFOpdffalse + + +% V1.6b internal flag to show if using a4paper +\newif\if@IEEEusingAfourpaper \@IEEEusingAfourpaperfalse + + + +% IEEEtran class scratch pad registers +% dimen +\newdimen\@IEEEtrantmpdimenA +\newdimen\@IEEEtrantmpdimenB +% count +\newcount\@IEEEtrantmpcountA +\newcount\@IEEEtrantmpcountB +% token list +\newtoks\@IEEEtrantmptoksA + +% we use \CLASSOPTIONpt so that we can ID the point size (even for 9pt docs) +% as well as LaTeX's \@ptsize to retain some compatability with some +% external packages +\def\@ptsize{0} +% LaTeX does not support 9pt, so we set \@ptsize to 0 - same as that of 10pt +\DeclareOption{9pt}{\def\CLASSOPTIONpt{9}\def\@ptsize{0}} +\DeclareOption{10pt}{\def\CLASSOPTIONpt{10}\def\@ptsize{0}} +\DeclareOption{11pt}{\def\CLASSOPTIONpt{11}\def\@ptsize{1}} +\DeclareOption{12pt}{\def\CLASSOPTIONpt{12}\def\@ptsize{2}} + + + +\DeclareOption{letterpaper}{\setlength{\paperheight}{11in}% + \setlength{\paperwidth}{8.5in}% + \@IEEEusingAfourpaperfalse + \def\CLASSOPTIONpaper{letter}% + \def\CLASSINFOpaperwidth{8.5in}% + \def\CLASSINFOpaperheight{11in}} + + +\DeclareOption{a4paper}{\setlength{\paperheight}{297mm}% + \setlength{\paperwidth}{210mm}% + \@IEEEusingAfourpapertrue + \def\CLASSOPTIONpaper{a4}% + \def\CLASSINFOpaperwidth{210mm}% + \def\CLASSINFOpaperheight{297mm}} + +\DeclareOption{oneside}{\@twosidefalse\@mparswitchfalse + \CLASSOPTIONonesidetrue\CLASSOPTIONtwosidefalse} +\DeclareOption{twoside}{\@twosidetrue\@mparswitchtrue + \CLASSOPTIONtwosidetrue\CLASSOPTIONonesidefalse} + +\DeclareOption{onecolumn}{\CLASSOPTIONonecolumntrue\CLASSOPTIONtwocolumnfalse} +\DeclareOption{twocolumn}{\CLASSOPTIONtwocolumntrue\CLASSOPTIONonecolumnfalse} + +% If the user selects draft, then this class AND any packages +% will go into draft mode. +\DeclareOption{draft}{\CLASSOPTIONdrafttrue\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftcls is for a draft mode which will not affect any packages +% used by the document. +\DeclareOption{draftcls}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofootfalse} +% draftclsnofoot is like draftcls, but without the footer. +\DeclareOption{draftclsnofoot}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclstrue + \CLASSOPTIONdraftclsnofoottrue} +\DeclareOption{final}{\CLASSOPTIONdraftfalse\CLASSOPTIONdraftclsfalse + \CLASSOPTIONdraftclsnofootfalse} + +\DeclareOption{journal}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournaltrue\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{conference}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencetrue\CLASSOPTIONtechnotefalse} + +\DeclareOption{technote}{\CLASSOPTIONpeerreviewfalse\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotetrue} + +\DeclareOption{peerreview}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcafalse + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{peerreviewca}{\CLASSOPTIONpeerreviewtrue\CLASSOPTIONpeerreviewcatrue + \CLASSOPTIONjournalfalse\CLASSOPTIONconferencefalse\CLASSOPTIONtechnotefalse} + +\DeclareOption{nofonttune}{\CLASSOPTIONnofonttunetrue} + +\DeclareOption{captionsoff}{\CLASSOPTIONcaptionsofftrue} + +\DeclareOption{compsoc}{\CLASSOPTIONcompsoctrue} + +\DeclareOption{compsocconf}{\CLASSOPTIONcompsocconftrue} + +\DeclareOption{romanappendices}{\CLASSOPTIONromanappendicestrue} + + +% default to US letter paper, 10pt, twocolumn, one sided, final, journal +\ExecuteOptions{letterpaper,10pt,twocolumn,oneside,final,journal} +% overrride these defaults per user requests +\ProcessOptions + + + +% Computer Society conditional execution command +\long\def\@IEEEcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\relax#1\relax\fi\relax} +% inverse +\long\def\@IEEEnotcompsoconly#1{\relax\ifCLASSOPTIONcompsoc\else\relax#1\relax\fi\relax} +% compsoc conference +\long\def\@IEEEcompsocconfonly#1{\relax\ifCLASSOPTIONcompsocconf\ifCLASSOPTIONconference\relax#1\relax\fi\fi\relax} +% compsoc not conference +\long\def\@IEEEcompsocnotconfonly#1{\relax\ifCLASSOPTIONcompsoc\ifCLASSOPTIONconference\else\relax#1\relax\fi\fi\relax} + + +% IEEE uses Times Roman font, so we'll default to Times. +% These three commands make up the entire times.sty package. +\renewcommand{\sfdefault}{phv} +\renewcommand{\rmdefault}{ptm} +\renewcommand{\ttdefault}{pcr} + +\@IEEEcompsoconly{\typeout{-- Using IEEE Computer Society mode.}} + +% V1.7 compsoc nonconference papers, use Palatino/Palladio as the main text font, +% not Times Roman. +\@IEEEcompsocnotconfonly{\renewcommand{\rmdefault}{ppl}} + +% enable Times/Palatino main text font +\normalfont\selectfont + + + + + +% V1.7 conference notice message hook +\def\@IEEEconsolenoticeconference{\typeout{}% +\typeout{** Conference Paper **}% +\typeout{Before submitting the final camera ready copy, remember to:}% +\typeout{}% +\typeout{ 1. Manually equalize the lengths of two columns on the last page}% +\typeout{ of your paper;}% +\typeout{}% +\typeout{ 2. Ensure that any PostScript and/or PDF output post-processing}% +\typeout{ uses only Type 1 fonts and that every step in the generation}% +\typeout{ process uses the appropriate paper size.}% +\typeout{}} + + +% we can send console reminder messages to the user here +\AtEndDocument{\ifCLASSOPTIONconference\@IEEEconsolenoticeconference\fi} + + +% warn about the use of single column other than for draft mode +\ifCLASSOPTIONtwocolumn\else% + \ifCLASSOPTIONdraftcls\else% + \typeout{** ATTENTION: Single column mode is not typically used with IEEE publications.}% + \fi% +\fi + + +% V1.7 improved paper size setting code. +% Set pdfpage and dvips paper sizes. Conditional tests are similar to that +% of ifpdf.sty. Retain within {} to ensure tested macros are never altered, +% even if only effect is to set them to \relax. +% if \pdfoutput is undefined or equal to relax, output a dvips special +{\@ifundefined{pdfoutput}{\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}}{% +% pdfoutput is defined and not equal to \relax +% check for pdfpageheight existence just in case someone sets pdfoutput +% under non-pdflatex. If exists, set them regardless of value of \pdfoutput. +\@ifundefined{pdfpageheight}{\relax}{\global\pdfpagewidth\paperwidth +\global\pdfpageheight\paperheight}% +% if using \pdfoutput=0 under pdflatex, send dvips papersize special +\ifcase\pdfoutput +\AtBeginDvi{\special{papersize=\CLASSINFOpaperwidth,\CLASSINFOpaperheight}}% +\else +% we are using pdf output, set CLASSINFOpdf flag +\global\CLASSINFOpdftrue +\fi}} + +% let the user know the selected papersize +\typeout{-- Using \CLASSINFOpaperwidth\space x \CLASSINFOpaperheight\space +(\CLASSOPTIONpaper)\space paper.} + +\ifCLASSINFOpdf +\typeout{-- Using PDF output.} +\else +\typeout{-- Using DVI output.} +\fi + + +% The idea hinted here is for LaTeX to generate markleft{} and markright{} +% automatically for you after you enter \author{}, \journal{}, +% \journaldate{}, journalvol{}, \journalnum{}, etc. +% However, there may be some backward compatibility issues here as +% well as some special applications for IEEEtran.cls and special issues +% that may require the flexible \markleft{}, \markright{} and/or \markboth{}. +% We'll leave this as an open future suggestion. +%\newcommand{\journal}[1]{\def\@journal{#1}} +%\def\@journal{} + + + +% pointsize values +% used with ifx to determine the document's normal size +\def\@IEEEptsizenine{9} +\def\@IEEEptsizeten{10} +\def\@IEEEptsizeeleven{11} +\def\@IEEEptsizetwelve{12} + + + +% FONT DEFINITIONS (No sizexx.clo file needed) +% V1.6 revised font sizes, displayskip values and +% revised normalsize baselineskip to reduce underfull vbox problems +% on the 58pc = 696pt = 9.5in text height we want +% normalsize #lines/column baselineskip (aka leading) +% 9pt 63 11.0476pt (truncated down) +% 10pt 58 12pt (exact) +% 11pt 52 13.3846pt (truncated down) +% 12pt 50 13.92pt (exact) +% + +% we need to store the nominal baselineskip for the given font size +% in case baselinestretch ever changes. +% this is a dimen, so it will not hold stretch or shrink +\newdimen\@IEEEnormalsizeunitybaselineskip +\@IEEEnormalsizeunitybaselineskip\baselineskip + +\ifx\CLASSOPTIONpt\@IEEEptsizenine +\typeout{-- This is a 9 point document.} +\def\normalsize{\@setfontsize{\normalsize}{9}{11.0476pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{11.0476pt}% +\normalsize +\abovedisplayskip 1.5ex plus3pt minus1pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus3pt% +\belowdisplayshortskip 1.5ex plus3pt minus1pt +\def\small{\@setfontsize{\small}{8.5}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is the same as large - 10pt +\def\sublargesize{\@setfontsize{\sublargesize}{10}{12pt}} +\def\large{\@setfontsize{\large}{10}{12pt}} +\def\Large{\@setfontsize{\Large}{12}{14pt}} +\def\LARGE{\@setfontsize{\LARGE}{14}{17pt}} +\def\huge{\@setfontsize{\huge}{17}{20pt}} +\def\Huge{\@setfontsize{\Huge}{20}{24pt}} +\fi + + +% Check if we have selected 10 points +\ifx\CLASSOPTIONpt\@IEEEptsizeten +\typeout{-- This is a 10 point document.} +\def\normalsize{\@setfontsize{\normalsize}{10}{12.00pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{12pt}% +\normalsize +\abovedisplayskip 1.5ex plus4pt minus2pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus4pt% +\belowdisplayshortskip 1.5ex plus4pt minus2pt +\def\small{\@setfontsize{\small}{9}{10pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{8}{9pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{7}{8pt}} +\def\tiny{\@setfontsize{\tiny}{5}{6pt}} +% sublargesize is a tad smaller than large - 11pt +\def\sublargesize{\@setfontsize{\sublargesize}{11}{13.4pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% Check if we have selected 11 points +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven +\typeout{-- This is an 11 point document.} +\def\normalsize{\@setfontsize{\normalsize}{11}{13.3846pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.3846pt}% +\normalsize +\abovedisplayskip 1.5ex plus5pt minus3pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus5pt% +\belowdisplayshortskip 1.5ex plus5pt minus3pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 12pt +\def\sublargesize{\@setfontsize{\sublargesize}{12}{14pt}} +\def\large{\@setfontsize{\large}{12}{14pt}} +\def\Large{\@setfontsize{\Large}{14}{17pt}} +\def\LARGE{\@setfontsize{\LARGE}{17}{20pt}} +\def\huge{\@setfontsize{\huge}{20}{24pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% Check if we have selected 12 points +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve +\typeout{-- This is a 12 point document.} +\def\normalsize{\@setfontsize{\normalsize}{12}{13.92pt}}% +\setlength{\@IEEEnormalsizeunitybaselineskip}{13.92pt}% +\normalsize +\abovedisplayskip 1.5ex plus6pt minus4pt% +\belowdisplayskip \abovedisplayskip% +\abovedisplayshortskip 0pt plus6pt% +\belowdisplayshortskip 1.5ex plus6pt minus4pt +\def\small{\@setfontsize{\small}{10}{12pt}} +\def\footnotesize{\@setfontsize{\footnotesize}{9}{10.5pt}} +\def\scriptsize{\@setfontsize{\scriptsize}{8}{9pt}} +\def\tiny{\@setfontsize{\tiny}{6}{7pt}} +% sublargesize is the same as large - 14pt +\def\sublargesize{\@setfontsize{\sublargesize}{14}{17pt}} +\def\large{\@setfontsize{\large}{14}{17pt}} +\def\Large{\@setfontsize{\Large}{17}{20pt}} +\def\LARGE{\@setfontsize{\LARGE}{20}{24pt}} +\def\huge{\@setfontsize{\huge}{22}{26pt}} +\def\Huge{\@setfontsize{\Huge}{24}{28pt}} +\fi + + +% V1.6 The Computer Modern Fonts will issue a substitution warning for +% 24pt titles (24.88pt is used instead) increase the substitution +% tolerance to turn off this warning +\def\fontsubfuzz{.9pt} +% However, the default (and correct) Times font will scale exactly as needed. + + +% warn the user in case they forget to use the 9pt option with +% technote +\ifCLASSOPTIONtechnote% + \ifx\CLASSOPTIONpt\@IEEEptsizenine\else% + \typeout{** ATTENTION: Technotes are normally 9pt documents.}% + \fi% +\fi + + +% V1.7 +% Improved \textunderscore to provide a much better fake _ when used with +% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use +% available true _ glyph for those two typewriter fonts. +\def\@IEEEstringptm{ptm} % Times Roman family +\def\@IEEEstringppl{ppl} % Palatino Roman family +\def\@IEEEstringphv{phv} % Helvetica Sans Serif family +\def\@IEEEstringpcr{pcr} % Courier typewriter family +\def\@IEEEstringcmtt{cmtt} % Computer Modern typewriter family +\DeclareTextCommandDefault{\textunderscore}{\leavevmode +\ifx\f@family\@IEEEstringpcr\string_\else +\ifx\f@family\@IEEEstringcmtt\string_\else +\ifx\f@family\@IEEEstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else +\ifx\f@family\@IEEEstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else +\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax} + + + + +% set the default \baselinestretch +\def\baselinestretch{1} +\ifCLASSOPTIONdraftcls + \def\baselinestretch{1.5}% default baselinestretch for draft modes +\fi + + +% process CLASSINPUT baselinestretch +\ifx\CLASSINPUTbaselinestretch\@IEEEundefined +\else + \edef\baselinestretch{\CLASSINPUTbaselinestretch} % user CLASSINPUT override + \typeout{** ATTENTION: Overriding \string\baselinestretch\space to + \baselinestretch\space via \string\CLASSINPUT.} +\fi + +\normalsize % make \baselinestretch take affect + + + + +% store the normalsize baselineskip +\newdimen\CLASSINFOnormalsizebaselineskip +\CLASSINFOnormalsizebaselineskip=\baselineskip\relax +% and the normalsize unity (baselinestretch=1) baselineskip +% we could save a register by giving the user access to +% \@IEEEnormalsizeunitybaselineskip. However, let's protect +% its read only internal status +\newdimen\CLASSINFOnormalsizeunitybaselineskip +\CLASSINFOnormalsizeunitybaselineskip=\@IEEEnormalsizeunitybaselineskip\relax +% store the nominal value of jot +\newdimen\IEEEnormaljot +\IEEEnormaljot=0.25\baselineskip\relax + +% set \jot +\jot=\IEEEnormaljot\relax + + + + +% V1.6, we are now going to fine tune the interword spacing +% The default interword glue for Times under TeX appears to use a +% nominal interword spacing of 25% (relative to the font size, i.e., 1em) +% a maximum of 40% and a minimum of 19%. +% For example, 10pt text uses an interword glue of: +% +% 2.5pt plus 1.49998pt minus 0.59998pt +% +% However, IEEE allows for a more generous range which reduces the need +% for hyphenation, especially for two column text. Furthermore, IEEE +% tends to use a little bit more nominal space between the words. +% IEEE's interword spacing percentages appear to be: +% 35% nominal +% 23% minimum +% 50% maximum +% (They may even be using a tad more for the largest fonts such as 24pt.) +% +% for bold text, IEEE increases the spacing a little more: +% 37.5% nominal +% 23% minimum +% 55% maximum + +% here are the interword spacing ratios we'll use +% for medium (normal weight) +\def\@IEEEinterspaceratioM{0.35} +\def\@IEEEinterspaceMINratioM{0.23} +\def\@IEEEinterspaceMAXratioM{0.50} + +% for bold +\def\@IEEEinterspaceratioB{0.375} +\def\@IEEEinterspaceMINratioB{0.23} +\def\@IEEEinterspaceMAXratioB{0.55} + + +% command to revise the interword spacing for the current font under TeX: +% \fontdimen2 = nominal interword space +% \fontdimen3 = interword stretch +% \fontdimen4 = interword shrink +% since all changes to the \fontdimen are global, we can enclose these commands +% in braces to confine any font attribute or length changes +\def\@@@IEEEsetfontdimens#1#2#3{{% +\setlength{\@IEEEtrantmpdimenB}{\f@size pt}% grab the font size in pt, could use 1em instead. +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\fontdimen2\font=\@IEEEtrantmpdimenA\relax +\addtolength{\@IEEEtrantmpdimenA}{-#2\@IEEEtrantmpdimenB}% +\fontdimen3\font=-\@IEEEtrantmpdimenA\relax +\setlength{\@IEEEtrantmpdimenA}{#1\@IEEEtrantmpdimenB}% +\addtolength{\@IEEEtrantmpdimenA}{-#3\@IEEEtrantmpdimenB}% +\fontdimen4\font=\@IEEEtrantmpdimenA\relax}} + +% revise the interword spacing for each font weight +\def\@@IEEEsetfontdimens{{% +\mdseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioM}{\@IEEEinterspaceMAXratioM}{\@IEEEinterspaceMINratioM}% +\bfseries +\@@@IEEEsetfontdimens{\@IEEEinterspaceratioB}{\@IEEEinterspaceMAXratioB}{\@IEEEinterspaceMINratioB}% +}} + +% revise the interword spacing for each font shape +% \slshape is not often used for IEEE work and is not altered here. The \scshape caps are +% already a tad too large in the free LaTeX fonts (as compared to what IEEE uses) so we +% won't alter these either. +\def\@IEEEsetfontdimens{{% +\normalfont +\@@IEEEsetfontdimens +\normalfont\itshape +\@@IEEEsetfontdimens +}} + +% command to revise the interword spacing for each font size (and shape +% and weight). Only the \rmfamily is done here as \ttfamily uses a +% fixed spacing and \sffamily is not used as the main text of IEEE papers. +\def\@IEEEtunefonts{{\selectfont\rmfamily +\tiny\@IEEEsetfontdimens +\scriptsize\@IEEEsetfontdimens +\footnotesize\@IEEEsetfontdimens +\small\@IEEEsetfontdimens +\normalsize\@IEEEsetfontdimens +\sublargesize\@IEEEsetfontdimens +\large\@IEEEsetfontdimens +\LARGE\@IEEEsetfontdimens +\huge\@IEEEsetfontdimens +\Huge\@IEEEsetfontdimens}} + +% if the nofonttune class option is not given, revise the interword spacing +% now - in case IEEEtran makes any default length measurements, and make +% sure all the default fonts are loaded +\ifCLASSOPTIONnofonttune\else +\@IEEEtunefonts +\fi + +% and again at the start of the document in case the user loaded different fonts +\AtBeginDocument{\ifCLASSOPTIONnofonttune\else\@IEEEtunefonts\fi} + + + +% V1.6 +% LaTeX is a little to quick to use hyphenations +% So, we increase the penalty for their use and raise +% the badness level that triggers an underfull hbox +% warning. The author may still have to tweak things, +% but the appearance will be much better "right out +% of the box" than that under V1.5 and prior. +% TeX default is 50 +\hyphenpenalty=750 +% If we didn't adjust the interword spacing, 2200 might be better. +% The TeX default is 1000 +\hbadness=1350 +% IEEE does not use extra spacing after punctuation +\frenchspacing + +% V1.7 increase this a tad to discourage equation breaks +\binoppenalty=1000 % default 700 +\relpenalty=800 % default 500 + + +% margin note stuff +\marginparsep 10pt +\marginparwidth 20pt +\marginparpush 25pt + + +% if things get too close, go ahead and let them touch +\lineskip 0pt +\normallineskip 0pt +\lineskiplimit 0pt +\normallineskiplimit 0pt + +% The distance from the lower edge of the text body to the +% footline +\footskip 0.4in + +% normally zero, should be relative to font height. +% put in a little rubber to help stop some bad breaks (underfull vboxes) +\parskip 0ex plus 0.2ex minus 0.1ex + +\parindent 1.0em + +\topmargin -49.0pt +\headheight 12pt +\headsep 0.25in + +% use the normal font baselineskip +% so that \topskip is unaffected by changes in \baselinestretch +\topskip=\@IEEEnormalsizeunitybaselineskip +\textheight 58pc % 9.63in, 696pt +% Tweak textheight to a perfect integer number of lines/page. +% The normal baselineskip for each document point size is used +% to determine these values. +\ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=63\@IEEEnormalsizeunitybaselineskip\fi % 63 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=52\@IEEEnormalsizeunitybaselineskip\fi % 52 lines/page +\ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page + + +\columnsep 1pc +\textwidth 43pc % 2 x 21pc + 1pc = 43pc + + +% the default side margins are equal +\if@IEEEusingAfourpaper +\oddsidemargin 19.05mm +\evensidemargin 19.05mm +\else +\oddsidemargin 0.680in +\evensidemargin 0.680in +\fi +% compensate for LaTeX's 1in offset +\addtolength{\oddsidemargin}{-1in} +\addtolength{\evensidemargin}{-1in} + + + +% adjust margins for conference mode +\ifCLASSOPTIONconference + \topmargin -0.25in + % we retain the reserved, but unused space for headers + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \textheight 9.25in % The standard for conferences (668.4975pt) + % Tweak textheight to a perfect integer number of lines/page. + \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=61\@IEEEnormalsizeunitybaselineskip\fi % 61 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=56\@IEEEnormalsizeunitybaselineskip\fi % 56 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=50\@IEEEnormalsizeunitybaselineskip\fi % 50 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page +\fi + + +% compsoc conference +\ifCLASSOPTIONcompsocconf +\ifCLASSOPTIONconference + % compsoc conference use a larger value for columnsep + \columnsep 0.25in + % compsoc conferences want 1in top margin, 1.125in bottom margin + \topmargin 0in + %\addtolength{\topmargin}{-6pt}% we tweak this a tad to better comply with top of line stuff + % we retain the reserved, but unused space for headers + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \textheight 9.0in % (641.39625pt) + + % Tweak textheight to a perfect integer number of lines/page. + \ifx\CLASSOPTIONpt\@IEEEptsizenine\textheight=58\@IEEEnormalsizeunitybaselineskip\fi % 58 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeten\textheight=54\@IEEEnormalsizeunitybaselineskip\fi % 54 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizeeleven\textheight=48\@IEEEnormalsizeunitybaselineskip\fi % 48 lines/page + \ifx\CLASSOPTIONpt\@IEEEptsizetwelve\textheight=46\@IEEEnormalsizeunitybaselineskip\fi % 46 lines/page + \textwidth 7in + + + %adjust text h/w for A4 paper + \if@IEEEusingAfourpaper + \textheight 9.69in + \textwidth 6.77in + \fi + + % the default side margins are equal + \if@IEEEusingAfourpaper + \oddsidemargin 19.05mm + \evensidemargin 19.05mm + \else + \oddsidemargin 0.75in + \evensidemargin 0.75in + \fi + % compensate for LaTeX's 1in offset + \addtolength{\oddsidemargin}{-1in} + \addtolength{\evensidemargin}{-1in} +\fi\fi + + + +% draft mode settings override that of all other modes +% provides a nice 1in margin all around the paper and extra +% space between the lines for editor's comments +\ifCLASSOPTIONdraftcls + % want 1in from top of paper to text + \setlength{\topmargin}{-\headsep}% + \addtolength{\topmargin}{-\headheight}% + % we want 1in side margins regardless of paper type + \oddsidemargin 0in + \evensidemargin 0in + % set the text width + \setlength{\textwidth}{\paperwidth}% + \addtolength{\textwidth}{-2.0in}% + \setlength{\textheight}{\paperheight}% + \addtolength{\textheight}{-2.0in}% + % digitize textheight to be an integer number of lines. + % this may cause the bottom margin to be off a tad + \addtolength{\textheight}{-1\topskip}% + \divide\textheight by \baselineskip% + \multiply\textheight by \baselineskip% + \addtolength{\textheight}{\topskip}% +\fi + + + +% process CLASSINPUT inner/outer margin +% if inner margin defined, but outer margin not, set outer to inner. +\ifx\CLASSINPUTinnersidemargin\@IEEEundefined +\else + \ifx\CLASSINPUToutersidemargin\@IEEEundefined + \edef\CLASSINPUToutersidemargin{\CLASSINPUTinnersidemargin} + \fi +\fi + +\ifx\CLASSINPUToutersidemargin\@IEEEundefined +\else + % if outer margin defined, but inner margin not, set inner to outer. + \ifx\CLASSINPUTinnersidemargin\@IEEEundefined + \edef\CLASSINPUTinnersidemargin{\CLASSINPUToutersidemargin} + \fi + \setlength{\oddsidemargin}{\CLASSINPUTinnersidemargin} + \ifCLASSOPTIONtwoside + \setlength{\evensidemargin}{\CLASSINPUToutersidemargin} + \else + \setlength{\evensidemargin}{\CLASSINPUTinnersidemargin} + \fi + \addtolength{\oddsidemargin}{-1in} + \addtolength{\evensidemargin}{-1in} + \setlength{\textwidth}{\paperwidth} + \addtolength{\textwidth}{-\CLASSINPUTinnersidemargin} + \addtolength{\textwidth}{-\CLASSINPUToutersidemargin} + \typeout{** ATTENTION: Overriding inner side margin to \CLASSINPUTinnersidemargin\space and + outer side margin to \CLASSINPUToutersidemargin\space via \string\CLASSINPUT.} +\fi + + + +% process CLASSINPUT top/bottom text margin +% if toptext margin defined, but bottomtext margin not, set bottomtext to toptext margin +\ifx\CLASSINPUTtoptextmargin\@IEEEundefined +\else + \ifx\CLASSINPUTbottomtextmargin\@IEEEundefined + \edef\CLASSINPUTbottomtextmargin{\CLASSINPUTtoptextmargin} + \fi +\fi + +\ifx\CLASSINPUTbottomtextmargin\@IEEEundefined +\else + % if bottomtext margin defined, but toptext margin not, set toptext to bottomtext margin + \ifx\CLASSINPUTtoptextmargin\@IEEEundefined + \edef\CLASSINPUTtoptextmargin{\CLASSINPUTbottomtextmargin} + \fi + \setlength{\topmargin}{\CLASSINPUTtoptextmargin} + \addtolength{\topmargin}{-1in} + \addtolength{\topmargin}{-\headheight} + \addtolength{\topmargin}{-\headsep} + \setlength{\textheight}{\paperheight} + \addtolength{\textheight}{-\CLASSINPUTtoptextmargin} + \addtolength{\textheight}{-\CLASSINPUTbottomtextmargin} + % in the default format we use the normal baselineskip as topskip + % we only need 0.7 of this to clear typical top text and we need + % an extra 0.3 spacing at the bottom for descenders. This will + % correct for both. + \addtolength{\topmargin}{-0.3\@IEEEnormalsizeunitybaselineskip} + \typeout{** ATTENTION: Overriding top text margin to \CLASSINPUTtoptextmargin\space and + bottom text margin to \CLASSINPUTbottomtextmargin\space via \string\CLASSINPUT.} +\fi + + + + + + + +% LIST SPACING CONTROLS + +% Controls the amount of EXTRA spacing +% above and below \trivlist +% Both \list and IED lists override this. +% However, \trivlist will use this as will most +% things built from \trivlist like the \center +% environment. +\topsep 0.5\baselineskip + +% Controls the additional spacing around lists preceded +% or followed by blank lines. IEEE does not increase +% spacing before or after paragraphs so it is set to zero. +% \z@ is the same as zero, but faster. +\partopsep \z@ + +% Controls the spacing between paragraphs in lists. +% IEEE does not increase spacing before or after paragraphs +% so this is also zero. +% With IEEEtran.cls, global changes to +% this value DO affect lists (but not IED lists). +\parsep \z@ + +% Controls the extra spacing between list items. +% IEEE does not put extra spacing between items. +% With IEEEtran.cls, global changes to this value DO affect +% lists (but not IED lists). +\itemsep \z@ + +% \itemindent is the amount to indent the FIRST line of a list +% item. It is auto set to zero within the \list environment. To alter +% it, you have to do so when you call the \list. +% However, IEEE uses this for the theorem environment +% There is an alternative value for this near \leftmargini below +\itemindent -1em + +% \leftmargin, the spacing from the left margin of the main text to +% the left of the main body of a list item is set by \list. +% Hence this statement does nothing for lists. +% But, quote and verse do use it for indention. +\leftmargin 2em + +% we retain this stuff from the older IEEEtran.cls so that \list +% will work the same way as before. However, itemize, enumerate and +% description (IED) could care less about what these are as they +% all are overridden. +\leftmargini 2em +%\itemindent 2em % Alternative values: sometimes used. +%\leftmargini 0em +\leftmarginii 1em +\leftmarginiii 1.5em +\leftmarginiv 1.5em +\leftmarginv 1.0em +\leftmarginvi 1.0em +\labelsep 0.5em +\labelwidth \z@ + + +% The old IEEEtran.cls behavior of \list is retained. +% However, the new V1.3 IED list environments override all the +% @list stuff (\@listX is called within \list for the +% appropriate level just before the user's list_decl is called). +% \topsep is now 2pt as IEEE puts a little extra space around +% lists - used by those non-IED macros that depend on \list. +% Note that \parsep and \itemsep are not redefined as in +% the sizexx.clo \@listX (which article.cls uses) so global changes +% of these values DO affect \list +% +\def\@listi{\leftmargin\leftmargini \topsep 2pt plus 1pt minus 1pt} +\let\@listI\@listi +\def\@listii{\leftmargin\leftmarginii\labelwidth\leftmarginii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiii{\leftmargin\leftmarginiii\labelwidth\leftmarginiii% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listiv{\leftmargin\leftmarginiv\labelwidth\leftmarginiv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listv{\leftmargin\leftmarginv\labelwidth\leftmarginv% + \advance\labelwidth-\labelsep \topsep 2pt} +\def\@listvi{\leftmargin\leftmarginvi\labelwidth\leftmarginvi% + \advance\labelwidth-\labelsep \topsep 2pt} + + +% IEEE uses 5) not 5. +\def\labelenumi{\theenumi)} \def\theenumi{\arabic{enumi}} + +% IEEE uses a) not (a) +\def\labelenumii{\theenumii)} \def\theenumii{\alph{enumii}} + +% IEEE uses iii) not iii. +\def\labelenumiii{\theenumiii)} \def\theenumiii{\roman{enumiii}} + +% IEEE uses A) not A. +\def\labelenumiv{\theenumiv)} \def\theenumiv{\Alph{enumiv}} + +% exactly the same as in article.cls +\def\p@enumii{\theenumi} +\def\p@enumiii{\theenumi(\theenumii)} +\def\p@enumiv{\p@enumiii\theenumiii} + +% itemized list label styles +\def\labelitemi{$\scriptstyle\bullet$} +\def\labelitemii{\textbf{--}} +\def\labelitemiii{$\ast$} +\def\labelitemiv{$\cdot$} + + + +% **** V1.3 ENHANCEMENTS **** +% Itemize, Enumerate and Description (IED) List Controls +% *************************** +% +% +% IEEE seems to use at least two different values by +% which ITEMIZED list labels are indented to the right +% For The Journal of Lightwave Technology (JLT) and The Journal +% on Selected Areas in Communications (JSAC), they tend to use +% an indention equal to \parindent. For Transactions on Communications +% they tend to indent ITEMIZED lists a little more--- 1.3\parindent. +% We'll provide both values here for you so that you can choose +% which one you like in your document using a command such as: +% setlength{\IEEEilabelindent}{\IEEEilabelindentB} +\newdimen\IEEEilabelindentA +\IEEEilabelindentA \parindent + +\newdimen\IEEEilabelindentB +\IEEEilabelindentB 1.3\parindent +% However, we'll default to using \parindent +% which makes more sense to me +\newdimen\IEEEilabelindent +\IEEEilabelindent \IEEEilabelindentA + + +% This controls the default amount the enumerated list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEelabelindent +\IEEEelabelindent \parindent + +% This controls the default amount the description list labels +% are indented to the right. +% Normally, this is the same as the paragraph indention +\newdimen\IEEEdlabelindent +\IEEEdlabelindent \parindent + +% This is the value actually used within the IED lists. +% The IED environments automatically set its value to +% one of the three values above, so global changes do +% not have any effect +\newdimen\IEEElabelindent +\IEEElabelindent \parindent + +% The actual amount labels will be indented is +% \IEEElabelindent multiplied by the factor below +% corresponding to the level of nesting depth +% This provides a means by which the user can +% alter the effective \IEEElabelindent for deeper +% levels +% There may not be such a thing as correct "standard IEEE" +% values. What IEEE actually does may depend on the specific +% circumstances. +% The first list level almost always has full indention. +% The second levels I've seen have only 75% of the normal indentation +% Three level or greater nestings are very rare. I am guessing +% that they don't use any indentation. +\def\IEEElabelindentfactori{1.0} % almost always one +\def\IEEElabelindentfactorii{0.75} % 0.0 or 1.0 may be used in some cases +\def\IEEElabelindentfactoriii{0.0} % 0.75? 0.5? 0.0? +\def\IEEElabelindentfactoriv{0.0} +\def\IEEElabelindentfactorv{0.0} +\def\IEEElabelindentfactorvi{0.0} + +% value actually used within IED lists, it is auto +% set to one of the 6 values above +% global changes here have no effect +\def\IEEElabelindentfactor{1.0} + +% This controls the default spacing between the end of the IED +% list labels and the list text, when normal text is used for +% the labels. +\newdimen\IEEEiednormlabelsep +\IEEEiednormlabelsep 0.6em + +% This controls the default spacing between the end of the IED +% list labels and the list text, when math symbols are used for +% the labels (nomenclature lists). IEEE usually increases the +% spacing in these cases +\newdimen\IEEEiedmathlabelsep +\IEEEiedmathlabelsep 1.2em + +% This controls the extra vertical separation put above and +% below each IED list. IEEE usually puts a little extra spacing +% around each list. However, this spacing is barely noticeable. +\newskip\IEEEiedtopsep +\IEEEiedtopsep 2pt plus 1pt minus 1pt + + +% This command is executed within each IED list environment +% at the beginning of the list. You can use this to set the +% parameters for some/all your IED list(s) without disturbing +% global parameters that affect things other than lists. +% i.e., renewcommand{\IEEEiedlistdecl}{\setlength{\labelsep}{5em}} +% will alter the \labelsep for the next list(s) until +% \IEEEiedlistdecl is redefined. +\def\IEEEiedlistdecl{\relax} + +% This command provides an easy way to set \leftmargin based +% on the \labelwidth, \labelsep and the argument \IEEElabelindent +% Usage: \IEEEcalcleftmargin{width-to-indent-the-label} +% output is in the \leftmargin variable, i.e., effectively: +% \leftmargin = argument + \labelwidth + \labelsep +% Note controlled spacing here, shield end of lines with % +\def\IEEEcalcleftmargin#1{\setlength{\leftmargin}{#1}% +\addtolength{\leftmargin}{\labelwidth}% +\addtolength{\leftmargin}{\labelsep}} + +% This command provides an easy way to set \labelwidth to the +% width of the given text. It is the same as +% \settowidth{\labelwidth}{label-text} +% and useful as a shorter alternative. +% Typically used to set \labelwidth to be the width +% of the longest label in the list +\def\IEEEsetlabelwidth#1{\settowidth{\labelwidth}{#1}} + +% When this command is executed, IED lists will use the +% IEEEiedmathlabelsep label separation rather than the normal +% spacing. To have an effect, this command must be executed via +% the \IEEEiedlistdecl or within the option of the IED list +% environments. +\def\IEEEusemathlabelsep{\setlength{\labelsep}{\IEEEiedmathlabelsep}} + +% A flag which controls whether the IED lists automatically +% calculate \leftmargin from \IEEElabelindent, \labelwidth and \labelsep +% Useful if you want to specify your own \leftmargin +% This flag must be set (\IEEEnocalcleftmargintrue or \IEEEnocalcleftmarginfalse) +% via the \IEEEiedlistdecl or within the option of the IED list +% environments to have an effect. +\newif\ifIEEEnocalcleftmargin +\IEEEnocalcleftmarginfalse + +% A flag which controls whether \IEEElabelindent is multiplied by +% the \IEEElabelindentfactor for each list level. +% This flag must be set via the \IEEEiedlistdecl or within the option +% of the IED list environments to have an effect. +\newif\ifIEEEnolabelindentfactor +\IEEEnolabelindentfactorfalse + + +% internal variable to indicate type of IED label +% justification +% 0 - left; 1 - center; 2 - right +\def\@IEEEiedjustify{0} + + +% commands to allow the user to control IED +% label justifications. Use these commands within +% the IED environment option or in the \IEEEiedlistdecl +% Note that changing the normal list justifications +% is nonstandard and IEEE may not like it if you do so! +% I include these commands as they may be helpful to +% those who are using these enhanced list controls for +% other non-IEEE related LaTeX work. +% itemize and enumerate automatically default to right +% justification, description defaults to left. +\def\IEEEiedlabeljustifyl{\def\@IEEEiedjustify{0}}%left +\def\IEEEiedlabeljustifyc{\def\@IEEEiedjustify{1}}%center +\def\IEEEiedlabeljustifyr{\def\@IEEEiedjustify{2}}%right + + + + +% commands to save to and restore from the list parameter copies +% this allows us to set all the list parameters within +% the list_decl and prevent \list (and its \@list) +% from overriding any of our parameters +% V1.6 use \edefs instead of dimen's to conserve dimen registers +% Note controlled spacing here, shield end of lines with % +\def\@IEEEsavelistparams{\edef\@IEEEiedtopsep{\the\topsep}% +\edef\@IEEEiedlabelwidth{\the\labelwidth}% +\edef\@IEEEiedlabelsep{\the\labelsep}% +\edef\@IEEEiedleftmargin{\the\leftmargin}% +\edef\@IEEEiedpartopsep{\the\partopsep}% +\edef\@IEEEiedparsep{\the\parsep}% +\edef\@IEEEieditemsep{\the\itemsep}% +\edef\@IEEEiedrightmargin{\the\rightmargin}% +\edef\@IEEEiedlistparindent{\the\listparindent}% +\edef\@IEEEieditemindent{\the\itemindent}} + +% Note controlled spacing here +\def\@IEEErestorelistparams{\topsep\@IEEEiedtopsep\relax% +\labelwidth\@IEEEiedlabelwidth\relax% +\labelsep\@IEEEiedlabelsep\relax% +\leftmargin\@IEEEiedleftmargin\relax% +\partopsep\@IEEEiedpartopsep\relax% +\parsep\@IEEEiedparsep\relax% +\itemsep\@IEEEieditemsep\relax% +\rightmargin\@IEEEiedrightmargin\relax% +\listparindent\@IEEEiedlistparindent\relax% +\itemindent\@IEEEieditemindent\relax} + + +% v1.6b provide original LaTeX IED list environments +% note that latex.ltx defines \itemize and \enumerate, but not \description +% which must be created by the base classes +% save original LaTeX itemize and enumerate +\let\LaTeXitemize\itemize +\let\endLaTeXitemize\enditemize +\let\LaTeXenumerate\enumerate +\let\endLaTeXenumerate\endenumerate + +% provide original LaTeX description environment from article.cls +\newenvironment{LaTeXdescription} + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel}} + {\endlist} +\newcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont\bfseries #1} + + +% override LaTeX's default IED lists +\def\itemize{\@IEEEitemize} +\def\enditemize{\@endIEEEitemize} +\def\enumerate{\@IEEEenumerate} +\def\endenumerate{\@endIEEEenumerate} +\def\description{\@IEEEdescription} +\def\enddescription{\@endIEEEdescription} + +% provide the user with aliases - may help those using packages that +% override itemize, enumerate, or description +\def\IEEEitemize{\@IEEEitemize} +\def\endIEEEitemize{\@endIEEEitemize} +\def\IEEEenumerate{\@IEEEenumerate} +\def\endIEEEenumerate{\@endIEEEenumerate} +\def\IEEEdescription{\@IEEEdescription} +\def\endIEEEdescription{\@endIEEEdescription} + + +% V1.6 we want to keep the IEEEtran IED list definitions as our own internal +% commands so they are protected against redefinition +\def\@IEEEitemize{\@ifnextchar[{\@@IEEEitemize}{\@@IEEEitemize[\relax]}} +\def\@IEEEenumerate{\@ifnextchar[{\@@IEEEenumerate}{\@@IEEEenumerate[\relax]}} +\def\@IEEEdescription{\@ifnextchar[{\@@IEEEdescription}{\@@IEEEdescription[\relax]}} +\def\@endIEEEitemize{\endlist} +\def\@endIEEEenumerate{\endlist} +\def\@endIEEEdescription{\endlist} + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran itemized list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEitemize[#1]{% + \ifnum\@itemdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@itemdepth\@ne% + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + % get the labelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEilabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % the user can override this later if + % they specified a \labelwidth + \settowidth{\labelwidth}{\csname labelitem\romannumeral\the\@itemdepth\endcsname}% + \@IEEEsavelistparams% save our list parameters + \list{\csname\@itemitem\endcsname}{% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % labelindent factor, don't revise \labelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\labelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran enumerate list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEenumerate[#1]{% + \ifnum\@enumdepth>3\relax\@toodeep\else% + \ifnum\@listdepth>5\relax\@toodeep\else% + \advance\@enumdepth\@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + % get the labelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{2}% right justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEelabelindent% + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % calculate the label width + % We'll set it to the width suitable for all labels using + % normalfont 1) to 9) + % The user can override this later + \settowidth{\labelwidth}{9)}% + \@IEEEsavelistparams% save our list parameters + \list{\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}% + \@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % IEEElabelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}% + \fi}\fi\fi}% + + +% DO NOT ALLOW BLANK LINES TO BE IN THESE IED ENVIRONMENTS +% AS THIS WILL FORCE NEW PARAGRAPHS AFTER THE IED LISTS +% IEEEtran description list MDS 1/2001 +% Note controlled spacing here, shield end of lines with % +\def\@@IEEEdescription[#1]{% + \ifnum\@listdepth>5\relax\@toodeep\else% + % get the labelindentfactor for this level + \advance\@listdepth\@ne% we need to know what the level WILL be + \edef\IEEElabelindentfactor{\csname IEEElabelindentfactor\romannumeral\the\@listdepth\endcsname}% + \advance\@listdepth-\@ne% undo our increment + \def\@IEEEiedjustify{0}% left justified labels are default + % set other defaults + \IEEEnocalcleftmarginfalse% + \IEEEnolabelindentfactorfalse% + \topsep\IEEEiedtopsep% + \IEEElabelindent\IEEEdlabelindent% + % assume normal labelsep + \labelsep\IEEEiednormlabelsep% + \partopsep 0ex% + \parsep 0ex% + \itemsep 0ex% + \rightmargin 0em% + \listparindent 0em% + \itemindent 0em% + % Bogus label width in case the user forgets + % to set it. + % TIP: If you want to see what a variable's width is you + % can use the TeX command \showthe\width-variable to + % display it on the screen during compilation + % (This might be helpful to know when you need to find out + % which label is the widest) + \settowidth{\labelwidth}{Hello}% + \@IEEEsavelistparams% save our list parameters + \list{}{\@IEEErestorelistparams% override any list{} changes + % to our globals + \let\makelabel\@IEEEiedmakelabel% v1.6b setup \makelabel + \IEEEiedlistdecl% let user alter parameters + #1\relax% + % If the user has requested not to use the + % labelindent factor, don't revise \IEEElabelindent + \ifIEEEnolabelindentfactor\relax% + \else\IEEElabelindent=\IEEElabelindentfactor\IEEElabelindent% + \fi% + % Unless the user has requested otherwise, + % calculate our left margin based + % on \IEEElabelindent, \labelwidth and + % \labelsep + \ifIEEEnocalcleftmargin\relax% + \else\IEEEcalcleftmargin{\IEEElabelindent}\relax% + \fi}\fi} + +% v1.6b we use one makelabel that does justification as needed. +\def\@IEEEiedmakelabel#1{\relax\if\@IEEEiedjustify 0\relax +\makebox[\labelwidth][l]{\normalfont #1}\else +\if\@IEEEiedjustify 1\relax +\makebox[\labelwidth][c]{\normalfont #1}\else +\makebox[\labelwidth][r]{\normalfont #1}\fi\fi} + + +% VERSE and QUOTE +% V1.7 define environments with newenvironment +\newenvironment{verse}{\let\\=\@centercr + \list{}{\itemsep\z@ \itemindent -1.5em \listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item\relax} + {\endlist} +\newenvironment{quotation}{\list{}{\listparindent 1.5em \itemindent\listparindent + \rightmargin\leftmargin \parsep 0pt plus 1pt}\item\relax} + {\endlist} +\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item\relax} + {\endlist} + + +% \titlepage +% provided only for backward compatibility. \maketitle is the correct +% way to create the title page. +\newif\if@restonecol +\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \else \newpage \fi \thispagestyle{empty}\c@page\z@} +\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} + +% standard values from article.cls +\arraycolsep 5pt +\arrayrulewidth .4pt +\doublerulesep 2pt + +\tabcolsep 6pt +\tabbingsep 0.5em + + +%% FOOTNOTES +% +%\skip\footins 10pt plus 4pt minus 2pt +% V1.6 respond to changes in font size +% space added above the footnotes (if present) +\skip\footins 0.9\baselineskip plus 0.4\baselineskip minus 0.2\baselineskip + +% V1.6, we need to make \footnotesep responsive to changes +% in \baselineskip or strange spacings will result when in +% draft mode. Here is a little LaTeX secret - \footnotesep +% determines the height of an invisible strut that is placed +% *above* the baseline of footnotes after the first. Since +% LaTeX considers the space for characters to be 0.7/baselineskip +% above the baseline and 0.3/baselineskip below it, we need to +% use 0.7/baselineskip as a \footnotesep to maintain equal spacing +% between all the lines of the footnotes. IEEE often uses a tad +% more, so use 0.8\baselineskip. This slightly larger value also helps +% the text to clear the footnote marks. Note that \thanks in IEEEtran +% uses its own value of \footnotesep which is set in \maketitle. +{\footnotesize +\global\footnotesep 0.8\baselineskip} + + +\skip\@mpfootins = \skip\footins +\fboxsep = 3pt +\fboxrule = .4pt +% V1.6 use 1em, then use LaTeX2e's \@makefnmark +% Note that IEEE normally *left* aligns the footnote marks, so we don't need +% box resizing tricks here. +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@makefnmark}#1}% V1.6 use 1em +% V1.7 compsoc does not use superscipts for footnote marks +\ifCLASSOPTIONcompsoc +\def\@IEEEcompsocmakefnmark{\hbox{\normalfont\@thefnmark.\ }} +\long\def\@makefntext#1{\parindent 1em\indent\hbox{\@IEEEcompsocmakefnmark}#1} +\fi + +% IEEE does not use footnote rules +\def\footnoterule{} + +% V1.7 for compsoc, IEEE uses a footnote rule only for \thanks. We devise a "one-shot" +% system to implement this. +\newif\if@IEEEenableoneshotfootnoterule +\@IEEEenableoneshotfootnoterulefalse +\ifCLASSOPTIONcompsoc +\def\footnoterule{\relax\if@IEEEenableoneshotfootnoterule +\kern-5pt +\hbox to \columnwidth{\hfill\vrule width 0.5\columnwidth height 0.4pt\hfill} +\kern4.6pt +\global\@IEEEenableoneshotfootnoterulefalse +\else +\relax +\fi} +\fi + +% V1.6 do not allow LaTeX to break a footnote across multiple pages +\interfootnotelinepenalty=10000 + +% V1.6 discourage breaks within equations +% Note that amsmath normally sets this to 10000, +% but LaTeX2e normally uses 100. +\interdisplaylinepenalty=2500 + +% default allows section depth up to /paragraph +\setcounter{secnumdepth}{4} + +% technotes do not allow /paragraph +\ifCLASSOPTIONtechnote + \setcounter{secnumdepth}{3} +\fi +% neither do compsoc conferences +\@IEEEcompsocconfonly{\setcounter{secnumdepth}{3}} + + +\newcounter{section} +\newcounter{subsection}[section] +\newcounter{subsubsection}[subsection] +\newcounter{paragraph}[subsubsection] + +% used only by IEEEtran's IEEEeqnarray as other packages may +% have their own, different, implementations +\newcounter{IEEEsubequation}[equation] + +% as shown when called by user from \ref, \label and in table of contents +\def\theequation{\arabic{equation}} % 1 +\def\theIEEEsubequation{\theequation\alph{IEEEsubequation}} % 1a (used only by IEEEtran's IEEEeqnarray) +\ifCLASSOPTIONcompsoc +% compsoc is all arabic +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\else +\def\thesection{\Roman{section}} % I +% V1.7, \mbox prevents breaks around - +\def\thesubsection{\mbox{\thesection-\Alph{subsection}}} % I-A +% V1.7 use I-A1 format used by IEEE rather than I-A.1 +\def\thesubsubsection{\thesubsection\arabic{subsubsection}} % I-A1 +\def\theparagraph{\thesubsubsection\alph{paragraph}} % I-A1a +\fi + +% From Heiko Oberdiek. Because of the \mbox in \thesubsection, we need to +% tell hyperref to disable the \mbox command when making PDF bookmarks. +% This done already with hyperref.sty version 6.74o and later, but +% it will not hurt to do it here again for users of older versions. +\@ifundefined{pdfstringdefPreHook}{\let\pdfstringdefPreHook\@empty}{}% +\g@addto@macro\pdfstringdefPreHook{\let\mbox\relax} + + +% Main text forms (how shown in main text headings) +% V1.6, using \thesection in \thesectiondis allows changes +% in the former to automatically appear in the latter +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference + \def\thesectiondis{\thesection.} + \def\thesubsectiondis{\thesectiondis\arabic{subsection}.} + \def\thesubsubsectiondis{\thesubsectiondis\arabic{subsubsection}.} + \def\theparagraphdis{\thesubsubsectiondis\arabic{paragraph}.} + \else% compsoc not conferencs + \def\thesectiondis{\thesection} + \def\thesubsectiondis{\thesectiondis.\arabic{subsection}} + \def\thesubsubsectiondis{\thesubsectiondis.\arabic{subsubsection}} + \def\theparagraphdis{\thesubsubsectiondis.\arabic{paragraph}} + \fi +\else% not compsoc + \def\thesectiondis{\thesection.} % I. + \def\thesubsectiondis{\Alph{subsection}.} % B. + \def\thesubsubsectiondis{\arabic{subsubsection})} % 3) + \def\theparagraphdis{\alph{paragraph})} % d) +\fi + +% just like LaTeX2e's \@eqnnum +\def\theequationdis{{\normalfont \normalcolor (\theequation)}}% (1) +% IEEEsubequation used only by IEEEtran's IEEEeqnarray +\def\theIEEEsubequationdis{{\normalfont \normalcolor (\theIEEEsubequation)}}% (1a) +% redirect LaTeX2e's equation number display and all that depend on +% it, through IEEEtran's \theequationdis +\def\@eqnnum{\theequationdis} + + + +% V1.7 provide string macros as article.cls does +\def\contentsname{Contents} +\def\listfigurename{List of Figures} +\def\listtablename{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Fig.} +\def\tablename{TABLE} +\@IEEEcompsocconfonly{\def\figurename{Figure}\def\tablename{Table}} +\def\partname{Part} +\def\appendixname{Appendix} +\def\abstractname{Abstract} +% IEEE specific names +\def\IEEEkeywordsname{Keywords} +\def\IEEEproofname{Proof} + + +% LIST OF FIGURES AND TABLES AND TABLE OF CONTENTS +% +\def\@pnumwidth{1.55em} +\def\@tocrmarg{2.55em} +\def\@dotsep{4.5} +\setcounter{tocdepth}{3} + +% adjusted some spacings here so that section numbers will not easily +% collide with the section titles. +% VIII; VIII-A; and VIII-A.1 are usually the worst offenders. +% MDS 1/2001 +\def\tableofcontents{\section*{\contentsname}\@starttoc{toc}} +\def\l@section#1#2{\addpenalty{\@secpenalty}\addvspace{1.0em plus 1pt}% + \@tempdima 2.75em \begingroup \parindent \z@ \rightskip \@pnumwidth% + \parfillskip-\@pnumwidth {\bfseries\leavevmode #1}\hfil\hbox to\@pnumwidth{\hss #2}\par% + \endgroup} +% argument format #1:level, #2:labelindent,#3:labelsep +\def\l@subsection{\@dottedtocline{2}{2.75em}{3.75em}} +\def\l@subsubsection{\@dottedtocline{3}{6.5em}{4.5em}} +% must provide \l@ defs for ALL sublevels EVEN if tocdepth +% is such as they will not appear in the table of contents +% these defs are how TOC knows what level these things are! +\def\l@paragraph{\@dottedtocline{4}{6.5em}{5.5em}} +\def\l@subparagraph{\@dottedtocline{5}{6.5em}{6.5em}} +\def\listoffigures{\section*{\listfigurename}\@starttoc{lof}} +\def\l@figure{\@dottedtocline{1}{0em}{2.75em}} +\def\listoftables{\section*{\listtablename}\@starttoc{lot}} +\let\l@table\l@figure + + +%% Definitions for floats +%% +%% Normal Floats +\floatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\textfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +\@fptop 0pt plus 1fil +\@fpsep 0.75\baselineskip plus 2fil +\@fpbot 0pt plus 1fil +\def\topfraction{0.9} +\def\bottomfraction{0.4} +\def\floatpagefraction{0.8} +% V1.7, let top floats approach 90% of page +\def\textfraction{0.1} + +%% Double Column Floats +\dblfloatsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip + +\dbltextfloatsep 1.7\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip +% Note that it would be nice if the rubber here actually worked in LaTeX2e. +% There is a long standing limitation in LaTeX, first discovered (to the best +% of my knowledge) by Alan Jeffrey in 1992. LaTeX ignores the stretchable +% portion of \dbltextfloatsep, and as a result, double column figures can and +% do result in an non-integer number of lines in the main text columns with +% underfull vbox errors as a consequence. A post to comp.text.tex +% by Donald Arseneau confirms that this had not yet been fixed in 1998. +% IEEEtran V1.6 will fix this problem for you in the titles, but it doesn't +% protect you from other double floats. Happy vspace'ing. + +\@dblfptop 0pt plus 1fil +\@dblfpsep 0.75\baselineskip plus 2fil +\@dblfpbot 0pt plus 1fil +\def\dbltopfraction{0.8} +\def\dblfloatpagefraction{0.8} +\setcounter{dbltopnumber}{4} + +\intextsep 1\baselineskip plus 0.2\baselineskip minus 0.2\baselineskip +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} + + + +% article class provides these, we should too. +\newlength\abovecaptionskip +\newlength\belowcaptionskip +% but only \abovecaptionskip is used above figure captions and *below* table +% captions +\setlength\abovecaptionskip{0.5\baselineskip} +\setlength\belowcaptionskip{0pt} +% V1.6 create hooks in case the caption spacing ever needs to be +% overridden by a user +\def\@IEEEfigurecaptionsepspace{\vskip\abovecaptionskip\relax}% +\def\@IEEEtablecaptionsepspace{\vskip\abovecaptionskip\relax}% + + +% 1.6b revise caption system so that \@makecaption uses two arguments +% as with LaTeX2e. Otherwise, there will be problems when using hyperref. +\def\@IEEEtablestring{table} + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc \@makecaption +\ifCLASSOPTIONconference% compsoc conference +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\normalsize\begin{center}{\normalfont\sffamily\normalsize {#1.}~ #2}\end{center}% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }% +\parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center +\else% +\hbox to\hsize{\normalfont\sffamily\normalsize\hfil\box\@tempboxa\hfil}% +\fi\fi} +\else% nonconference compsoc +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\normalsize\begin{center}{\normalfont\sffamily\normalsize #1}\\{\normalfont\sffamily\normalsize #2}\end{center}% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\sffamily\normalsize {#1.}~ }% +\parbox[t]{\hsize}{\normalfont\sffamily\normalsize \noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, left justify +\else% +\hbox to\hsize{\normalfont\sffamily\normalsize\box\@tempboxa\hfil}% +\fi\fi} +\fi + +\else% traditional noncompsoc \@makecaption +\long\def\@makecaption#1#2{% +% test if is a for a figure or table +\ifx\@captype\@IEEEtablestring% +% if a table, do table caption +\footnotesize\begin{center}{\normalfont\footnotesize #1}\\{\normalfont\footnotesize\scshape #2}\end{center}% +\@IEEEtablecaptionsepspace +% if not a table, format it as a figure +\else +\@IEEEfigurecaptionsepspace +% 3/2001 use footnotesize, not small; use two nonbreaking spaces, not one +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ #2}% +\ifdim \wd\@tempboxa >\hsize% +% if caption is longer than a line, let it wrap around +\setbox\@tempboxa\hbox{\normalfont\footnotesize {#1.}~~ }% +\parbox[t]{\hsize}{\normalfont\footnotesize\noindent\unhbox\@tempboxa#2}% +% if caption is shorter than a line, center if conference, left justify otherwise +\else% +\ifCLASSOPTIONconference \hbox to\hsize{\normalfont\footnotesize\hfil\box\@tempboxa\hfil}% +\else \hbox to\hsize{\normalfont\footnotesize\box\@tempboxa\hfil}% +\fi\fi\fi} +\fi + + + +% V1.7 disable captions class option, do so in a way that retains operation of \label +% within \caption +\ifCLASSOPTIONcaptionsoff +\long\def\@makecaption#1#2{\vspace*{2em}\footnotesize\begin{center}{\footnotesize #1}\end{center}% +\let\@IEEEtemporiglabeldefsave\label +\let\@IEEEtemplabelargsave\relax +\def\label##1{\gdef\@IEEEtemplabelargsave{##1}}% +\setbox\@tempboxa\hbox{#2}% +\let\label\@IEEEtemporiglabeldefsave +\ifx\@IEEEtemplabelargsave\relax\else\label{\@IEEEtemplabelargsave}\fi} +\fi + + +% V1.7 define end environments with \def not \let so as to work OK with +% preview-latex +\newcounter{figure} +\def\thefigure{\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{\figurename~\thefigure} +\def\figure{\@float{figure}} +\def\endfigure{\end@float} +\@namedef{figure*}{\@dblfloat{figure}} +\@namedef{endfigure*}{\end@dblfloat} +\newcounter{table} +\ifCLASSOPTIONcompsoc +\def\thetable{\arabic{table}} +\else +\def\thetable{\@Roman\c@table} +\fi +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{\tablename~\thetable} +% V1.6 IEEE uses 8pt text for tables +% to default to footnotesize, we hack into LaTeX2e's \@floatboxreset and pray +\def\table{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@float{table}} +\def\endtable{\end@float} +% v1.6b double column tables need to default to footnotesize as well. +\@namedef{table*}{\def\@floatboxreset{\reset@font\footnotesize\@setminipage}\@dblfloat{table}} +\@namedef{endtable*}{\end@dblfloat} + + + + +%% +%% START OF IEEEeqnarry DEFINITIONS +%% +%% Inspired by the concepts, examples, and previous works of LaTeX +%% coders and developers such as Donald Arseneau, Fred Bartlett, +%% David Carlisle, Tony Liu, Frank Mittelbach, Piet van Oostrum, +%% Roland Winkler and Mark Wooding. +%% I don't make the claim that my work here is even near their calibre. ;) + + +% hook to allow easy changeover to IEEEtran.cls/tools.sty error reporting +\def\@IEEEclspkgerror{\ClassError{IEEEtran}} + +\newif\if@IEEEeqnarraystarform% flag to indicate if the environment was called as the star form +\@IEEEeqnarraystarformfalse + +\newif\if@advanceIEEEeqncolcnt% tracks if the environment should advance the col counter +% allows a way to make an \IEEEeqnarraybox that can be used within an \IEEEeqnarray +% used by IEEEeqnarraymulticol so that it can work properly in both +\@advanceIEEEeqncolcnttrue + +\newcount\@IEEEeqnnumcols % tracks how many IEEEeqnarray cols are defined +\newcount\@IEEEeqncolcnt % tracks how many IEEEeqnarray cols the user actually used + + +% The default math style used by the columns +\def\IEEEeqnarraymathstyle{\displaystyle} +% The default text style used by the columns +% default to using the current font +\def\IEEEeqnarraytextstyle{\relax} + +% like the iedlistdecl but for \IEEEeqnarray +\def\IEEEeqnarraydecl{\relax} +\def\IEEEeqnarrayboxdecl{\relax} + +% \yesnumber is the opposite of \nonumber +% a novel concept with the same def as the equationarray package +% However, we give IEEE versions too since some LaTeX packages such as +% the MDWtools mathenv.sty redefine \nonumber to something else. +\providecommand{\yesnumber}{\global\@eqnswtrue} +\def\IEEEyesnumber{\global\@eqnswtrue} +\def\IEEEnonumber{\global\@eqnswfalse} + + +\def\IEEEyessubnumber{\global\@IEEEissubequationtrue\global\@eqnswtrue% +\if@IEEEeqnarrayISinner% only do something inside an IEEEeqnarray +\if@IEEElastlinewassubequation\addtocounter{equation}{-1}\else\setcounter{IEEEsubequation}{1}\fi% +\def\@currentlabel{\p@IEEEsubequation\theIEEEsubequation}\fi} + +% flag to indicate that an equation is a sub equation +\newif\if@IEEEissubequation% +\@IEEEissubequationfalse + +% allows users to "push away" equations that get too close to the equation numbers +\def\IEEEeqnarraynumspace{\hphantom{\if@IEEEissubequation\theIEEEsubequationdis\else\theequationdis\fi}} + +% provides a way to span multiple columns within IEEEeqnarray environments +% will consider \if@advanceIEEEeqncolcnt before globally advancing the +% column counter - so as to work within \IEEEeqnarraybox +% usage: \IEEEeqnarraymulticol{number cols. to span}{col type}{cell text} +\long\def\IEEEeqnarraymulticol#1#2#3{\multispan{#1}% +% check if column is defined +\relax\expandafter\ifx\csname @IEEEeqnarraycolDEF#2\endcsname\@IEEEeqnarraycolisdefined% +\csname @IEEEeqnarraycolPRE#2\endcsname#3\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST#2\endcsname% +\else% if not, error and use default type +\@IEEEclspkgerror{Invalid column type "#2" in \string\IEEEeqnarraymulticol.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\csname @IEEEeqnarraycolPRE@IEEEdefault\endcsname#3\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST@IEEEdefault\endcsname% +\fi% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by #1\relax\fi} + +% like \omit, but maintains track of the column counter for \IEEEeqnarray +\def\IEEEeqnarrayomit{\omit\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by 1\relax\fi} + + +% provides a way to define a letter referenced column type +% usage: \IEEEeqnarraydefcol{col. type letter/name}{pre insertion text}{post insertion text} +\def\IEEEeqnarraydefcol#1#2#3{\expandafter\def\csname @IEEEeqnarraycolPRE#1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolPOST#1\endcsname{#3}% +\expandafter\def\csname @IEEEeqnarraycolDEF#1\endcsname{1}} + + +% provides a way to define a numerically referenced inter-column glue types +% usage: \IEEEeqnarraydefcolsep{col. glue number}{glue definition} +\def\IEEEeqnarraydefcolsep#1#2{\expandafter\def\csname @IEEEeqnarraycolSEP\romannumeral #1\endcsname{#2}% +\expandafter\def\csname @IEEEeqnarraycolSEPDEF\romannumeral #1\endcsname{1}} + + +\def\@IEEEeqnarraycolisdefined{1}% just a macro for 1, used for checking undefined column types + + +% expands and appends the given argument to the \@IEEEtrantmptoksA token list +% used to build up the \halign preamble +\def\@IEEEappendtoksA#1{\edef\@@IEEEappendtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA #1}}% +\@@IEEEappendtoksA} + +% also appends to \@IEEEtrantmptoksA, but does not expand the argument +% uses \toks8 as a scratchpad register +\def\@IEEEappendNOEXPANDtoksA#1{\toks8={#1}% +\edef\@@IEEEappendNOEXPANDtoksA{\@IEEEtrantmptoksA={\the\@IEEEtrantmptoksA\the\toks8}}% +\@@IEEEappendNOEXPANDtoksA} + +% define some common column types for the user +% math +\IEEEeqnarraydefcol{l}{$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{c}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} +\IEEEeqnarraydefcol{r}{\hfil$\IEEEeqnarraymathstyle}{$} +\IEEEeqnarraydefcol{L}{$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{C}{\hfil$\IEEEeqnarraymathstyle{}}{{}$\hfil} +\IEEEeqnarraydefcol{R}{\hfil$\IEEEeqnarraymathstyle{}}{{}$} +% text +\IEEEeqnarraydefcol{s}{\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{t}{\hfil\IEEEeqnarraytextstyle}{\hfil} +\IEEEeqnarraydefcol{u}{\hfil\IEEEeqnarraytextstyle}{} + +% vertical rules +\IEEEeqnarraydefcol{v}{}{\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{vv}{\vrule width\arrayrulewidth\hfil}{\hfil\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{V}{}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} +\IEEEeqnarraydefcol{VV}{\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth\hfil}% +{\hfil\vrule width\arrayrulewidth\hskip\doublerulesep\vrule width\arrayrulewidth} + +% horizontal rules +\IEEEeqnarraydefcol{h}{}{\leaders\hrule height\arrayrulewidth\hfil} +\IEEEeqnarraydefcol{H}{}{\leaders\vbox{\hrule width\arrayrulewidth\vskip\doublerulesep\hrule width\arrayrulewidth}\hfil} + +% plain +\IEEEeqnarraydefcol{x}{}{} +\IEEEeqnarraydefcol{X}{$}{$} + +% the default column type to use in the event a column type is not defined +\IEEEeqnarraydefcol{@IEEEdefault}{\hfil$\IEEEeqnarraymathstyle}{$\hfil} + + +% a zero tabskip (used for "-" col types) +\def\@IEEEeqnarraycolSEPzero{0pt plus 0pt minus 0pt} +% a centering tabskip (used for "+" col types) +\def\@IEEEeqnarraycolSEPcenter{1000pt plus 0pt minus 1000pt} + +% top level default tabskip glues for the start, end, and inter-column +% may be reset within environments not always at the top level, e.g., \IEEEeqnarraybox +\edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPcenter}% default start glue +\edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPcenter}% default end glue +\edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + + + +% creates a vertical rule that extends from the bottom to the top a a cell +% Provided in case other packages redefine \vline some other way. +% usage: \IEEEeqnarrayvrule[rule thickness] +% If no argument is provided, \arrayrulewidth will be used for the rule thickness. +\newcommand\IEEEeqnarrayvrule[1][\arrayrulewidth]{\vrule\@width#1\relax} + +% creates a blank separator row +% usage: \IEEEeqnarrayseprow[separation length][font size commands] +% default is \IEEEeqnarrayseprow[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprow{\relax\@ifnextchar[{\@IEEEeqnarrayseprow}{\@IEEEeqnarrayseprow[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprow[#1]}{\@@IEEEeqnarrayseprow[#1][\relax]}} +\def\@@IEEEeqnarrayseprow[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\@IEEEeqnarrayhoptolastcolumn\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + +% creates a blank separator row, but omits all the column templates +% usage: \IEEEeqnarrayseprowcut[separation length][font size commands] +% default is \IEEEeqnarrayseprowcut[0.25\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \skip5 as a scratch register - calls \@IEEEeqnarraystrutsize which uses more scratch registers +\def\IEEEeqnarrayseprowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayseprowcut}{\@IEEEeqnarrayseprowcut[0.25\normalbaselineskip]}} +\def\@IEEEeqnarrayseprowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarrayseprowcut[#1]}{\@@IEEEeqnarrayseprowcut[#1][\relax]}} +\def\@@IEEEeqnarrayseprowcut[#1][#2]{\def\@IEEEeqnarrayseprowARGONE{#1}% +\ifx\@IEEEeqnarrayseprowARGONE\@empty% +% get the skip value, based on the font commands +% use skip5 because \IEEEeqnarraystrutsize uses \skip0, \skip2, \skip3 +% assign within a bogus box to confine the font changes +{\setbox0=\hbox{#2\relax\global\skip5=0.25\normalbaselineskip}}% +\else% +{\setbox0=\hbox{#2\relax\global\skip5=#1}}% +\fi% +\IEEEeqnarraystrutsize{\skip5}{0pt}[\relax]\relax} + + + +% draws a single rule across all the columns optional +% argument determines the rule width, \arrayrulewidth is the default +% updates column counter as needed and turns off struts +% usage: \IEEEeqnarrayrulerow[rule line thickness] +\def\IEEEeqnarrayrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarrayrulerow}{\@IEEEeqnarrayrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarrayrulerow[#1]{\leaders\hrule height#1\hfil\relax% put in our rule +% turn off any struts +\IEEEeqnarraystrutsize{0pt}{0pt}[\relax]\relax} + + +% draws a double rule by using a single rule row, a separator row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerow{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerow}{\@IEEEeqnarraydblrulerow[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerow[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerow[#1]}% +{\@@IEEEeqnarraydblrulerow[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerow[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]\relax% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprow[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprow[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + +% draws a double rule by using a single rule row, a separator (cutting) row, and then +% another single rule row +% first optional argument determines the rule thicknesses, \arrayrulewidth is the default +% second optional argument determines the rule spacing, \doublerulesep is the default +% usage: \IEEEeqnarraydblrulerow[rule line thickness][rule spacing] +\def\IEEEeqnarraydblrulerowcut{\multispan{\@IEEEeqnnumcols}\relax% span all the cols +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\@ifnextchar[{\@IEEEeqnarraydblrulerowcut}{\@IEEEeqnarraydblrulerowcut[\arrayrulewidth]}} +\def\@IEEEeqnarraydblrulerowcut[#1]{\relax\@ifnextchar[{\@@IEEEeqnarraydblrulerowcut[#1]}% +{\@@IEEEeqnarraydblrulerowcut[#1][\doublerulesep]}} +\def\@@IEEEeqnarraydblrulerowcut[#1][#2]{\def\@IEEEeqnarraydblrulerowARG{#1}% +% we allow the user to say \IEEEeqnarraydblrulerow[][] +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +\def\@IEEEeqnarraydblrulerowARG{#2}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\\\IEEEeqnarrayseprowcut[\doublerulesep][\relax]% +\else% +\\\IEEEeqnarrayseprowcut[#2][\relax]% +\fi% +\\\multispan{\@IEEEeqnnumcols}% +% advance column counter only if the IEEEeqnarray environment wants it +\if@advanceIEEEeqncolcnt\global\advance\@IEEEeqncolcnt by \@IEEEeqnnumcols\relax\fi% +\def\@IEEEeqnarraydblrulerowARG{#1}% +\ifx\@IEEEeqnarraydblrulerowARG\@empty% +\@IEEEeqnarrayrulerow[\arrayrulewidth]% +\else% +\@IEEEeqnarrayrulerow[#1]% +\fi% +} + + + +% inserts a full row's worth of &'s +% relies on \@IEEEeqnnumcols to provide the correct number of columns +% uses \@IEEEtrantmptoksA, \count0 as scratch registers +\def\@IEEEeqnarrayhoptolastcolumn{\@IEEEtrantmptoksA={}\count0=1\relax% +\loop% add cols if the user did not use them all +\ifnum\count0<\@IEEEeqnnumcols\relax% +\@IEEEappendtoksA{&}% +\advance\count0 by 1\relax% update the col count +\repeat% +\the\@IEEEtrantmptoksA%execute the &'s +} + + + +\newif\if@IEEEeqnarrayISinner % flag to indicate if we are within the lines +\@IEEEeqnarrayISinnerfalse % of an IEEEeqnarray - after the IEEEeqnarraydecl + +\edef\@IEEEeqnarrayTHEstrutheight{0pt} % height and depth of IEEEeqnarray struts +\edef\@IEEEeqnarrayTHEstrutdepth{0pt} + +\edef\@IEEEeqnarrayTHEmasterstrutheight{0pt} % default height and depth of +\edef\@IEEEeqnarrayTHEmasterstrutdepth{0pt} % struts within an IEEEeqnarray + +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{0pt} % saved master strut height +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{0pt} % and depth + +\newif\if@IEEEeqnarrayusemasterstrut % flag to indicate that the master strut value +\@IEEEeqnarrayusemasterstruttrue % is to be used + + + +% saves the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutsave{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% save values +\edef\@IEEEeqnarrayTHEmasterstrutHSAVE{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutDSAVE{\the\dimen2}} + +% restores the strut height and depth of the master strut +\def\@IEEEeqnarraymasterstrutrestore{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutHSAVE\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutDSAVE\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}} + + +% globally restores the strut height and depth to the +% master values and sets the master strut flag to true +\def\@IEEEeqnarraystrutreset{\relax% +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% remove stretchability +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% restore values +\xdef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\global\@IEEEeqnarrayusemasterstruttrue} + + +% if the master strut is not to be used, make the current +% values of \@IEEEeqnarrayTHEstrutheight, \@IEEEeqnarrayTHEstrutdepth +% and the use master strut flag, global +% this allows user strut commands issued in the last column to be carried +% into the isolation/strut column +\def\@IEEEeqnarrayglobalizestrutstatus{\relax% +\if@IEEEeqnarrayusemasterstrut\else% +\xdef\@IEEEeqnarrayTHEstrutheight{\@IEEEeqnarrayTHEstrutheight}% +\xdef\@IEEEeqnarrayTHEstrutdepth{\@IEEEeqnarrayTHEstrutdepth}% +\global\@IEEEeqnarrayusemasterstrutfalse% +\fi} + + + +% usage: \IEEEeqnarraystrutsize{height}{depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, sets the height +% and depth of both the master and local struts. If called inside +% an IEEEeqnarray line, sets the height and depth of the local strut +% only and sets the flag to indicate the use of the local strut +% values. If the height or depth is left blank, 0.7\normalbaselineskip +% and 0.3\normalbaselineskip will be used, respectively. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsize#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsize{#1}{#2}}{\@IEEEeqnarraystrutsize{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsize#1#2[#3]{\def\@IEEEeqnarraystrutsizeARG{#1}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.7\normalbaselineskip}}% +\skip0=\skip3\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1\relax}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizeARG{#2}% +\ifx\@IEEEeqnarraystrutsizeARG\@empty% +{\setbox0=\hbox{#3\relax\global\skip3=0.3\normalbaselineskip}}% +\skip2=\skip3\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2\relax}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% usage: \IEEEeqnarraystrutsizeadd{added height}{added depth}[font size commands] +% If called outside the lines of an IEEEeqnarray, adds the given height +% and depth to both the master and local struts. +% If called inside an IEEEeqnarray line, adds the given height and depth +% to the local strut only and sets the flag to indicate the use +% of the local strut values. +% In both cases, if a height or depth is left blank, 0pt is used instead. +% The optional argument can be used to evaluate the lengths under +% a different font size and styles. If none is specified, the current +% font is used. +% uses scratch registers \skip0, \skip2, \skip3, \dimen0, \dimen2 +\def\IEEEeqnarraystrutsizeadd#1#2{\relax\@ifnextchar[{\@IEEEeqnarraystrutsizeadd{#1}{#2}}{\@IEEEeqnarraystrutsizeadd{#1}{#2}[\relax]}} +\def\@IEEEeqnarraystrutsizeadd#1#2[#3]{\def\@IEEEeqnarraystrutsizearg{#1}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip0=0pt\relax% +\else% arg one present +{\setbox0=\hbox{#3\relax\global\skip3=#1}}% +\skip0=\skip3\relax% +\fi% if null arg +\def\@IEEEeqnarraystrutsizearg{#2}% +\ifx\@IEEEeqnarraystrutsizearg\@empty% +\skip2=0pt\relax% +\else% arg two present +{\setbox0=\hbox{#3\relax\global\skip3=#2}}% +\skip2=\skip3\relax% +\fi% if null arg +% remove stretchability, just to be safe +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +\if@IEEEeqnarrayISinner% inner does not touch master strut size +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local strut size +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstrutfalse% do not use master +\else% outer, have to set master strut too +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +% add it to the user supplied values +\advance\dimen0 by \skip0\relax% +\advance\dimen2 by \skip2\relax% +% update the local and master strut sizes +\edef\@IEEEeqnarrayTHEmasterstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEmasterstrutdepth{\the\dimen2}% +\edef\@IEEEeqnarrayTHEstrutheight{\the\dimen0}% +\edef\@IEEEeqnarrayTHEstrutdepth{\the\dimen2}% +\@IEEEeqnarrayusemasterstruttrue% use master strut +\fi} + + +% allow user a way to see the struts +\newif\ifIEEEvisiblestruts +\IEEEvisiblestrutsfalse + +% inserts an invisible strut using the master or local strut values +% uses scratch registers \skip0, \skip2, \dimen0, \dimen2 +\def\@IEEEeqnarrayinsertstrut{\relax% +\if@IEEEeqnarrayusemasterstrut +% get master strut size +\expandafter\skip0=\@IEEEeqnarrayTHEmasterstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEmasterstrutdepth\relax% +\else% +% get local strut size +\expandafter\skip0=\@IEEEeqnarrayTHEstrutheight\relax% +\expandafter\skip2=\@IEEEeqnarrayTHEstrutdepth\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +% dimen0 = height, dimen2 = depth +% allow user to see struts if desired +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0pt height\dimen0 depth\dimen2\relax\fi} + + +% creates an invisible strut, useable even outside \IEEEeqnarray +% if \IEEEvisiblestrutstrue, the strut will be visible and 0.2pt wide. +% usage: \IEEEstrut[height][depth][font size commands] +% default is \IEEEstrut[0.7\normalbaselineskip][0.3\normalbaselineskip][\relax] +% blank arguments inherit the default values +% uses \dimen0, \dimen2, \skip0, \skip2 +\def\IEEEstrut{\relax\@ifnextchar[{\@IEEEstrut}{\@IEEEstrut[0.7\normalbaselineskip]}} +\def\@IEEEstrut[#1]{\relax\@ifnextchar[{\@@IEEEstrut[#1]}{\@@IEEEstrut[#1][0.3\normalbaselineskip]}} +\def\@@IEEEstrut[#1][#2]{\relax\@ifnextchar[{\@@@IEEEstrut[#1][#2]}{\@@@IEEEstrut[#1][#2][\relax]}} +\def\@@@IEEEstrut[#1][#2][#3]{\mbox{#3\relax% +\def\@IEEEstrutARG{#1}% +\ifx\@IEEEstrutARG\@empty% +\skip0=0.7\normalbaselineskip\relax% +\else% +\skip0=#1\relax% +\fi% +\def\@IEEEstrutARG{#2}% +\ifx\@IEEEstrutARG\@empty% +\skip2=0.3\normalbaselineskip\relax% +\else% +\skip2=#2\relax% +\fi% +% remove stretchability, probably not needed +\dimen0\skip0\relax% +\dimen2\skip2\relax% +\ifIEEEvisiblestruts% +\vrule width0.2pt height\dimen0 depth\dimen2\relax% +\else% +\vrule width0.0pt height\dimen0 depth\dimen2\relax\fi}} + + +% enables strut mode by setting a default strut size and then zeroing the +% \baselineskip, \lineskip, \lineskiplimit and \jot +\def\IEEEeqnarraystrutmode{\IEEEeqnarraystrutsize{0.7\normalbaselineskip}{0.3\normalbaselineskip}[\relax]% +\baselineskip=0pt\lineskip=0pt\lineskiplimit=0pt\jot=0pt} + + + +\def\IEEEeqnarray{\@IEEEeqnarraystarformfalse\@IEEEeqnarray} +\def\endIEEEeqnarray{\end@IEEEeqnarray} + +\@namedef{IEEEeqnarray*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarray} +\@namedef{endIEEEeqnarray*}{\end@IEEEeqnarray} + + +% \IEEEeqnarray is an enhanced \eqnarray. +% The star form defaults to not putting equation numbers at the end of each row. +% usage: \IEEEeqnarray[decl]{cols} +\def\@IEEEeqnarray{\relax\@ifnextchar[{\@@IEEEeqnarray}{\@@IEEEeqnarray[\relax]}} +\def\@@IEEEeqnarray[#1]#2{% + % default to showing the equation number or not based on whether or not + % the star form was involked + \if@IEEEeqnarraystarform\global\@eqnswfalse + \else% not the star form + \global\@eqnswtrue + \fi% if star form + \@IEEEissubequationfalse% default to no subequations + \@IEEElastlinewassubequationfalse% assume last line is not a sub equation + \@IEEEeqnarrayISinnerfalse% not yet within the lines of the halign + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax + \lineskiplimit=0pt\relax + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + \@advanceIEEEeqncolcnttrue% advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \stepcounter{equation}% advance equation counter before first line + \setcounter{IEEEsubequation}{0}% no subequation yet + \def\@currentlabel{\p@equation\theequation}% redefine the ref label + \IEEEeqnarraydecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarraycr% replace newline with one that can put in eqn. numbers + \global\@IEEEeqncolcnt\z@% col. count = 0 for first line + \@IEEEbuildpreamble #2\end\relax% build the preamble and put it into \@IEEEtrantmptoksA + % put in the column for the equation number + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % advance the \@IEEEeqncolcnt for the isolation col, this helps with error checking + \@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the isolation column + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % advance the \@IEEEeqncolcnt for the equation number col, this helps with error checking + \@IEEEappendtoksA{&\global\advance\@IEEEeqncolcnt by 1\relax}% + % add the equation number col to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\hb@xt@\z@\bgroup\hss\the\toks0\egroup}% + % note \@IEEEeqnnumcols does not count the equation col or isolation col + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the display alignment + \@IEEEeqnarrayISinnertrue% commands are now within the lines + $$\everycr{}\halign to\displaywidth\bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% enter isolation/strut column (or the next column if the user did not use +% every column), record the strut status, complete the columns, do the strut if needed, +% restore counters to correct values and exit +\def\end@IEEEeqnarray{\@IEEEeqnarrayglobalizestrutstatus&\@@IEEEeqnarraycr\egroup% +\if@IEEElastlinewassubequation\global\advance\c@IEEEsubequation\m@ne\fi% +\global\advance\c@equation\m@ne% +$$\@ignoretrue} + +% need a way to remember if last line is a subequation +\newif\if@IEEElastlinewassubequation% +\@IEEElastlinewassubequationfalse + +% IEEEeqnarray uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\*[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the next column +% as there is an isolation/strut column after the user's columns +\def\@IEEEeqnarraycr{\@IEEEeqnarrayglobalizestrutstatus&% save strut status and advance to next column + {\ifnum0=`}\fi + \@ifstar{% + \global\@eqpen\@M\@IEEEeqnarrayYCR + }{% + \global\@eqpen\interdisplaylinepenalty \@IEEEeqnarrayYCR + }% +} + +\def\@IEEEeqnarrayYCR{\@testopt\@IEEEeqnarrayXCR\z@skip} + +\def\@IEEEeqnarrayXCR[#1]{% + \ifnum0=`{\fi}% + \@@IEEEeqnarraycr + \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}% + +\def\@@IEEEeqnarraycr{\@IEEEtrantmptoksA={}% clear token register + \advance\@IEEEeqncolcnt by -1\relax% adjust col count because of the isolation column + \ifnum\@IEEEeqncolcnt>\@IEEEeqnnumcols\relax + \@IEEEclspkgerror{Too many columns within the IEEEeqnarray\MessageBreak + environment}% + {Use fewer \string &'s or put more columns in the IEEEeqnarry column\MessageBreak + specifications.}\relax% + \else + \loop% add cols if the user did not use them all + \ifnum\@IEEEeqncolcnt<\@IEEEeqnnumcols\relax + \@IEEEappendtoksA{&}% + \advance\@IEEEeqncolcnt by 1\relax% update the col count + \repeat + % this number of &'s will take us the the isolation column + \fi + % execute the &'s + \the\@IEEEtrantmptoksA% + % handle the strut/isolation column + \@IEEEeqnarrayinsertstrut% do the strut if needed + \@IEEEeqnarraystrutreset% reset the strut system for next line or IEEEeqnarray + &% and enter the equation number column + % is this line needs an equation number, display it and advance the + % (sub)equation counters, record what type this line was + \if@eqnsw% + \if@IEEEissubequation\theIEEEsubequationdis\addtocounter{equation}{1}\stepcounter{IEEEsubequation}% + \global\@IEEElastlinewassubequationtrue% + \else% display a standard equation number, initialize the IEEEsubequation counter + \theequationdis\stepcounter{equation}\setcounter{IEEEsubequation}{0}% + \global\@IEEElastlinewassubequationfalse\fi% + \fi% + % reset the eqnsw flag to indicate default preference of the display of equation numbers + \if@IEEEeqnarraystarform\global\@eqnswfalse\else\global\@eqnswtrue\fi + \global\@IEEEissubequationfalse% reset the subequation flag + % reset the number of columns the user actually used + \global\@IEEEeqncolcnt\z@\relax + % the real end of the line + \cr} + + + + + +% \IEEEeqnarraybox is like \IEEEeqnarray except the box form puts everything +% inside a vtop, vbox, or vcenter box depending on the letter in the second +% optional argument (t,b,c). Vbox is the default. Unlike \IEEEeqnarray, +% equation numbers are not displayed and \IEEEeqnarraybox can be nested. +% \IEEEeqnarrayboxm is for math mode (like \array) and does not put the vbox +% within an hbox. +% \IEEEeqnarrayboxt is for text mode (like \tabular) and puts the vbox within +% a \hbox{$ $} construct. +% \IEEEeqnarraybox will auto detect whether to use \IEEEeqnarrayboxm or +% \IEEEeqnarrayboxt depending on the math mode. +% The third optional argument specifies the width this box is to be set to - +% natural width is the default. +% The * forms do not add \jot line spacing +% usage: \IEEEeqnarraybox[decl][pos][width]{cols} +\def\IEEEeqnarrayboxm{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxm{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxm*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWfalse\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxm*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarrayboxt{\@IEEEeqnarraystarformfalse\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\def\endIEEEeqnarrayboxt{\end@IEEEeqnarraybox} +\@namedef{IEEEeqnarrayboxt*}{\@IEEEeqnarraystarformtrue\@IEEEeqnarrayboxHBOXSWtrue\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarrayboxt*}{\end@IEEEeqnarraybox} + +\def\IEEEeqnarraybox{\@IEEEeqnarraystarformfalse\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\def\endIEEEeqnarraybox{\end@IEEEeqnarraybox} + +\@namedef{IEEEeqnarraybox*}{\@IEEEeqnarraystarformtrue\ifmmode\@IEEEeqnarrayboxHBOXSWfalse\else\@IEEEeqnarrayboxHBOXSWtrue\fi% +\@IEEEeqnarraybox} +\@namedef{endIEEEeqnarraybox*}{\end@IEEEeqnarraybox} + +% flag to indicate if the \IEEEeqnarraybox needs to put things into an hbox{$ $} +% for \vcenter in non-math mode +\newif\if@IEEEeqnarrayboxHBOXSW% +\@IEEEeqnarrayboxHBOXSWfalse + +\def\@IEEEeqnarraybox{\relax\@ifnextchar[{\@@IEEEeqnarraybox}{\@@IEEEeqnarraybox[\relax]}} +\def\@@IEEEeqnarraybox[#1]{\relax\@ifnextchar[{\@@@IEEEeqnarraybox[#1]}{\@@@IEEEeqnarraybox[#1][b]}} +\def\@@@IEEEeqnarraybox[#1][#2]{\relax\@ifnextchar[{\@@@@IEEEeqnarraybox[#1][#2]}{\@@@@IEEEeqnarraybox[#1][#2][\relax]}} + +% #1 = decl; #2 = t,b,c; #3 = width, #4 = col specs +\def\@@@@IEEEeqnarraybox[#1][#2][#3]#4{\@IEEEeqnarrayISinnerfalse % not yet within the lines of the halign + \@IEEEeqnarraymasterstrutsave% save current master strut values + \@IEEEeqnarraystrutsize{0pt}{0pt}[\relax]% turn off struts by default + \@IEEEeqnarrayusemasterstruttrue% use master strut till user asks otherwise + \IEEEvisiblestrutsfalse% diagnostic mode defaults to off + % no extra space unless the user specifically requests it + \lineskip=0pt\relax% + \lineskiplimit=0pt\relax% + \baselineskip=\normalbaselineskip\relax% + \jot=\IEEEnormaljot\relax% + \mathsurround\z@\relax% no extra spacing around math + % the default end glues are zero for an \IEEEeqnarraybox + \edef\@IEEEeqnarraycolSEPdefaultstart{\@IEEEeqnarraycolSEPzero}% default start glue + \edef\@IEEEeqnarraycolSEPdefaultend{\@IEEEeqnarraycolSEPzero}% default end glue + \edef\@IEEEeqnarraycolSEPdefaultmid{\@IEEEeqnarraycolSEPzero}% default inter-column glue + \@advanceIEEEeqncolcntfalse% do not advance the col counter for each col the user uses, + % used in \IEEEeqnarraymulticol and in the preamble build + \IEEEeqnarrayboxdecl\relax% allow a way for the user to make global overrides + #1\relax% allow user to override defaults + \let\\\@IEEEeqnarrayboxcr% replace newline with one that allows optional spacing + \@IEEEbuildpreamble #4\end\relax% build the preamble and put it into \@IEEEtrantmptoksA + % add an isolation column to the preamble to stop \\'s {} from getting into the last col + \ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi% col separator for those after the first + \toks0={##}% + % add the isolation column to the preamble + \@IEEEappendtoksA{\tabskip\z@skip\bgroup\the\toks0\egroup}% + % set the starting tabskip glue as determined by the preamble build + \tabskip=\@IEEEBPstartglue\relax + % begin the alignment + \everycr{}% + % use only the very first token to determine the positioning + % this stops some problems when the user uses more than one letter, + % but is probably not worth the effort + % \noindent is used as a delimiter + \def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% + \@IEEEgrabfirstoken#2\relax\relax\noindent + % \@IEEEgrabbedfirstoken has the first token, the rest are discarded + % if we need to put things into and hbox and go into math mode, do so now + \if@IEEEeqnarrayboxHBOXSW \leavevmode \hbox \bgroup $\fi% + % use the appropriate vbox type + \if\@IEEEgrabbedfirstoken t\relax\vtop\else\if\@IEEEgrabbedfirstoken c\relax% + \vcenter\else\vbox\fi\fi\bgroup% + \@IEEEeqnarrayISinnertrue% commands are now within the lines + \ifx#3\relax\halign\else\halign to #3\relax\fi% + \bgroup + % "exspand" the preamble + \span\the\@IEEEtrantmptoksA\cr} + +% carry strut status and enter the isolation/strut column, +% exit from math mode if needed, and exit +\def\end@IEEEeqnarraybox{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +\@IEEEeqnarraymasterstrutrestore% restore the previous master strut values +% reset the strut system for next IEEEeqnarray +% (sets local strut values back to previous master strut values) +\@IEEEeqnarraystrutreset% +% ensure last line, exit from halign, close vbox +\crcr\egroup\egroup% +% exit from math mode and close hbox if needed +\if@IEEEeqnarrayboxHBOXSW $\egroup\fi} + + + +% IEEEeqnarraybox uses a modifed \\ instead of the plain \cr to +% end rows. This allows for things like \\[vskip amount] +% This "cr" macros are modified versions those for LaTeX2e's eqnarray +% For IEEEeqnarraybox, \\* is the same as \\ +% the {\ifnum0=`} braces must be kept away from the last column to avoid +% altering spacing of its math, so we use & to advance to the isolation/strut column +% carry strut status into isolation/strut column +\def\@IEEEeqnarrayboxcr{\@IEEEeqnarrayglobalizestrutstatus% carry strut status +&% enter isolation/strut column +\@IEEEeqnarrayinsertstrut% do strut if needed +% reset the strut system for next line or IEEEeqnarray +\@IEEEeqnarraystrutreset% +{\ifnum0=`}\fi% +\@ifstar{\@IEEEeqnarrayboxYCR}{\@IEEEeqnarrayboxYCR}} + +% test and setup the optional argument to \\[] +\def\@IEEEeqnarrayboxYCR{\@testopt\@IEEEeqnarrayboxXCR\z@skip} + +% IEEEeqnarraybox does not automatically increase line spacing by \jot +\def\@IEEEeqnarrayboxXCR[#1]{\ifnum0=`{\fi}% +\cr\noalign{\if@IEEEeqnarraystarform\else\vskip\jot\fi\vskip#1\relax}} + + + +% starts the halign preamble build +\def\@IEEEbuildpreamble{\@IEEEtrantmptoksA={}% clear token register +\let\@IEEEBPcurtype=u%current column type is not yet known +\let\@IEEEBPprevtype=s%the previous column type was the start +\let\@IEEEBPnexttype=u%next column type is not yet known +% ensure these are valid +\def\@IEEEBPcurglue={0pt plus 0pt minus 0pt}% +\def\@IEEEBPcurcolname{@IEEEdefault}% name of current column definition +% currently acquired numerically referenced glue +% use a name that is easier to remember +\let\@IEEEBPcurnum=\@IEEEtrantmpcountA% +\@IEEEBPcurnum=0% +% tracks number of columns in the preamble +\@IEEEeqnnumcols=0% +% record the default end glues +\edef\@IEEEBPstartglue{\@IEEEeqnarraycolSEPdefaultstart}% +\edef\@IEEEBPendglue{\@IEEEeqnarraycolSEPdefaultend}% +% now parse the user's column specifications +\@@IEEEbuildpreamble} + + +% parses and builds the halign preamble +\def\@@IEEEbuildpreamble#1#2{\let\@@nextIEEEbuildpreamble=\@@IEEEbuildpreamble% +% use only the very first token to check the end +% \noindent is used as a delimiter as \end can be present here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +\ifx\@IEEEgrabbedfirstoken\end\let\@@nextIEEEbuildpreamble=\@@IEEEfinishpreamble\else% +% identify current and next token type +\@IEEEgetcoltype{#1}{\@IEEEBPcurtype}{1}% current, error on invalid +\@IEEEgetcoltype{#2}{\@IEEEBPnexttype}{0}% next, no error on invalid next +% if curtype is a glue, get the glue def +\if\@IEEEBPcurtype g\@IEEEgetcurglue{#1}{\@IEEEBPcurglue}\fi% +% if curtype is a column, get the column def and set the current column name +\if\@IEEEBPcurtype c\@IEEEgetcurcol{#1}\fi% +% if curtype is a numeral, acquire the user defined glue +\if\@IEEEBPcurtype n\@IEEEprocessNcol{#1}\fi% +% process the acquired glue +\if\@IEEEBPcurtype g\@IEEEprocessGcol\fi% +% process the acquired col +\if\@IEEEBPcurtype c\@IEEEprocessCcol\fi% +% ready prevtype for next col spec. +\let\@IEEEBPprevtype=\@IEEEBPcurtype% +% be sure and put back the future token(s) as a group +\fi\@@nextIEEEbuildpreamble{#2}} + + +% executed just after preamble build is completed +% warn about zero cols, and if prevtype type = u, put in end tabskip glue +\def\@@IEEEfinishpreamble#1{\ifnum\@IEEEeqnnumcols<1\relax +\@IEEEclspkgerror{No column specifiers declared for IEEEeqnarray}% +{At least one column type must be declared for each IEEEeqnarray.}% +\fi%num cols less than 1 +%if last type undefined, set default end tabskip glue +\if\@IEEEBPprevtype u\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue}\fi} + + +% Identify and return the column specifier's type code +\def\@IEEEgetcoltype#1#2#3{% +% use only the very first token to determine the type +% \noindent is used as a delimiter as \end can be present here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +% \@IEEEgrabfirstoken has the first token, the rest are discarded +% n = number +% g = glue (any other char in catagory 12) +% c = letter +% e = \end +% u = undefined +% third argument: 0 = no error message, 1 = error on invalid char +\let#2=u\relax% assume invalid until know otherwise +\ifx\@IEEEgrabbedfirstoken\end\let#2=e\else +\ifcat\@IEEEgrabbedfirstoken\relax\else% screen out control sequences +\if0\@IEEEgrabbedfirstoken\let#2=n\else +\if1\@IEEEgrabbedfirstoken\let#2=n\else +\if2\@IEEEgrabbedfirstoken\let#2=n\else +\if3\@IEEEgrabbedfirstoken\let#2=n\else +\if4\@IEEEgrabbedfirstoken\let#2=n\else +\if5\@IEEEgrabbedfirstoken\let#2=n\else +\if6\@IEEEgrabbedfirstoken\let#2=n\else +\if7\@IEEEgrabbedfirstoken\let#2=n\else +\if8\@IEEEgrabbedfirstoken\let#2=n\else +\if9\@IEEEgrabbedfirstoken\let#2=n\else +\ifcat,\@IEEEgrabbedfirstoken\let#2=g\relax +\else\ifcat a\@IEEEgrabbedfirstoken\let#2=c\relax\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +\if#2u\relax +\if0\noexpand#3\relax\else\@IEEEclspkgerror{Invalid character in column specifications}% +{Only letters, numerals and certain other symbols are allowed \MessageBreak +as IEEEeqnarray column specifiers.}\fi\fi} + + +% identify the current letter referenced column +% if invalid, use a default column +\def\@IEEEgetcurcol#1{\expandafter\ifx\csname @IEEEeqnarraycolDEF#1\endcsname\@IEEEeqnarraycolisdefined% +\def\@IEEEBPcurcolname{#1}\else% invalid column name +\@IEEEclspkgerror{Invalid column type "#1" in column specifications.\MessageBreak +Using a default centering column instead}% +{You must define IEEEeqnarray column types before use.}% +\def\@IEEEBPcurcolname{@IEEEdefault}\fi} + + +% identify and return the predefined (punctuation) glue value +\def\@IEEEgetcurglue#1#2{% +% ! = \! (neg small) -0.16667em (-3/18 em) +% , = \, (small) 0.16667em ( 3/18 em) +% : = \: (med) 0.22222em ( 4/18 em) +% ; = \; (large) 0.27778em ( 5/18 em) +% ' = \quad 1em +% " = \qquad 2em +% . = 0.5\arraycolsep +% / = \arraycolsep +% ? = 2\arraycolsep +% * = 1fil +% + = \@IEEEeqnarraycolSEPcenter +% - = \@IEEEeqnarraycolSEPzero +% Note that all em values are referenced to the math font (textfont2) fontdimen6 +% value for 1em. +% +% use only the very first token to determine the type +% this prevents errant tokens from getting in the main text +% \noindent is used as a delimiter here +\def\@IEEEgrabfirstoken##1##2\noindent{\let\@IEEEgrabbedfirstoken=##1}% +\@IEEEgrabfirstoken#1\relax\relax\noindent +% get the math font 1em value +% LaTeX2e's NFSS2 does not preload the fonts, but \IEEEeqnarray needs +% to gain access to the math (\textfont2) font's spacing parameters. +% So we create a bogus box here that uses the math font to ensure +% that \textfont2 is loaded and ready. If this is not done, +% the \textfont2 stuff here may not work. +% Thanks to Bernd Raichle for his 1997 post on this topic. +{\setbox0=\hbox{$\displaystyle\relax$}}% +% fontdimen6 has the width of 1em (a quad). +\@IEEEtrantmpdimenA=\fontdimen6\textfont2\relax% +% identify the glue value based on the first token +% we discard anything after the first +\if!\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=-0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if,\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.16667\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if:\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.22222\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if;\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.27778\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if'\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=1\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if"\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\@IEEEtrantmpdimenA\edef#2{\the\@IEEEtrantmpdimenA}\else +\if.\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=0.5\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if/\@IEEEgrabbedfirstoken\edef#2{\the\arraycolsep}\else +\if?\@IEEEgrabbedfirstoken\@IEEEtrantmpdimenA=2\arraycolsep\edef#2{\the\@IEEEtrantmpdimenA}\else +\if *\@IEEEgrabbedfirstoken\edef#2{0pt plus 1fil minus 0pt}\else +\if+\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPcenter}\else +\if-\@IEEEgrabbedfirstoken\edef#2{\@IEEEeqnarraycolSEPzero}\else +\edef#2{\@IEEEeqnarraycolSEPzero}% +\@IEEEclspkgerror{Invalid predefined inter-column glue type "#1" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{Only !,:;'"./?*+ and - are valid predefined glue types in the\MessageBreak +IEEEeqnarray column specifications.}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + + + +% process a numerical digit from the column specification +% and look up the corresponding user defined glue value +% can transform current type from n to g or a as the user defined glue is acquired +\def\@IEEEprocessNcol#1{\if\@IEEEBPprevtype g% +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue, future digits will be discarded +\@IEEEBPcurnum=0\relax% +\else% if we previously aborted a glue +\if\@IEEEBPprevtype a\@IEEEBPcurnum=0\let\@IEEEBPcurtype=a%maintain digit abortion +\else%acquire this number +% save the previous type before the numerical digits started +\if\@IEEEBPprevtype n\else\let\@IEEEBPprevsavedtype=\@IEEEBPprevtype\fi% +\multiply\@IEEEBPcurnum by 10\relax% +\advance\@IEEEBPcurnum by #1\relax% add in number, \relax is needed to stop TeX's number scan +\if\@IEEEBPnexttype n\else%close acquisition +\expandafter\ifx\csname @IEEEeqnarraycolSEPDEF\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname\@IEEEeqnarraycolisdefined% +\edef\@IEEEBPcurglue{\csname @IEEEeqnarraycolSEP\expandafter\romannumeral\number\@IEEEBPcurnum\endcsname}% +\else%user glue not defined +\@IEEEclspkgerror{Invalid user defined inter-column glue type "\number\@IEEEBPcurnum" in\MessageBreak +column specifications. Using a default value of\MessageBreak +0pt instead}% +{You must define all IEEEeqnarray numerical inter-column glue types via\MessageBreak +\string\IEEEeqnarraydefcolsep \space before they are used in column specifications.}% +\edef\@IEEEBPcurglue{\@IEEEeqnarraycolSEPzero}% +\fi% glue defined or not +\let\@IEEEBPcurtype=g% change the type to reflect the acquired glue +\let\@IEEEBPprevtype=\@IEEEBPprevsavedtype% restore the prev type before this number glue +\@IEEEBPcurnum=0\relax%ready for next acquisition +\fi%close acquisition, get glue +\fi%discard or acquire number +\fi%prevtype glue or not +} + + +% process an acquired glue +% add any acquired column/glue pair to the preamble +\def\@IEEEprocessGcol{\if\@IEEEBPprevtype a\let\@IEEEBPcurtype=a%maintain previous glue abortions +\else +% if this is the start glue, save it, but do nothing else +% as this is not used in the preamble, but before +\if\@IEEEBPprevtype s\edef\@IEEEBPstartglue{\@IEEEBPcurglue}% +\else%not the start glue +\if\@IEEEBPprevtype g%ignore if back to back glues +\@IEEEclspkgerror{Back-to-back inter-column glue specifiers in column\MessageBreak +specifications. Ignoring consecutive glue specifiers\MessageBreak +after the first}% +{You cannot have two or more glue types next to each other\MessageBreak +in the IEEEeqnarray column specifications.}% +\let\@IEEEBPcurtype=a% abort this glue +\else% not a back to back glue +\if\@IEEEBPprevtype c\relax% if the previoustype was a col, add column/glue pair to preamble +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column defintion into the preamble, being careful not to expand +% the column definition +\@IEEEappendtoksA{\tabskip=\@IEEEBPcurglue}% +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\else% error: non-start glue with no pending column +\@IEEEclspkgerror{Inter-column glue specifier without a prior column\MessageBreak +type in the column specifications. Ignoring this glue\MessageBreak +specifier}% +{Except for the first and last positions, glue can be placed only\MessageBreak +between column types.}% +\let\@IEEEBPcurtype=a% abort this glue +\fi% previous was a column +\fi% back-to-back glues +\fi% is start column glue +\fi% prev type not a +} + + +% process an acquired letter referenced column and, if necessary, add it to the preamble +\def\@IEEEprocessCcol{\if\@IEEEBPnexttype g\else +\if\@IEEEBPnexttype n\else +% we have a column followed by something other than a glue (or numeral glue) +% so we must add this column to the preamble now +\ifnum\@IEEEeqnnumcols>0\relax\@IEEEappendtoksA{&}\fi%col separator for those after the first +\if\@IEEEBPnexttype e\@IEEEappendtoksA{\tabskip=\@IEEEBPendglue\relax}\else%put in end glue +\@IEEEappendtoksA{\tabskip=\@IEEEeqnarraycolSEPdefaultmid\relax}\fi% or default mid glue +\toks0={##}% +% make preamble advance col counter if this environment needs this +\if@advanceIEEEeqncolcnt\@IEEEappendtoksA{\global\advance\@IEEEeqncolcnt by 1\relax}\fi +% insert the column definition into the preamble, being careful not to expand +% the column definition +\@IEEEappendNOEXPANDtoksA{\begingroup\csname @IEEEeqnarraycolPRE}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname}% +\@IEEEappendtoksA{\the\toks0}% +\@IEEEappendNOEXPANDtoksA{\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\csname @IEEEeqnarraycolPOST}% +\@IEEEappendtoksA{\@IEEEBPcurcolname}% +\@IEEEappendNOEXPANDtoksA{\endcsname\relax\relax\relax\relax\relax% +\relax\relax\relax\relax\relax\endgroup}% +\advance\@IEEEeqnnumcols by 1\relax%one more column in the preamble +\fi%next type not numeral +\fi%next type not glue +} + + +%% +%% END OF IEEEeqnarry DEFINITIONS +%% + + + + +% set up the running headings, this complex because of all the different +% modes IEEEtran supports +\if@twoside + \ifCLASSOPTIONtechnote + \def\ps@headings{% + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{} + \fi} + \else % not a technote + \def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\rightmark \hfil \thepage} + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{}\def\@evenfoot{}% + \else + \def\@oddfoot{\scriptsize\@date\hfil DRAFT} + \def\@evenfoot{\scriptsize DRAFT\hfil\@date} + \fi + \else + \def\@oddfoot{}\def\@evenfoot{}% + \fi} + \fi +\else % single side +\def\ps@headings{% + \ifCLASSOPTIONconference + \def\@oddhead{} + \def\@evenhead{} + \else + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \fi + \ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage} + \def\@evenhead{} + \ifCLASSOPTIONdraftclsnofoot + \def\@oddfoot{} + \else + \def\@oddfoot{\scriptsize \@date \hfil DRAFT} + \fi + \else + \def\@oddfoot{} + \fi + \def\@evenfoot{}} +\fi + + +% title page style +\def\ps@IEEEtitlepagestyle{\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONconference + \def\@oddhead{}% + \def\@evenhead{}% +\else + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% +\fi +\ifCLASSOPTIONdraftcls + \def\@oddhead{\hbox{}\scriptsize\leftmark \hfil \thepage}% + \def\@evenhead{\scriptsize\thepage \hfil \leftmark\hbox{}}% + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % all non-draft mode footers + \if@IEEEusingpubid + % for title pages that are using a pubid + % do not repeat pubid if using peer review option + \ifCLASSOPTIONpeerreview + \else + \footskip 0pt% + \ifCLASSOPTIONcompsocconf + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi + \fi + \fi +\fi} + + +% peer review cover page style +\def\ps@IEEEpeerreviewcoverpagestyle{% +\def\@oddhead{}\def\@evenhead{}% +\def\@oddfoot{}\def\@evenfoot{}% +\ifCLASSOPTIONdraftcls + \ifCLASSOPTIONdraftclsnofoot\else + \def\@oddfoot{\scriptsize \@date\hfil DRAFT}% + \def\@evenfoot{\scriptsize DRAFT\hfil \@date}% + \fi +\else + % non-draft mode footers + \if@IEEEusingpubid + \footskip 0pt% + \ifCLASSOPTIONcompsoc + \def\@oddfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\scriptsize\raisebox{-1.5\@IEEEnormalsizeunitybaselineskip}[0ex][0ex]{\@IEEEpubid}\hss}% + \else + \def\@oddfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \def\@evenfoot{\hss\normalfont\footnotesize\raisebox{1.5ex}[1.5ex]{\@IEEEpubid}\hss}% + \fi + \fi +\fi} + + +% start with empty headings +\def\rightmark{}\def\leftmark{} + + +%% Defines the command for putting the header. \footernote{TEXT} is the same +%% as \markboth{TEXT}{TEXT}. +%% Note that all the text is forced into uppercase, if you have some text +%% that needs to be in lower case, for instance et. al., then either manually +%% set \leftmark and \rightmark or use \MakeLowercase{et. al.} within the +%% arguments to \markboth. +\def\markboth#1#2{\def\leftmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#1}}% +\def\rightmark{\@IEEEcompsoconly{\sffamily}\MakeUppercase{#2}}} +\def\footernote#1{\markboth{#1}{#1}} + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} + + + + +%% CITATION AND BIBLIOGRAPHY COMMANDS +%% +%% V1.6 no longer supports the older, nonstandard \shortcite and \citename setup stuff +% +% +% Modify Latex2e \@citex to separate citations with "], [" +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{], [}% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} + +% V1.6 we create hooks for the optional use of Donald Arseneau's +% cite.sty package. cite.sty is "smart" and will notice that the +% following format controls are already defined and will not +% redefine them. The result will be the proper sorting of the +% citation numbers and auto detection of 3 or more entry "ranges" - +% all in IEEE style: [1], [2], [5]--[7], [12] +% This also allows for an optional note, i.e., \cite[mynote]{..}. +% If the \cite with note has more than one reference, the note will +% be applied to the last of the listed references. It is generally +% desired that if a note is given, only one reference is listed in +% that \cite. +% Thanks to Mr. Arseneau for providing the required format arguments +% to produce the IEEE style. +\def\citepunct{], [} +\def\citedash{]--[} + +% V1.7 default to using same font for urls made by url.sty +\AtBeginDocument{\csname url@samestyle\endcsname} + +% V1.6 class files should always provide these +\def\newblock{\hskip .11em\@plus.33em\@minus.07em} +\let\@openbib@code\@empty + + +% Provide support for the control entries of IEEEtran.bst V1.00 and later. +% V1.7 optional argument allows for a different aux file to be specified in +% order to handle multiple bibliographies. For example, with multibib.sty: +% \newcites{sec}{Secondary Literature} +% \bstctlcite[@auxoutsec]{BSTcontrolhak} +\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}} +\def\@bstctlcite[#1]#2{\@bsphack + \@for\@citeb:=#2\do{% + \edef\@citeb{\expandafter\@firstofone\@citeb}% + \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}% + \@esphack} + +% V1.6 provide a way for a user to execute a command just before +% a given reference number - used to insert a \newpage to balance +% the columns on the last page +\edef\@IEEEtriggerrefnum{0} % the default of zero means that + % the command is not executed +\def\@IEEEtriggercmd{\newpage} + +% allow the user to alter the triggered command +\long\def\IEEEtriggercmd#1{\long\def\@IEEEtriggercmd{#1}} + +% allow user a way to specify the reference number just before the +% command is executed +\def\IEEEtriggeratref#1{\@IEEEtrantmpcountA=#1% +\edef\@IEEEtriggerrefnum{\the\@IEEEtrantmpcountA}}% + +% trigger command at the given reference +\def\@IEEEbibitemprefix{\@IEEEtrantmpcountA=\@IEEEtriggerrefnum\relax% +\advance\@IEEEtrantmpcountA by -1\relax% +\ifnum\c@enumiv=\@IEEEtrantmpcountA\relax\@IEEEtriggercmd\relax\fi} + + +\def\@biblabel#1{[#1]} + +% compsoc journals left align the reference numbers +\@IEEEcompsocnotconfonly{\def\@biblabel#1{[#1]\hfill}} + +% controls bib item spacing +\def\IEEEbibitemsep{0pt plus .5pt} + +\@IEEEcompsocconfonly{\def\IEEEbibitemsep{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}} + + +\def\thebibliography#1{\section*{\refname}% + \addcontentsline{toc}{section}{\refname}% + % V1.6 add some rubber space here and provide a command trigger + \footnotesize\@IEEEcompsocconfonly{\small}\vskip 0.3\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep\relax + \itemsep \IEEEbibitemsep\relax + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \let\@IEEElatexbibitem\bibitem% + \def\bibitem{\@IEEEbibitemprefix\@IEEElatexbibitem}% +\def\newblock{\hskip .11em plus .33em minus .07em}% +% originally: +% \sloppy\clubpenalty4000\widowpenalty4000% +% by adding the \interlinepenalty here, we make it more +% difficult, but not impossible, for LaTeX to break within a reference. +% IEEE almost never breaks a reference (but they do it more often with +% technotes). You may get an underfull vbox warning around the bibliography, +% but the final result will be much more like what IEEE will publish. +% MDS 11/2000 +\ifCLASSOPTIONtechnote\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty100% +\else\sloppy\clubpenalty4000\widowpenalty4000\interlinepenalty500\fi% + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + + + + +% TITLE PAGE COMMANDS +% +% +% \IEEEmembership is used to produce the sublargesize italic font used to indicate author +% IEEE membership. compsoc uses a large size sans slant font +\def\IEEEmembership#1{{\@IEEEnotcompsoconly{\sublargesize}\normalfont\@IEEEcompsoconly{\sffamily}\textit{#1}}} + + +% \IEEEauthorrefmark{} produces a footnote type symbol to indicate author affiliation. +% When given an argument of 1 to 9, \IEEEauthorrefmark{} follows the standard LaTeX footnote +% symbol sequence convention. However, for arguments 10 and above, \IEEEauthorrefmark{} +% reverts to using lower case roman numerals, so it cannot overflow. Do note that you +% cannot use \footnotemark[] in place of \IEEEauthorrefmark{} within \author as the footnote +% symbols will have been turned off to prevent \thanks from creating footnote marks. +% \IEEEauthorrefmark{} produces a symbol that appears to LaTeX as having zero vertical +% height - this allows for a more compact line packing, but the user must ensure that +% the interline spacing is large enough to prevent \IEEEauthorrefmark{} from colliding +% with the text above. +% V1.7 make this a robust command +\DeclareRobustCommand*{\IEEEauthorrefmark}[1]{\raisebox{0pt}[0pt][0pt]{\textsuperscript{\footnotesize\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or% + \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger% + \or \ddagger\ddagger \else\textsuperscript{\expandafter\romannumeral#1}\fi}}}} + + +% FONT CONTROLS AND SPACINGS FOR CONFERENCE MODE AUTHOR NAME AND AFFILIATION BLOCKS +% +% The default font styles for the author name and affiliation blocks (confmode) +%\def\@IEEEauthorblockNstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize\@IEEEcompsocconfonly{\large}} +%\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize\@IEEEcompsocconfonly{\large}} +\def\@IEEEauthorblockNstyle{\normalfont\normalsize} +\def\@IEEEauthorblockAstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\@IEEEcompsocconfonly{\itshape}\normalsize} + +% The default if the user does not use an author block +\def\@IEEEauthordefaulttextstyle{\normalfont\@IEEEcompsocnotconfonly{\sffamily}\sublargesize} + +% spacing from title (or special paper notice) to author name blocks (confmode) +% can be negative +\def\@IEEEauthorblockconfadjspace{-0.25em} +% compsoc conferences need more space here +\@IEEEcompsocconfonly{\def\@IEEEauthorblockconfadjspace{0.75\@IEEEnormalsizeunitybaselineskip}} + +% spacing between name and affiliation blocks (confmode) +% This can be negative. +% IEEE doesn't want any added spacing here, but I will leave these +% controls in place in case they ever change their mind. +% Personally, I like 0.75ex. +%\def\@IEEEauthorblockNtopspace{0.75ex} +%\def\@IEEEauthorblockAtopspace{0.75ex} +\def\@IEEEauthorblockNtopspace{0.0ex} +\def\@IEEEauthorblockAtopspace{0.0ex} +% baseline spacing within name and affiliation blocks (confmode) +% must be positive, spacings below certain values will make +% the position of line of text sensitive to the contents of the +% line above it i.e., whether or not the prior line has descenders, +% subscripts, etc. For this reason it is a good idea to keep +% these above 2.6ex +\def\@IEEEauthorblockNinterlinespace{2.6ex} +\def\@IEEEauthorblockAinterlinespace{2.75ex} + +% This tracks the required strut size. +% See the \@IEEEauthorhalign command for the actual default value used. +\def\@IEEEauthorblockXinterlinespace{2.7ex} + +% variables to retain font size and style across groups +% values given here have no effect as they will be overwritten later +\gdef\@IEEESAVESTATEfontsize{10} +\gdef\@IEEESAVESTATEfontbaselineskip{12} +\gdef\@IEEESAVESTATEfontencoding{OT1} +\gdef\@IEEESAVESTATEfontfamily{ptm} +\gdef\@IEEESAVESTATEfontseries{m} +\gdef\@IEEESAVESTATEfontshape{n} + +% saves the current font attributes +\def\@IEEEcurfontSAVE{\global\let\@IEEESAVESTATEfontsize\f@size% +\global\let\@IEEESAVESTATEfontbaselineskip\f@baselineskip% +\global\let\@IEEESAVESTATEfontencoding\f@encoding% +\global\let\@IEEESAVESTATEfontfamily\f@family% +\global\let\@IEEESAVESTATEfontseries\f@series% +\global\let\@IEEESAVESTATEfontshape\f@shape} + +% restores the saved font attributes +\def\@IEEEcurfontRESTORE{\fontsize{\@IEEESAVESTATEfontsize}{\@IEEESAVESTATEfontbaselineskip}% +\fontencoding{\@IEEESAVESTATEfontencoding}% +\fontfamily{\@IEEESAVESTATEfontfamily}% +\fontseries{\@IEEESAVESTATEfontseries}% +\fontshape{\@IEEESAVESTATEfontshape}% +\selectfont} + + +% variable to indicate if the current block is the first block in the column +\newif\if@IEEEprevauthorblockincol \@IEEEprevauthorblockincolfalse + + +% the command places a strut with height and depth = \@IEEEauthorblockXinterlinespace +% we use this technique to have complete manual control over the spacing of the lines +% within the halign environment. +% We set the below baseline portion at 30%, the above +% baseline portion at 70% of the total length. +% Responds to changes in the document's \baselinestretch +\def\@IEEEauthorstrutrule{\@IEEEtrantmpdimenA\@IEEEauthorblockXinterlinespace% +\@IEEEtrantmpdimenA=\baselinestretch\@IEEEtrantmpdimenA% +\rule[-0.3\@IEEEtrantmpdimenA]{0pt}{\@IEEEtrantmpdimenA}} + + +% blocks to hold the authors' names and affilations. +% Makes formatting easy for conferences +% +% use real definitions in conference mode +% name block +\def\IEEEauthorblockN#1{\relax\@IEEEauthorblockNstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}% disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockNtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockNinterlinespace}% +% input the author names +#1% +% end the row if the user did not already +\crcr} +% spacer row for names +\def\@IEEEauthorblockNtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockNtopspace}} +% +% affiliation block +\def\IEEEauthorblockA#1{\relax\@IEEEauthorblockAstyle% set the default text style +\gdef\@IEEEauthorblockXinterlinespace{0pt}%disable strut for spacer row +% the \expandafter hides the \cr in conditional tex, see the array.sty docs +% for details, probably not needed here as the \cr is in a macro +% do a spacer row if needed +\if@IEEEprevauthorblockincol\expandafter\@IEEEauthorblockAtopspaceline\fi +\global\@IEEEprevauthorblockincoltrue% we now have a block in this column +%restore the correct strut value +\gdef\@IEEEauthorblockXinterlinespace{\@IEEEauthorblockAinterlinespace}% +% input the author affiliations +#1% +% end the row if the user did not already +\crcr} +% spacer row for affiliations +\def\@IEEEauthorblockAtopspaceline{\cr\noalign{\vskip\@IEEEauthorblockAtopspace}} + + +% allow papers to compile even if author blocks are used in modes other +% than conference or peerreviewca. For such cases, we provide dummy blocks. +\ifCLASSOPTIONconference +\else + \ifCLASSOPTIONpeerreviewca\else + % not conference or peerreviewca mode + \def\IEEEauthorblockN#1{#1}% + \def\IEEEauthorblockA#1{#1}% + \fi +\fi + + + +% we provide our own halign so as not to have to depend on tabular +\def\@IEEEauthorhalign{\@IEEEauthordefaulttextstyle% default text style + \lineskip=0pt\relax% disable line spacing + \lineskiplimit=0pt\relax% + \baselineskip=0pt\relax% + \@IEEEcurfontSAVE% save the current font + \mathsurround\z@\relax% no extra spacing around math + \let\\\@IEEEauthorhaligncr% replace newline with halign friendly one + \tabskip=0pt\relax% no column spacing + \everycr{}% ensure no problems here + \@IEEEprevauthorblockincolfalse% no author blocks yet + \def\@IEEEauthorblockXinterlinespace{2.7ex}% default interline space + \vtop\bgroup%vtop box + \halign\bgroup&\relax\hfil\@IEEEcurfontRESTORE\relax ##\relax + \hfil\@IEEEcurfontSAVE\@IEEEauthorstrutrule\cr} + +% ensure last line, exit from halign, close vbox +\def\end@IEEEauthorhalign{\crcr\egroup\egroup} + +% handle bogus star form +\def\@IEEEauthorhaligncr{{\ifnum0=`}\fi\@ifstar{\@@IEEEauthorhaligncr}{\@@IEEEauthorhaligncr}} + +% test and setup the optional argument to \\[] +\def\@@IEEEauthorhaligncr{\@testopt\@@@IEEEauthorhaligncr\z@skip} + +% end the line and do the optional spacer +\def\@@@IEEEauthorhaligncr[#1]{\ifnum0=`{\fi}\cr\noalign{\vskip#1\relax}} + + + +% flag to prevent multiple \and warning messages +\newif\if@IEEEWARNand +\@IEEEWARNandtrue + +% if in conference or peerreviewca modes, we support the use of \and as \author is a +% tabular environment, otherwise we warn the user that \and is invalid +% outside of conference or peerreviewca modes. +\def\and{\relax} % provide a bogus \and that we will then override + +\renewcommand{\and}[1][\relax]{\if@IEEEWARNand\typeout{** WARNING: \noexpand\and is valid only + when in conference or peerreviewca}\typeout{modes (line \the\inputlineno).}\fi\global\@IEEEWARNandfalse} + +\ifCLASSOPTIONconference% +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi +\ifCLASSOPTIONpeerreviewca +\renewcommand{\and}[1][\hfill]{\end{@IEEEauthorhalign}#1\begin{@IEEEauthorhalign}}% +\fi + + +% page clearing command +% based on LaTeX2e's \cleardoublepage, but allows different page styles +% for the inserted blank pages +\def\@IEEEcleardoublepage#1{\clearpage\if@twoside\ifodd\c@page\else +\hbox{}\thispagestyle{#1}\newpage\if@twocolumn\hbox{}\thispagestyle{#1}\newpage\fi\fi\fi} + + +% user command to invoke the title page +\def\maketitle{\par% + \begingroup% + \normalfont% + \def\thefootnote{}% the \thanks{} mark type is empty + \def\footnotemark{}% and kill space from \thanks within author + \let\@makefnmark\relax% V1.7, must *really* kill footnotemark to remove all \textsuperscript spacing as well. + \footnotesize% equal spacing between thanks lines + \footnotesep 0.7\baselineskip%see global setting of \footnotesep for more info + % V1.7 disable \thanks note indention for compsoc + \@IEEEcompsoconly{\long\def\@makefntext##1{\parindent 1em\noindent\hbox{\@makefnmark}##1}}% + \normalsize% + \ifCLASSOPTIONpeerreview + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \thispagestyle{IEEEpeerreviewcoverpagestyle}\@thanks% + \else + \if@twocolumn% + \ifCLASSOPTIONtechnote% + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \else + \twocolumn[\@maketitle\@IEEEdynamictitlevspace\@IEEEaftertitletext]% + \fi + \else + \newpage\global\@topnum\z@ \@maketitle\@IEEEstatictitlevskip\@IEEEaftertitletext% + \fi + \thispagestyle{IEEEtitlepagestyle}\@thanks% + \fi + % pullup page for pubid if used. + \if@IEEEusingpubid + \enlargethispage{-\@IEEEpubidpullup}% + \fi + \endgroup + \setcounter{footnote}{0}\let\maketitle\relax\let\@maketitle\relax + \gdef\@thanks{}% + % v1.6b do not clear these as we will need the title again for peer review papers + % \gdef\@author{}\gdef\@title{}% + \let\thanks\relax} + + + +% V1.7 parbox to format \@IEEEcompsoctitleabstractindextext +\long\def\@IEEEcompsoctitleabstractindextextbox#1{\parbox{0.915\textwidth}{#1}} + + +% formats the Title, authors names, affiliations and special paper notice +% THIS IS A CONTROLLED SPACING COMMAND! Do not allow blank lines or unintentional +% spaces to enter the definition - use % at the end of each line +\def\@maketitle{\newpage +\begin{center}% +\ifCLASSOPTIONtechnote% technotes + {\bfseries\large\@IEEEcompsoconly{\sffamily}\@title\par}\vskip 1.3em{\lineskip .5em\@IEEEcompsoconly{\sffamily}\@author + \@IEEEspecialpapernotice\par{\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par + \hfill\@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax +\else% not a technote + \vskip0.2em{\Huge\@IEEEcompsoconly{\sffamily}\@IEEEcompsocconfonly{\normalfont\normalsize\vskip 0\@IEEEnormalsizeunitybaselineskip + \bfseries\Large}\@title\par}\vskip 1.0em\par% + % V1.6 handle \author differently if in conference mode + \ifCLASSOPTIONconference% + {\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par}\relax + \else% peerreviewca, peerreview or journal + \ifCLASSOPTIONpeerreviewca + % peerreviewca handles author names just like conference mode + {\@IEEEcompsoconly{\sffamily}\@IEEEspecialpapernotice\mbox{}\vskip\@IEEEauthorblockconfadjspace% + \mbox{}\hfill\begin{@IEEEauthorhalign}\@author\end{@IEEEauthorhalign}\hfill\mbox{}\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill + \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \else% journal or peerreview + {\lineskip.5em\@IEEEcompsoconly{\sffamily}\sublargesize\@author\@IEEEspecialpapernotice\par + {\@IEEEcompsoconly{\vskip 1.5em\relax + \@IEEEcompsoctitleabstractindextextbox{\@IEEEcompsoctitleabstractindextext}\par\hfill + \@IEEEcompsocdiamondline\hfill\hbox{}\par}}}\relax + \fi + \fi +\fi\end{center}} + + + +% V1.7 Computer Society "diamond line" which follows index terms for nonconference papers +\def\@IEEEcompsocdiamondline{\vrule depth 0pt height 0.5pt width 4cm\hspace{7.5pt}% +\raisebox{-3.5pt}{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\fontsize{11}{12}\selectfont\char70}% +\hspace{7.5pt}\vrule depth 0pt height 0.5pt width 4cm\relax} + +% V1.7 standard LateX2e \thanks, but with \itshape under compsoc. Also make it a \long\def +% We also need to trigger the one-shot footnote rule +\def\@IEEEtriggeroneshotfootnoterule{\global\@IEEEenableoneshotfootnoteruletrue} + + +\long\def\thanks#1{\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\@IEEEcompsoconly{\itshape + \protect\@IEEEtriggeroneshotfootnoterule\relax}\ignorespaces#1}}} +\let\@thanks\@empty + +% V1.7 allow \author to contain \par's. This is needed to allow \thanks to contain \par. +\long\def\author#1{\gdef\@author{#1}} + + +% in addition to setting up IEEEitemize, we need to remove a baselineskip space above and +% below it because \list's \pars introduce blank lines because of the footnote struts. +\def\@IEEEsetupcompsocitemizelist{\def\labelitemi{$\bullet$}% +\setlength{\IEEElabelindent}{0pt}\setlength{\parskip}{0pt}% +\setlength{\partopsep}{0pt}\setlength{\topsep}{0.5\baselineskip}\vspace{-1\baselineskip}\relax} + + +% flag for fake non-compsoc \IEEEcompsocthanksitem - prevents line break on very first item +\newif\if@IEEEbreakcompsocthanksitem \@IEEEbreakcompsocthanksitemfalse + +\ifCLASSOPTIONcompsoc +% V1.7 compsoc bullet item \thanks +% also, we need to redefine this to destroy the argument in \@IEEEdynamictitlevspace +\long\def\IEEEcompsocitemizethanks#1{\relax\@IEEEbreakcompsocthanksitemfalse\footnotemark + \protected@xdef\@thanks{\@thanks + \protect\footnotetext[\the\c@footnote]{\itshape\protect\@IEEEtriggeroneshotfootnoterule + {\let\IEEEiedlistdecl\relax\protect\begin{IEEEitemize}[\protect\@IEEEsetupcompsocitemizelist]\ignorespaces#1\relax + \protect\end{IEEEitemize}}\protect\vspace{-1\baselineskip}}}} +\DeclareRobustCommand*{\IEEEcompsocthanksitem}{\item} +\else +% non-compsoc, allow for dual compilation via rerouting to normal \thanks +\long\def\IEEEcompsocitemizethanks#1{\thanks{#1}} +% redirect to "pseudo-par" \hfil\break\indent after swallowing [] from \IEEEcompsocthanksitem[] +\DeclareRobustCommand{\IEEEcompsocthanksitem}{\@ifnextchar [{\@IEEEthanksswallowoptionalarg}% +{\@IEEEthanksswallowoptionalarg[\relax]}} +% be sure and break only after first item, be sure and ignore spaces after optional argument +\def\@IEEEthanksswallowoptionalarg[#1]{\relax\if@IEEEbreakcompsocthanksitem\hfil\break +\indent\fi\@IEEEbreakcompsocthanksitemtrue\ignorespaces} +\fi + + +% V1.6b define the \IEEEpeerreviewmaketitle as needed +\ifCLASSOPTIONpeerreview +\def\IEEEpeerreviewmaketitle{\@IEEEcleardoublepage{empty}% +\ifCLASSOPTIONtwocolumn +\twocolumn[\@IEEEpeerreviewmaketitle\@IEEEdynamictitlevspace] +\else +\newpage\@IEEEpeerreviewmaketitle\@IEEEstatictitlevskip +\fi +\thispagestyle{IEEEtitlepagestyle}} +\else +% \IEEEpeerreviewmaketitle does nothing if peer review option has not been selected +\def\IEEEpeerreviewmaketitle{\relax} +\fi + +% peerreview formats the repeated title like the title in journal papers. +\def\@IEEEpeerreviewmaketitle{\begin{center}\@IEEEcompsoconly{\sffamily}% +\normalfont\normalsize\vskip0.2em{\Huge\@title\par}\vskip1.0em\par +\end{center}} + + + +% V1.6 +% this is a static rubber spacer between the title/authors and the main text +% used for single column text, or when the title appears in the first column +% of two column text (technotes). +\def\@IEEEstatictitlevskip{{\normalfont\normalsize +% adjust spacing to next text +% v1.6b handle peer review papers +\ifCLASSOPTIONpeerreview +% for peer review papers, the same value is used for both title pages +% regardless of the other paper modes + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip +\else + \ifCLASSOPTIONconference% conference + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% + \ifCLASSOPTIONtechnote% technote + \vskip 1\baselineskip plus 0.375\baselineskip minus 0.1875\baselineskip% + \else% journal uses more space + \vskip 2.5\baselineskip plus 0.75\baselineskip minus 0.375\baselineskip% + \fi + \fi +\fi}} + + +% V1.6 +% This is a dynamically determined rigid spacer between the title/authors +% and the main text. This is used only for single column titles over two +% column text (most common) +% This is bit tricky because we have to ensure that the textheight of the +% main text is an integer multiple of \baselineskip +% otherwise underfull vbox problems may develop in the second column of the +% text on the titlepage +% The possible use of \IEEEpubid must also be taken into account. +\def\@IEEEdynamictitlevspace{{% + % we run within a group so that all the macros can be forgotten when we are done + \long\def\thanks##1{\relax}%don't allow \thanks to run when we evaluate the vbox height + \long\def\IEEEcompsocitemizethanks##1{\relax}%don't allow \IEEEcompsocitemizethanks to run when we evaluate the vbox height + \normalfont\normalsize% we declare more descriptive variable names + \let\@IEEEmaintextheight=\@IEEEtrantmpdimenA%height of the main text columns + \let\@IEEEINTmaintextheight=\@IEEEtrantmpdimenB%height of the main text columns with integer # lines + % set the nominal and minimum values for the title spacer + % the dynamic algorithm will not allow the spacer size to + % become less than \@IEEEMINtitlevspace - instead it will be + % lengthened + % default to journal values + \def\@IEEENORMtitlevspace{2.5\baselineskip}% + \def\@IEEEMINtitlevspace{2\baselineskip}% + % conferences and technotes need tighter spacing + \ifCLASSOPTIONconference%conference + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% + \fi + \ifCLASSOPTIONtechnote%technote + \def\@IEEENORMtitlevspace{1\baselineskip}% + \def\@IEEEMINtitlevspace{0.75\baselineskip}% + \fi% + % get the height that the title will take up + \ifCLASSOPTIONpeerreview + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@IEEEpeerreviewmaketitle}}% + \else + \settoheight{\@IEEEmaintextheight}{\vbox{\hsize\textwidth \@maketitle}}% + \fi + \@IEEEmaintextheight=-\@IEEEmaintextheight% title takes away from maintext, so reverse sign + % add the height of the page textheight + \advance\@IEEEmaintextheight by \textheight% + % correct for title pages using pubid + \ifCLASSOPTIONpeerreview\else + % peerreview papers use the pubid on the cover page only. + % And the cover page uses a static spacer. + \if@IEEEusingpubid\advance\@IEEEmaintextheight by -\@IEEEpubidpullup\fi + \fi% + % subtract off the nominal value of the title bottom spacer + \advance\@IEEEmaintextheight by -\@IEEENORMtitlevspace% + % \topskip takes away some too + \advance\@IEEEmaintextheight by -\topskip% + % calculate the column height of the main text for lines + % now we calculate the main text height as if holding + % an integer number of \normalsize lines after the first + % and discard any excess fractional remainder + % we subtracted the first line, because the first line + % is placed \topskip into the maintext, not \baselineskip like the + % rest of the lines. + \@IEEEINTmaintextheight=\@IEEEmaintextheight% + \divide\@IEEEINTmaintextheight by \baselineskip% + \multiply\@IEEEINTmaintextheight by \baselineskip% + % now we calculate how much the title spacer height will + % have to be reduced from nominal (\@IEEEREDUCEmaintextheight is always + % a positive value) so that the maintext area will contain an integer + % number of normal size lines + % we change variable names here (to avoid confusion) as we no longer + % need \@IEEEINTmaintextheight and can reuse its dimen register + \let\@IEEEREDUCEmaintextheight=\@IEEEINTmaintextheight% + \advance\@IEEEREDUCEmaintextheight by -\@IEEEmaintextheight% + \advance\@IEEEREDUCEmaintextheight by \baselineskip% + % this is the calculated height of the spacer + % we change variable names here (to avoid confusion) as we no longer + % need \@IEEEmaintextheight and can reuse its dimen register + \let\@IEEECOMPENSATElen=\@IEEEmaintextheight% + \@IEEECOMPENSATElen=\@IEEENORMtitlevspace% set the nominal value + % we go with the reduced length if it is smaller than an increase + \ifdim\@IEEEREDUCEmaintextheight < 0.5\baselineskip\relax% + \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight% + % if the resulting spacer is too small back out and go with an increase instead + \ifdim\@IEEECOMPENSATElen<\@IEEEMINtitlevspace\relax% + \advance\@IEEECOMPENSATElen by \baselineskip% + \fi% + \else% + % go with an increase because it is closer to the nominal than a decrease + \advance\@IEEECOMPENSATElen by -\@IEEEREDUCEmaintextheight% + \advance\@IEEECOMPENSATElen by \baselineskip% + \fi% + % set the calculated rigid spacer + \vspace{\@IEEECOMPENSATElen}}} + + + +% V1.6 +% we allow the user access to the last part of the title area +% useful in emergencies such as when a different spacing is needed +% This text is NOT compensated for in the dynamic sizer. +\let\@IEEEaftertitletext=\relax +\long\def\IEEEaftertitletext#1{\def\@IEEEaftertitletext{#1}} + +% V1.7 provide a way for users to enter abstract and keywords +% into the onecolumn title are. This text is compensated for +% in the dynamic sizer. +\let\@IEEEcompsoctitleabstractindextext=\relax +\long\def\IEEEcompsoctitleabstractindextext#1{\def\@IEEEcompsoctitleabstractindextext{#1}} +% V1.7 provide a way for users to get the \@IEEEcompsoctitleabstractindextext if +% not in compsoc journal mode - this way abstract and keywords can be placed +% in their conventional position if not in compsoc mode. +\def\IEEEdisplaynotcompsoctitleabstractindextext{% +\ifCLASSOPTIONcompsoc% display if compsoc conf +\ifCLASSOPTIONconference\@IEEEcompsoctitleabstractindextext\fi +\else% or if not compsoc +\@IEEEcompsoctitleabstractindextext\fi} + + +% command to allow alteration of baselinestretch, but only if the current +% baselineskip is unity. Used to tweak the compsoc abstract and keywords line spacing. +\def\@IEEEtweakunitybaselinestretch#1{{\def\baselinestretch{1}\selectfont +\global\@tempskipa\baselineskip}\ifnum\@tempskipa=\baselineskip% +\def\baselinestretch{#1}\selectfont\fi\relax} + + +% abstract and keywords are in \small, except +% for 9pt docs in which they are in \footnotesize +% Because 9pt docs use an 8pt footnotesize, \small +% becomes a rather awkward 8.5pt +\def\@IEEEabskeysecsize{\small} +\ifx\CLASSOPTIONpt\@IEEEptsizenine + \def\@IEEEabskeysecsize{\footnotesize} +\fi + +% compsoc journals use \footnotesize, compsoc conferences use normalsize +\@IEEEcompsoconly{\def\@IEEEabskeysecsize{\footnotesize}} +%\@IEEEcompsocconfonly{\def\@IEEEabskeysecsize{\normalsize}} + + + + +% V1.6 have abstract and keywords strip leading spaces, pars and newlines +% so that spacing is more tightly controlled. +\def\abstract{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\abstractname}---\relax + \else + \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +% V1.6 IEEE wants only 1 pica from end of abstract to introduction heading when in +% conference mode (the heading already has this much above it) +\def\endabstract{\relax\ifCLASSOPTIONconference\vspace{1.34ex}\else\vspace{1.34ex}\fi\par\if@twocolumn\else\endquotation\fi + \normalfont\normalsize} + +\def\IEEEkeywords{\normalfont + \if@twocolumn + \@IEEEabskeysecsize\bfseries\textit{\IEEEkeywordsname}-\relax + \else + \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize + \fi\@IEEEgobbleleadPARNLSP} +\def\endIEEEkeywords{\relax\ifCLASSOPTIONtechnote\vspace{1.34ex}\else\vspace{0.67ex}\fi + \par\if@twocolumn\else\endquotation\fi% + \normalfont\normalsize} + +% V1.7 compsoc keywords index terms +\ifCLASSOPTIONcompsoc + \ifCLASSOPTIONconference% compsoc conference +\def\abstract{\normalfont + \begin{center}\@IEEEabskeysecsize\textbf{\large\abstractname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip + \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize% + \par\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\vskip 1.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip + \begin{center}\@IEEEabskeysecsize\textbf{\large\IEEEkeywordsname}\end{center}\vskip 0.5\baselineskip plus 0.1\baselineskip minus 0.1\baselineskip + \if@twocolumn\else\quotation\fi\itshape\@IEEEabskeysecsize% + \par\@IEEEgobbleleadPARNLSP} + \else% compsoc not conference +\def\abstract{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\noindent\textbf{\abstractname}---\relax + \else + \begin{center}\vspace{-1.78ex}\@IEEEabskeysecsize\textbf{\abstractname}\end{center}\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} +\def\IEEEkeywords{\normalfont\@IEEEtweakunitybaselinestretch{1.15}\sffamily + \if@twocolumn + \@IEEEabskeysecsize\vskip 0.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip\noindent + \textbf{\IEEEkeywordsname}---\relax + \else + \begin{center}\@IEEEabskeysecsize\textbf{\IEEEkeywordsname}\end{center}\quotation\@IEEEabskeysecsize% + \fi\@IEEEgobbleleadPARNLSP} + \fi +\fi + + + +% gobbles all leading \, \\ and \par, upon finding first token that +% is not a \ , \\ or a \par, it ceases and returns that token +% +% used to strip leading \, \\ and \par from the input +% so that such things in the beginning of an environment will not +% affect the formatting of the text +\long\def\@IEEEgobbleleadPARNLSP#1{\let\@IEEEswallowthistoken=0% +\let\@IEEEgobbleleadPARNLSPtoken#1% +\let\@IEEEgobbleleadPARtoken=\par% +\let\@IEEEgobbleleadNLtoken=\\% +\let\@IEEEgobbleleadSPtoken=\ % +\def\@IEEEgobbleleadSPMACRO{\ }% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadPARtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadNLtoken% +\let\@IEEEswallowthistoken=1% +\fi% +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPtoken% +\let\@IEEEswallowthistoken=1% +\fi% +% a control space will come in as a macro +% when it is the last one on a line +\ifx\@IEEEgobbleleadPARNLSPtoken\@IEEEgobbleleadSPMACRO% +\let\@IEEEswallowthistoken=1% +\fi% +% if we have to swallow this token, do so and taste the next one +% else spit it out and stop gobbling +\ifx\@IEEEswallowthistoken 1\let\@IEEEnextgobbleleadPARNLSP=\@IEEEgobbleleadPARNLSP\else% +\let\@IEEEnextgobbleleadPARNLSP=#1\fi% +\@IEEEnextgobbleleadPARNLSP}% + + + + +% TITLING OF SECTIONS +\def\@IEEEsectpunct{:\ \,} % Punctuation after run-in section heading (headings which are + % part of the paragraphs), need little bit more than a single space + % spacing from section number to title +% compsoc conferences use regular period/space punctuation +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +\def\@IEEEsectpunct{.\ } +\fi\fi + + +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 0.5em\relax} + +\ifCLASSOPTIONcompsoc +% compsoc journals need extra spacing +\ifCLASSOPTIONconference\else +\def\@seccntformat#1{\csname the#1dis\endcsname\hskip 1em\relax} +\fi\fi + +%v1.7 put {} after #6 to allow for some types of user font control +%and use \@@par rather than \par +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + % load section label and spacer into \@svsec + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi% + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@% tempskipa determines whether is treated as a high + \begingroup #6{\relax% or low level heading + \noindent % subsections are NOT indented + % print top level headings. \@svsec is label, #8 is heading title + % IEEE does not block indent the section title text, it flows like normal + {\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\@@par}}% + \endgroup + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}% + \else % printout low level headings + % svsechd seems to swallow the trailing space, protect it with \mbox{} + % got rid of sectionmark stuff + \def\@svsechd{#6{\hskip #3\relax\@svsec #8\@IEEEsectpunct\mbox{}}% + \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth\relax\else + \protect\numberline{\csname the#1\endcsname}\fi#7}}% + \fi%skip down + \@xsect{#5}} + + +% section* handler +%v1.7 put {} after #4 to allow for some types of user font control +%and use \@@par rather than \par +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + %\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup + % IEEE does not block indent the section title text, it flows like normal + \begingroup \noindent #4{\relax{\hskip #1}{\interlinepenalty \@M #5\@@par}}\endgroup + % svsechd swallows the trailing space, protect it with \mbox{} + \else \def\@svsechd{#4{\hskip #1\relax #5\@IEEEsectpunct\mbox{}}}\fi + \@xsect{#3}} + + +%% SECTION heading spacing and font +%% +% arguments are: #1 - sectiontype name +% (for \@sect) #2 - section level +% #3 - section heading indent +% #4 - top separation (absolute value used, neg indicates not to indent main text) +% If negative, make stretch parts negative too! +% #5 - (absolute value used) positive: bottom separation after heading, +% negative: amount to indent main text after heading +% Both #4 and #5 negative means to indent main text and use negative top separation +% #6 - font control +% You've got to have \normalfont\normalsize in the font specs below to prevent +% trouble when you do something like: +% \section{Note}{\ttfamily TT-TEXT} is known to ... +% IEEE sometimes REALLY stretches the area before a section +% heading by up to about 0.5in. However, it may not be a good +% idea to let LaTeX have quite this much rubber. +\ifCLASSOPTIONconference% +% IEEE wants section heading spacing to decrease for conference mode +\def\section{\@startsection{section}{1}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1.5ex plus 1.5ex minus 0.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\else % for journals +\def\section{\@startsection{section}{1}{\z@}{3.0ex plus 1.5ex minus 1.5ex}% V1.6 3.0ex from 3.5ex +{0.7ex plus 1ex minus 0ex}{\normalfont\normalsize\centering\scshape}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{3.5ex plus 1.5ex minus 1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\itshape}}% +\fi + +% for both journals and conferences +% decided to put in a little rubber above the section, might help somebody +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize\itshape}}% + + +% compsoc +\ifCLASSOPTIONcompsoc +\ifCLASSOPTIONconference +% compsoc conference +\def\section{\@startsection{section}{1}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\large\bfseries}}% +\def\subsection{\@startsection{subsection}{2}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}{\normalfont\sublargesize\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{1\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}% +{0ex}{\normalfont\normalsize\bfseries}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{0ex plus 0.1ex minus 0.1ex}% +{0ex}{\normalfont\normalsize}}% +\else% compsoc journals +% use negative top separation as compsoc journals do not indent paragraphs after section titles +\def\section{\@startsection{section}{1}{\z@}{-3ex plus -2ex minus -1.5ex}% +{0.7ex plus 1ex minus 0ex}{\normalfont\large\sffamily\bfseries\scshape}}% +% Note that subsection and smaller may not be correct for the Computer Society, +% I have to look up an example. +\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}% +{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}% +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex plus -1ex minus -1ex}% +{0.5ex plus 0.5ex minus 0ex}{\normalfont\normalsize\sffamily\itshape}}% +\def\paragraph{\@startsection{paragraph}{4}{2\parindent}{-0ex plus -0.1ex minus -0.1ex}% +{0ex}{\normalfont\normalsize}}% +\fi\fi + + + + +%% ENVIRONMENTS +% "box" symbols at end of proofs +\def\IEEEQEDclosed{\mbox{\rule[0pt]{1.3ex}{1.3ex}}} % for a filled box +% V1.6 some journals use an open box instead that will just fit around a closed one +\def\IEEEQEDopen{{\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.2pt}\fbox{\rule[0pt]{0pt}{1.3ex}\rule[0pt]{1.3ex}{0pt}}}} +\ifCLASSOPTIONcompsoc +\def\IEEEQED{\IEEEQEDopen} % default to open for compsoc +\else +\def\IEEEQED{\IEEEQEDclosed} % otherwise default to closed +\fi + +% v1.7 name change to avoid namespace collision with amsthm. Also add support +% for an optional argument. +\def\IEEEproof{\@ifnextchar[{\@IEEEproof}{\@IEEEproof[\IEEEproofname]}} +\def\@IEEEproof[#1]{\par\noindent\hspace{2em}{\itshape #1: }} +\def\endIEEEproof{\hspace*{\fill}~\IEEEQED\par} + + +%\itemindent is set to \z@ by list, so define new temporary variable +\newdimen\@IEEEtmpitemindent +\def\@begintheorem#1#2{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily\trivlist% + \item[\hskip \labelsep{\indent\itshape #1\ #2:}]\itemindent\@IEEEtmpitemindent} +\def\@opargbegintheorem#1#2#3{\@IEEEtmpitemindent\itemindent\topsep 0pt\rmfamily \trivlist% +% V1.6 IEEE is back to using () around theorem names which are also in italics +% Thanks to Christian Peel for reporting this. + \item[\hskip\labelsep{\indent\itshape #1\ #2\ (#3):}]\itemindent\@IEEEtmpitemindent} +% V1.7 remove bogus \unskip that caused equations in theorems to collide with +% lines below. +\def\@endtheorem{\endtrivlist} + +% V1.6 +% display command for the section the theorem is in - so that \thesection +% is not used as this will be in Roman numerals when we want arabic. +% LaTeX2e uses \def\@thmcounter#1{\noexpand\arabic{#1}} for the theorem number +% (second part) display and \def\@thmcountersep{.} as a separator. +% V1.7 intercept calls to the section counter and reroute to \@IEEEthmcounterinsection +% to allow \appendix(ices} to override as needed. +% +% special handler for sections, allows appendix(ices) to override +\gdef\@IEEEthmcounterinsection#1{\arabic{#1}} +% string macro +\edef\@IEEEstringsection{section} + +% redefine the #1#2[#3] form of newtheorem to use a hook to \@IEEEthmcounterinsection +% if section in_counter is used +\def\@xnthm#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@newctr{#1}[#3]% + \edef\@IEEEstringtmp{#3} + \ifx\@IEEEstringtmp\@IEEEstringsection + \expandafter\xdef\csname the#1\endcsname{% + \noexpand\@IEEEthmcounterinsection{#3}\@thmcountersep + \@thmcounter{#1}}% + \else + \expandafter\xdef\csname the#1\endcsname{% + \expandafter\noexpand\csname the#3\endcsname \@thmcountersep + \@thmcounter{#1}}% + \fi + \global\@namedef{#1}{\@thm{#1}{#2}}% + \global\@namedef{end#1}{\@endtheorem}}} + + + +%% SET UP THE DEFAULT PAGESTYLE +\ps@headings +\pagenumbering{arabic} + +% normally the page counter starts at 1 +\setcounter{page}{1} +% however, for peerreview the cover sheet is page 0 or page -1 +% (for duplex printing) +\ifCLASSOPTIONpeerreview + \if@twoside + \setcounter{page}{-1} + \else + \setcounter{page}{0} + \fi +\fi + +% standard book class behavior - let bottom line float up and down as +% needed when single sided +\ifCLASSOPTIONtwoside\else\raggedbottom\fi +% if two column - turn on twocolumn, allow word spacings to stretch more and +% enforce a rigid position for the last lines +\ifCLASSOPTIONtwocolumn +% the peer review option delays invoking twocolumn + \ifCLASSOPTIONpeerreview\else + \twocolumn + \fi +\sloppy +\flushbottom +\fi + + + + +% \APPENDIX and \APPENDICES definitions + +% This is the \@ifmtarg command from the LaTeX ifmtarg package +% by Peter Wilson (CUA) and Donald Arseneau +% \@ifmtarg is used to determine if an argument to a command +% is present or not. +% For instance: +% \@ifmtarg{#1}{\typeout{empty}}{\typeout{has something}} +% \@ifmtarg is used with our redefined \section command if +% \appendices is invoked. +% The command \section will behave slightly differently depending +% on whether the user specifies a title: +% \section{My appendix title} +% or not: +% \section{} +% This way, we can eliminate the blank lines where the title +% would be, and the unneeded : after Appendix in the table of +% contents +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup +% end of \@ifmtarg defs + + +% V1.7 +% command that allows the one time saving of the original definition +% of section to \@IEEEappendixsavesection for \appendix or \appendices +% we don't save \section here as it may be redefined later by other +% packages (hyperref.sty, etc.) +\def\@IEEEsaveoriginalsectiononce{\let\@IEEEappendixsavesection\section +\let\@IEEEsaveoriginalsectiononce\relax} + +% neat trick to grab and process the argument from \section{argument} +% we process differently if the user invoked \section{} with no +% argument (title) +% note we reroute the call to the old \section* +\def\@IEEEprocessthesectionargument#1{% +\@ifmtarg{#1}{% +\@IEEEappendixsavesection*{\appendixname~\thesectiondis}% +\addcontentsline{toc}{section}{\appendixname~\thesection}}{% +\@IEEEappendixsavesection*{\appendixname~\thesectiondis \\* #1}% +\addcontentsline{toc}{section}{\appendixname~\thesection: #1}}} + +% we use this if the user calls \section{} after +% \appendix-- which has no meaning. So, we ignore the +% command and its argument. Then, warn the user. +\def\@IEEEdestroythesectionargument#1{\typeout{** WARNING: Ignoring useless +\protect\section\space in Appendix (line \the\inputlineno).}} + + +% remember \thesection forms will be displayed in \ref calls +% and in the Table of Contents. +% The \sectiondis form is used in the actual heading itself + +% appendix command for one single appendix +% normally has no heading. However, if you want a +% heading, you can do so via the optional argument: +% \appendix[Optional Heading] +\def\appendix{\relax} +\renewcommand{\appendix}[1][]{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.A}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \gdef\thesection{A}% + \gdef\thesectiondis{}% + \gdef\thesubsection{\Alph{subsection}}% + \gdef\@IEEEthmcounterinsection##1{A} + \refstepcounter{section}% update the \ref counter + \@ifmtarg{#1}{\@IEEEappendixsavesection*{\appendixname}% + \addcontentsline{toc}{section}{\appendixname}}{% + \@IEEEappendixsavesection*{\appendixname~\\* #1}% + \addcontentsline{toc}{section}{\appendixname: #1}}% + % redefine \section command for appendix + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% + \@IEEEdestroythesectionargument}}% throw out the argument + % of the normal form +} + + + +% appendices command for multiple appendices +% user then calls \section with an argument (possibly empty) to +% declare the individual appendices +\def\appendices{\@IEEEsaveoriginalsectiononce\par + % v1.6 keep hyperref's identifiers unique + \gdef\theHsection{Appendix.\Alph{section}}% + % v1.6 adjust hyperref's string name for the section + \xdef\Hy@chapapp{appendix}% + \setcounter{section}{-1}% we want \refstepcounter to use section 0 + \setcounter{subsection}{0}% + \setcounter{subsubsection}{0}% + \setcounter{paragraph}{0}% + \ifCLASSOPTIONromanappendices% + \gdef\thesection{\Roman{section}}% + \gdef\thesectiondis{\Roman{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Roman{section}.}}% + \gdef\@IEEEthmcounterinsection##1{A\arabic{##1}} + \else% + \gdef\thesection{\Alph{section}}% + \gdef\thesectiondis{\Alph{section}}% + \@IEEEcompsocconfonly{\gdef\thesectiondis{\Alph{section}.}}% + \gdef\@IEEEthmcounterinsection##1{\Alph{##1}} + \fi% + \refstepcounter{section}% update the \ref counter + \setcounter{section}{0}% NEXT \section will be the FIRST appendix + % redefine \section command for appendices + % leave \section* as is + \def\section{\@ifstar{\@IEEEappendixsavesection*}{% process the *-form + \refstepcounter{section}% or is a new section so, + \@IEEEprocessthesectionargument}}% process the argument + % of the normal form +} + + + +% \IEEEPARstart +% Definition for the big two line drop cap letter at the beginning of the +% first paragraph of journal papers. The first argument is the first letter +% of the first word, the second argument is the remaining letters of the +% first word which will be rendered in upper case. +% In V1.6 this has been completely rewritten to: +% +% 1. no longer have problems when the user begins an environment +% within the paragraph that uses \IEEEPARstart. +% 2. auto-detect and use the current font family +% 3. revise handling of the space at the end of the first word so that +% interword glue will now work as normal. +% 4. produce correctly aligned edges for the (two) indented lines. +% +% We generalize things via control macros - playing with these is fun too. +% +% V1.7 added more control macros to make it easy for IEEEtrantools.sty users +% to change the font style. +% +% the number of lines that are indented to clear it +% may need to increase if using decenders +\def\@IEEEPARstartDROPLINES{2} +% minimum number of lines left on a page to allow a \@IEEEPARstart +% Does not take into consideration rubber shrink, so it tends to +% be overly cautious +\def\@IEEEPARstartMINPAGELINES{2} +% V1.7 the height of the drop cap is adjusted to match the height of this text +% in the current font (when \IEEEPARstart is called). +\def\@IEEEPARstartHEIGHTTEXT{T} +% the depth the letter is lowered below the baseline +% the height (and size) of the letter is determined by the sum +% of this value and the height of the \@IEEEPARstartHEIGHTTEXT in the current +% font. It is a good idea to set this value in terms of the baselineskip +% so that it can respond to changes therein. +\def\@IEEEPARstartDROPDEPTH{1.1\baselineskip} +% V1.7 the font the drop cap will be rendered in, +% can take zero or one argument. +\def\@IEEEPARstartFONTSTYLE{\bfseries} +% V1.7 any additional, non-font related commands needed to modify +% the drop cap letter, can take zero or one argument. +\def\@IEEEPARstartCAPSTYLE{\MakeUppercase} +% V1.7 the font that will be used to render the rest of the word, +% can take zero or one argument. +\def\@IEEEPARstartWORDFONTSTYLE{\relax} +% V1.7 any additional, non-font related commands needed to modify +% the rest of the word, can take zero or one argument. +\def\@IEEEPARstartWORDCAPSTYLE{\MakeUppercase} +% This is the horizontal separation distance from the drop letter to the main text. +% Lengths that depend on the font (e.g., ex, em, etc.) will be referenced +% to the font that is active when \IEEEPARstart is called. +\def\@IEEEPARstartSEP{0.15em} +% V1.7 horizontal offset applied to the left of the drop cap. +\def\@IEEEPARstartHOFFSET{0em} +% V1.7 Italic correction command applied at the end of the drop cap. +\def\@IEEEPARstartITLCORRECT{\/} + +% V1.7 compoc uses nonbold drop cap and small caps word style +\ifCLASSOPTIONcompsoc +\def\@IEEEPARstartFONTSTYLE{\mdseries} +\def\@IEEEPARstartWORDFONTSTYLE{\scshape} +\def\@IEEEPARstartWORDCAPSTYLE{\relax} +\fi + +% definition of \IEEEPARstart +% THIS IS A CONTROLLED SPACING AREA, DO NOT ALLOW SPACES WITHIN THESE LINES +% +% The token \@IEEEPARstartfont will be globally defined after the first use +% of \IEEEPARstart and will be a font command which creates the big letter +% The first argument is the first letter of the first word and the second +% argument is the rest of the first word(s). +\def\IEEEPARstart#1#2{\par{% +% if this page does not have enough space, break it and lets start +% on a new one +\@IEEEtranneedspace{\@IEEEPARstartMINPAGELINES\baselineskip}{\relax}% +% V1.7 move this up here in case user uses \textbf for \@IEEEPARstartFONTSTYLE +% which uses command \leavevmode which causes an unwanted \indent to be issued +\noindent +% calculate the desired height of the big letter +% it extends from the top of \@IEEEPARstartHEIGHTTEXT in the current font +% down to \@IEEEPARstartDROPDEPTH below the current baseline +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEPARstartHEIGHTTEXT}% +\addtolength{\@IEEEtrantmpdimenA}{\@IEEEPARstartDROPDEPTH}% +% extract the name of the current font in bold +% and place it in \@IEEEPARstartFONTNAME +\def\@IEEEPARstartGETFIRSTWORD##1 ##2\relax{##1}% +{\@IEEEPARstartFONTSTYLE{\selectfont\edef\@IEEEPARstartFONTNAMESPACE{\fontname\font\space}% +\xdef\@IEEEPARstartFONTNAME{\expandafter\@IEEEPARstartGETFIRSTWORD\@IEEEPARstartFONTNAMESPACE\relax}}}% +% define a font based on this name with a point size equal to the desired +% height of the drop letter +\font\@IEEEPARstartsubfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenA\relax% +% save this value as a counter (integer) value (sp points) +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenA% +% now get the height of the actual letter produced by this font size +\settoheight{\@IEEEtrantmpdimenB}{\@IEEEPARstartsubfont\@IEEEPARstartCAPSTYLE{#1}}% +% If something bogus happens like the first argument is empty or the +% current font is strange, do not allow a zero height. +\ifdim\@IEEEtrantmpdimenB=0pt\relax% +\typeout{** WARNING: IEEEPARstart drop letter has zero height! (line \the\inputlineno)}% +\typeout{ Forcing the drop letter font size to 10pt.}% +\@IEEEtrantmpdimenB=10pt% +\fi% +% and store it as a counter +\@IEEEtrantmpcountB=\@IEEEtrantmpdimenB% +% Since a font size doesn't exactly correspond to the height of the capital +% letters in that font, the actual height of the letter, \@IEEEtrantmpcountB, +% will be less than that desired, \@IEEEtrantmpcountA +% we need to raise the font size, \@IEEEtrantmpdimenA +% by \@IEEEtrantmpcountA / \@IEEEtrantmpcountB +% But, TeX doesn't have floating point division, so we have to use integer +% division. Hence the use of the counters. +% We need to reduce the denominator so that the loss of the remainder will +% have minimal affect on the accuracy of the result +\divide\@IEEEtrantmpcountB by 200% +\divide\@IEEEtrantmpcountA by \@IEEEtrantmpcountB% +% Then reequalize things when we use TeX's ability to multiply by +% floating point values +\@IEEEtrantmpdimenB=0.005\@IEEEtrantmpdimenA% +\multiply\@IEEEtrantmpdimenB by \@IEEEtrantmpcountA% +% \@IEEEPARstartfont is globaly set to the calculated font of the big letter +% We need to carry this out of the local calculation area to to create the +% big letter. +\global\font\@IEEEPARstartfont\@IEEEPARstartFONTNAME\space at \@IEEEtrantmpdimenB% +% Now set \@IEEEtrantmpdimenA to the width of the big letter +% We need to carry this out of the local calculation area to set the +% hanging indent +\settowidth{\global\@IEEEtrantmpdimenA}{\@IEEEPARstartfont +\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}}}% +% end of the isolated calculation environment +% add in the extra clearance we want +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartSEP\relax% +% add in the optional offset +\advance\@IEEEtrantmpdimenA by \@IEEEPARstartHOFFSET\relax% +% V1.7 don't allow negative offsets to produce negative hanging indents +\@IEEEtrantmpdimenB\@IEEEtrantmpdimenA +\ifnum\@IEEEtrantmpdimenB < 0 \@IEEEtrantmpdimenB 0pt\fi +% \@IEEEtrantmpdimenA has the width of the big letter plus the +% separation space and \@IEEEPARstartfont is the font we need to use +% Now, we make the letter and issue the hanging indent command +% The letter is placed in a box of zero width and height so that other +% text won't be displaced by it. +\hangindent\@IEEEtrantmpdimenB\hangafter=-\@IEEEPARstartDROPLINES% +\makebox[0pt][l]{\hspace{-\@IEEEtrantmpdimenA}% +\raisebox{-\@IEEEPARstartDROPDEPTH}[0pt][0pt]{\hspace{\@IEEEPARstartHOFFSET}% +\@IEEEPARstartfont\@IEEEPARstartCAPSTYLE{#1\@IEEEPARstartITLCORRECT}% +\hspace{\@IEEEPARstartSEP}}}% +{\@IEEEPARstartWORDFONTSTYLE{\@IEEEPARstartWORDCAPSTYLE{\selectfont#2}}}} + + + + + + +% determines if the space remaining on a given page is equal to or greater +% than the specified space of argument one +% if not, execute argument two (only if the remaining space is greater than zero) +% and issue a \newpage +% +% example: \@IEEEtranneedspace{2in}{\vfill} +% +% Does not take into consideration rubber shrinkage, so it tends to +% be overly cautious +% Based on an example posted by Donald Arseneau +% Note this macro uses \@IEEEtrantmpdimenB internally for calculations, +% so DO NOT PASS \@IEEEtrantmpdimenB to this routine +% if you need a dimen register, import with \@IEEEtrantmpdimenA instead +\def\@IEEEtranneedspace#1#2{\penalty-100\begingroup%shield temp variable +\@IEEEtrantmpdimenB\pagegoal\advance\@IEEEtrantmpdimenB-\pagetotal% space left +\ifdim #1>\@IEEEtrantmpdimenB\relax% not enough space left +\ifdim\@IEEEtrantmpdimenB>\z@\relax #2\fi% +\newpage% +\fi\endgroup} + + + +% IEEEbiography ENVIRONMENT +% Allows user to enter biography leaving place for picture (adapts to font size) +% As of V1.5, a new optional argument allows you to have a real graphic! +% V1.5 and later also fixes the "colliding biographies" which could happen when a +% biography's text was shorter than the space for the photo. +% MDS 7/2001 +% V1.6 prevent multiple biographies from making multiple TOC entries +\newif\if@IEEEbiographyTOCentrynotmade +\global\@IEEEbiographyTOCentrynotmadetrue + +% biography counter so hyperref can jump directly to the biographies +% and not just the previous section +\newcounter{IEEEbiography} +\setcounter{IEEEbiography}{0} + +% photo area size +\def\@IEEEBIOphotowidth{1.0in} % width of the biography photo area +\def\@IEEEBIOphotodepth{1.25in} % depth (height) of the biography photo area +% area cleared for photo +\def\@IEEEBIOhangwidth{1.14in} % width cleared for the biography photo area +\def\@IEEEBIOhangdepth{1.25in} % depth cleared for the biography photo area + % actual depth will be a multiple of + % \baselineskip, rounded up +\def\@IEEEBIOskipN{4\baselineskip}% nominal value of the vskip above the biography + +\newenvironment{IEEEbiography}[2][]{\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize% +\unitlength 1in\parskip=0pt\par\parindent 1em\interlinepenalty500% +% we need enough space to support the hanging indent +% the nominal value of the spacer +% and one extra line for good measure +\@IEEEtrantmpdimenA=\@IEEEBIOhangdepth% +\advance\@IEEEtrantmpdimenA by \@IEEEBIOskipN% +\advance\@IEEEtrantmpdimenA by 1\baselineskip% +% if this page does not have enough space, break it and lets start +% with a new one +\@IEEEtranneedspace{\@IEEEtrantmpdimenA}{\relax}% +% nominal spacer can strech, not shrink use 1fil so user can out stretch with \vfill +\vskip \@IEEEBIOskipN plus 1fil minus 0\baselineskip% +% the default box for where the photo goes +\def\@IEEEtempbiographybox{{\setlength{\fboxsep}{0pt}\framebox{% +\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}\centering PLACE\\ PHOTO\\ HERE \end{minipage}}}}% +% +% detect if the optional argument was supplied, this requires the +% \@ifmtarg command as defined in the appendix section above +% and if so, override the default box with what they want +\@ifmtarg{#1}{\relax}{\def\@IEEEtempbiographybox{\mbox{\begin{minipage}[b][\@IEEEBIOphotodepth][c]{\@IEEEBIOphotowidth}% +\centering% +#1% +\end{minipage}}}}% end if optional argument supplied +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#2}% +% V1.6 properly handle if a new paragraph should occur while the +% hanging indent is still active. Do this by redefining \par so +% that it will not start a new paragraph. (But it will appear to the +% user as if it did.) Also, strip any leading pars, newlines, or spaces. +\let\@IEEEBIOORGparCMD=\par% save the original \par command +\edef\par{\hfil\break\indent}% the new \par will not be a "real" \par +\settoheight{\@IEEEtrantmpdimenA}{\@IEEEtempbiographybox}% get height of biography box +\@IEEEtrantmpdimenB=\@IEEEBIOhangdepth% +\@IEEEtrantmpcountA=\@IEEEtrantmpdimenB% countA has the hang depth +\divide\@IEEEtrantmpcountA by \baselineskip% calculates lines needed to produce the hang depth +\advance\@IEEEtrantmpcountA by 1% ensure we overestimate +% set the hanging indent +\hangindent\@IEEEBIOhangwidth% +\hangafter-\@IEEEtrantmpcountA% +% reference the top of the photo area to the top of a capital T +\settoheight{\@IEEEtrantmpdimenB}{\mbox{T}}% +% set the photo box, give it zero width and height so as not to disturb anything +\noindent\makebox[0pt][l]{\hspace{-\@IEEEBIOhangwidth}\raisebox{\@IEEEtrantmpdimenB}[0pt][0pt]{% +\raisebox{-\@IEEEBIOphotodepth}[0pt][0pt]{\@IEEEtempbiographybox}}}% +% now place the author name and begin the bio text +\noindent\textbf{#2\ }\@IEEEgobbleleadPARNLSP}{\relax\let\par=\@IEEEBIOORGparCMD\par% +% 7/2001 V1.5 detect when the biography text is shorter than the photo area +% and pad the unused area - preventing a collision from the next biography entry +% MDS +\ifnum \prevgraf <\@IEEEtrantmpcountA\relax% detect when the biography text is shorter than the photo + \advance\@IEEEtrantmpcountA by -\prevgraf% calculate how many lines we need to pad + \advance\@IEEEtrantmpcountA by -1\relax% we compensate for the fact that we indented an extra line + \@IEEEtrantmpdimenA=\baselineskip% calculate the length of the padding + \multiply\@IEEEtrantmpdimenA by \@IEEEtrantmpcountA% + \noindent\rule{0pt}{\@IEEEtrantmpdimenA}% insert an invisible support strut +\fi% +\par\normalfont} + + + +% V1.6 +% added biography without a photo environment +\newenvironment{IEEEbiographynophoto}[1]{% +% Make an entry into the table of contents only if we have not done so before +\if@IEEEbiographyTOCentrynotmade% +% link labels to the biography counter so hyperref will jump +% to the biography, not the previous section +\setcounter{IEEEbiography}{-1}% +\refstepcounter{IEEEbiography}% +\addcontentsline{toc}{section}{Biographies}% +\global\@IEEEbiographyTOCentrynotmadefalse% +\fi% +% one more biography +\refstepcounter{IEEEbiography}% +% Make an entry for this name into the table of contents +\addcontentsline{toc}{subsection}{#1}% +\normalfont\@IEEEcompsoconly{\sffamily}\footnotesize\interlinepenalty500% +\vskip 4\baselineskip plus 1fil minus 0\baselineskip% +\parskip=0pt\par% +\noindent\textbf{#1\ }\@IEEEgobbleleadPARNLSP}{\relax\par\normalfont} + + +% provide the user with some old font commands +% got this from article.cls +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} + + +% SPECIAL PAPER NOTICE COMMANDS +% +% holds the special notice text +\def\@IEEEspecialpapernotice{\relax} + +% for special papers, like invited papers, the user can do: +% \IEEEspecialpapernotice{(Invited Paper)} before \maketitle +\def\IEEEspecialpapernotice#1{\ifCLASSOPTIONconference% +\def\@IEEEspecialpapernotice{{\sublargesize\textit{#1}\vspace*{1em}}}% +\else% +\def\@IEEEspecialpapernotice{{\\*[1.5ex]\sublargesize\textit{#1}}\vspace*{-2ex}}% +\fi} + + + + +% PUBLISHER ID COMMANDS +% to insert a publisher's ID footer +% V1.6 \IEEEpubid has been changed so that the change in page size and style +% occurs in \maketitle. \IEEEpubid must now be issued prior to \maketitle +% use \IEEEpubidadjcol as before - in the second column of the title page +% These changes allow \maketitle to take the reduced page height into +% consideration when dynamically setting the space between the author +% names and the maintext. +% +% the amount the main text is pulled up to make room for the +% publisher's ID footer +% IEEE uses about 1.3\baselineskip for journals, +% dynamic title spacing will clean up the fraction +\def\@IEEEpubidpullup{1.3\baselineskip} +\ifCLASSOPTIONtechnote +% for technotes it must be an integer of baselineskip as there can be no +% dynamic title spacing for two column mode technotes (the title is in the +% in first column) and we should maintain an integer number of lines in the +% second column +% There are some examples (such as older issues of "Transactions on +% Information Theory") in which IEEE really pulls the text off the ID for +% technotes - about 0.55in (or 4\baselineskip). We'll use 2\baselineskip +% and call it even. +\def\@IEEEpubidpullup{2\baselineskip} +\fi + +% V1.7 compsoc does not use a pullup +\ifCLASSOPTIONcompsoc +\def\@IEEEpubidpullup{0pt} +\fi + +% holds the ID text +\def\@IEEEpubid{\relax} + +% flag so \maketitle can tell if \IEEEpubid was called +\newif\if@IEEEusingpubid +\global\@IEEEusingpubidfalse +% issue this command in the page to have the ID at the bottom +% V1.6 use before \maketitle +\def\IEEEpubid#1{\def\@IEEEpubid{#1}\global\@IEEEusingpubidtrue} + + +% command which will pull up (shorten) the column it is executed in +% to make room for the publisher ID. Place in the second column of +% the title page when using \IEEEpubid +% Is smart enough not to do anything when in single column text or +% if the user hasn't called \IEEEpubid +% currently needed in for the second column of a page with the +% publisher ID. If not needed in future releases, please provide this +% command and define it as \relax for backward compatibility +% v1.6b do not allow command to operate if the peer review option has been +% selected because \IEEEpubidadjcol will not be on the cover page. +% V1.7 do nothing if compsoc +\def\IEEEpubidadjcol{\ifCLASSOPTIONcompsoc\else\ifCLASSOPTIONpeerreview\else +\if@twocolumn\if@IEEEusingpubid\enlargethispage{-\@IEEEpubidpullup}\fi\fi\fi\fi} + +% Special thanks to Peter Wilson, Daniel Luecking, and the other +% gurus at comp.text.tex, for helping me to understand how best to +% implement the IEEEpubid command in LaTeX. + + + +%% Lockout some commands under various conditions + +% general purpose bit bucket +\newsavebox{\@IEEEtranrubishbin} + +% flags to prevent multiple warning messages +\newif\if@IEEEWARNthanks +\newif\if@IEEEWARNIEEEPARstart +\newif\if@IEEEWARNIEEEbiography +\newif\if@IEEEWARNIEEEbiographynophoto +\newif\if@IEEEWARNIEEEpubid +\newif\if@IEEEWARNIEEEpubidadjcol +\newif\if@IEEEWARNIEEEmembership +\newif\if@IEEEWARNIEEEaftertitletext +\@IEEEWARNthankstrue +\@IEEEWARNIEEEPARstarttrue +\@IEEEWARNIEEEbiographytrue +\@IEEEWARNIEEEbiographynophototrue +\@IEEEWARNIEEEpubidtrue +\@IEEEWARNIEEEpubidadjcoltrue +\@IEEEWARNIEEEmembershiptrue +\@IEEEWARNIEEEaftertitletexttrue + + +%% Lockout some commands when in various modes, but allow them to be restored if needed +%% +% save commands which might be locked out +% so that the user can later restore them if needed +\let\@IEEESAVECMDthanks\thanks +\let\@IEEESAVECMDIEEEPARstart\IEEEPARstart +\let\@IEEESAVECMDIEEEbiography\IEEEbiography +\let\@IEEESAVECMDendIEEEbiography\endIEEEbiography +\let\@IEEESAVECMDIEEEbiographynophoto\IEEEbiographynophoto +\let\@IEEESAVECMDendIEEEbiographynophoto\endIEEEbiographynophoto +\let\@IEEESAVECMDIEEEpubid\IEEEpubid +\let\@IEEESAVECMDIEEEpubidadjcol\IEEEpubidadjcol +\let\@IEEESAVECMDIEEEmembership\IEEEmembership +\let\@IEEESAVECMDIEEEaftertitletext\IEEEaftertitletext + + +% disable \IEEEPARstart when in draft mode +% This may have originally been done because the pre-V1.6 drop letter +% algorithm had problems with a non-unity baselinestretch +% At any rate, it seems too formal to have a drop letter in a draft +% paper. +\ifCLASSOPTIONdraftcls +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** ATTENTION: \noexpand\IEEEPARstart + is disabled in draft mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi +% and for technotes +\ifCLASSOPTIONtechnote +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out for technotes (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} +\fi + + +% lockout unneeded commands when in conference mode +\ifCLASSOPTIONconference +% when locked out, \thanks, \IEEEbiography, \IEEEbiographynophoto, \IEEEpubid, +% \IEEEmembership and \IEEEaftertitletext will all swallow their given text. +% \IEEEPARstart will output a normal character instead +% warn the user about these commands only once to prevent the console screen +% from filling up with redundant messages +\def\thanks#1{\if@IEEEWARNthanks\typeout{** WARNING: \noexpand\thanks + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNthanksfalse} +\def\IEEEPARstart#1#2{#1#2\if@IEEEWARNIEEEPARstart\typeout{** WARNING: \noexpand\IEEEPARstart + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEPARstartfalse} + + +% LaTeX treats environments and commands with optional arguments differently. +% the actual ("internal") command is stored as \\commandname +% (accessed via \csname\string\commandname\endcsname ) +% the "external" command \commandname is a macro with code to determine +% whether or not the optional argument is presented and to provide the +% default if it is absent. So, in order to save and restore such a command +% we would have to save and restore \\commandname as well. But, if LaTeX +% ever changes the way it names the internal names, the trick would break. +% Instead let us just define a new environment so that the internal +% name can be left undisturbed. +\newenvironment{@IEEEbogusbiography}[2][]{\if@IEEEWARNIEEEbiography\typeout{** WARNING: \noexpand\IEEEbiography + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographyfalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} +% and make biography point to our bogus biography +\let\IEEEbiography=\@IEEEbogusbiography +\let\endIEEEbiography=\end@IEEEbogusbiography + +\renewenvironment{IEEEbiographynophoto}[1]{\if@IEEEWARNIEEEbiographynophoto\typeout{** WARNING: \noexpand\IEEEbiographynophoto + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEbiographynophotofalse% +\setbox\@IEEEtranrubishbin\vbox\bgroup}{\egroup\relax} + +\def\IEEEpubid#1{\if@IEEEWARNIEEEpubid\typeout{** WARNING: \noexpand\IEEEpubid + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidfalse} +\def\IEEEpubidadjcol{\if@IEEEWARNIEEEpubidadjcol\typeout{** WARNING: \noexpand\IEEEpubidadjcol + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEpubidadjcolfalse} +\def\IEEEmembership#1{\if@IEEEWARNIEEEmembership\typeout{** WARNING: \noexpand\IEEEmembership + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEmembershipfalse} +\def\IEEEaftertitletext#1{\if@IEEEWARNIEEEaftertitletext\typeout{** WARNING: \noexpand\IEEEaftertitletext + is locked out when in conference mode (line \the\inputlineno).}\fi\global\@IEEEWARNIEEEaftertitletextfalse} +\fi + + +% provide a way to restore the commands that are locked out +\def\IEEEoverridecommandlockouts{% +\typeout{** ATTENTION: Overriding command lockouts (line \the\inputlineno).}% +\let\thanks\@IEEESAVECMDthanks% +\let\IEEEPARstart\@IEEESAVECMDIEEEPARstart% +\let\IEEEbiography\@IEEESAVECMDIEEEbiography% +\let\endIEEEbiography\@IEEESAVECMDendIEEEbiography% +\let\IEEEbiographynophoto\@IEEESAVECMDIEEEbiographynophoto% +\let\endIEEEbiographynophoto\@IEEESAVECMDendIEEEbiographynophoto% +\let\IEEEpubid\@IEEESAVECMDIEEEpubid% +\let\IEEEpubidadjcol\@IEEESAVECMDIEEEpubidadjcol% +\let\IEEEmembership\@IEEESAVECMDIEEEmembership% +\let\IEEEaftertitletext\@IEEESAVECMDIEEEaftertitletext} + + + +% need a backslash character for typeout output +{\catcode`\|=0 \catcode`\\=12 +|xdef|@IEEEbackslash{\}} + + +% hook to allow easy disabling of all legacy warnings +\def\@IEEElegacywarn#1#2{\typeout{** ATTENTION: \@IEEEbackslash #1 is deprecated (line \the\inputlineno). +Use \@IEEEbackslash #2 instead.}} + + +% provide for legacy commands +\def\authorblockA{\@IEEElegacywarn{authorblockA}{IEEEauthorblockA}\IEEEauthorblockA} +\def\authorblockN{\@IEEElegacywarn{authorblockN}{IEEEauthorblockN}\IEEEauthorblockN} +\def\authorrefmark{\@IEEElegacywarn{authorrefmark}{IEEEauthorrefmark}\IEEEauthorrefmark} +\def\PARstart{\@IEEElegacywarn{PARstart}{IEEEPARstart}\IEEEPARstart} +\def\pubid{\@IEEElegacywarn{pubid}{IEEEpubid}\IEEEpubid} +\def\pubidadjcol{\@IEEElegacywarn{pubidadjcol}{IEEEpubidadjcol}\IEEEpubidadjcol} +\def\QED{\@IEEElegacywarn{QED}{IEEEQED}\IEEEQED} +\def\QEDclosed{\@IEEElegacywarn{QEDclosed}{IEEEQEDclosed}\IEEEQEDclosed} +\def\QEDopen{\@IEEElegacywarn{QEDopen}{IEEEQEDopen}\IEEEQEDopen} +\def\specialpapernotice{\@IEEElegacywarn{specialpapernotice}{IEEEspecialpapernotice}\IEEEspecialpapernotice} + + + +% provide for legacy environments +\def\biography{\@IEEElegacywarn{biography}{IEEEbiography}\IEEEbiography} +\def\biographynophoto{\@IEEElegacywarn{biographynophoto}{IEEEbiographynophoto}\IEEEbiographynophoto} +\def\keywords{\@IEEElegacywarn{keywords}{IEEEkeywords}\IEEEkeywords} +\def\endbiography{\endIEEEbiography} +\def\endbiographynophoto{\endIEEEbiographynophoto} +\def\endkeywords{\endIEEEkeywords} + + +% provide for legacy IED commands/lengths when possible +\let\labelindent\IEEElabelindent +\def\calcleftmargin{\@IEEElegacywarn{calcleftmargin}{IEEEcalcleftmargin}\IEEEcalcleftmargin} +\def\setlabelwidth{\@IEEElegacywarn{setlabelwidth}{IEEEsetlabelwidth}\IEEEsetlabelwidth} +\def\usemathlabelsep{\@IEEElegacywarn{usemathlabelsep}{IEEEusemathlabelsep}\IEEEusemathlabelsep} +\def\iedlabeljustifyc{\@IEEElegacywarn{iedlabeljustifyc}{IEEEiedlabeljustifyc}\IEEEiedlabeljustifyc} +\def\iedlabeljustifyl{\@IEEElegacywarn{iedlabeljustifyl}{IEEEiedlabeljustifyl}\IEEEiedlabeljustifyl} +\def\iedlabeljustifyr{\@IEEElegacywarn{iedlabeljustifyr}{IEEEiedlabeljustifyr}\IEEEiedlabeljustifyr} + + + +% let \proof use the IEEEtran version even after amsthm is loaded +% \proof is now deprecated in favor of \IEEEproof +\AtBeginDocument{\def\proof{\@IEEElegacywarn{proof}{IEEEproof}\IEEEproof}\def\endproof{\endIEEEproof}} + +% V1.7 \overrideIEEEmargins is no longer supported. +\def\overrideIEEEmargins{% +\typeout{** WARNING: \string\overrideIEEEmargins \space no longer supported (line \the\inputlineno).}% +\typeout{** Use the \string\CLASSINPUTinnersidemargin, \string\CLASSINPUToutersidemargin \space controls instead.}} + + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEEtran.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%% +% That's all folks! + diff --git a/meta/style/baposter.cls b/meta/style/baposter.cls new file mode 100644 index 0000000..cea7a1b --- /dev/null +++ b/meta/style/baposter.cls @@ -0,0 +1,1336 @@ +%% +%% This is file `baposter.cls' +%% +%% A relatively comfortable latex class to produce posters with a grid based +%% layout. It comes with a number of combinable styles and is (maybe only for +%% the writer) easy to extend, as all the graphics is based on pgf. +%% +%% It is meant to be used with pdftex, but might also work with pslatex if you +%% are not interested in things like transparency. +%% +%% Copyright (C) 2007-2011 Brian Amberg +%% Copyright (C) 2011 Reinhold Kainhofer +%% +%% 29. September 2011: +%% - Finally fixed confusion with paper size handling and landscape. This required seperate handling of papersizes +%% known to the geometry package and other packages. +%% 26. September 2011: +%% - Reverted drawing of faded borders to manual method, as the current result does not work with evince, +%% and produced spurious colored boxes with okular and acroread. +%% - Added one more example due to popular request +%% 16. September 2011: +%% - Removed nag package, such that it compiles on older systems +%% - Added more examples +%% 15. September 2011: +%% - Merged fork by (rk) back into mainline, essentially taking over all the great improvements that Reinhold Kainhofer coded. +%% We call this version 2, as it breaks the interface in some small points. Essentially watch out for this: +%% - no/yes keys are now false/true +%% - the shade-lr etc. keys have the hypen removed, and are now called shadelr etc. +% - Added more examples, which are all adapted to work with the current version +%% 27. August 2011 (rk): +%% - Completely factored out all drawing commands to handler functions, assigned via choice keys +%% - Added cornerradius, boxheaderheight, boxpadding options +%% - Added missing roundedright +%% 26. August 2011 (rk): +%% - Turned headerbox cmd into posterbox environment (allows verbatim) +%% - pass several options to packages +%% - added debug cls option to reduce default output +%% - rewrote several loops and ifthenelse +%% - Use boolean and choice keys for all options +%% - Changed all choice options to set a global function to +%% \baposter@OPTION@OPTIONVALUE, which are a functions that execute the +%% option's setting (drawing routine, color setting for tikz, etc.) +%% - Add a5paper +%% 07. April 2011: Fixed paper size handling +%% - Fixed Paper Size handling, you can now specify all page sizes using paperwidth=, paperheight= class options. +%% - Added rudimentary documentation of the available keys. +%% 11. December 2010: Fixed "Empty Second Page" bug +%% - A second empty page was introduced when a document ended with +%% \end{poster} +%% \end{document} +%% This was fixed thanks to a suggestion by Martin Aulbach +%% - Added +%% \thispagestyle{empty} +%% to suppress page numbers, which became visible when the margins are large. +%% The underlying problem of page-size handling has not yet been solved. +%% 30. September 2010: Border Bugfixes +%% - Correct background color with textborder=rounded-small, Thanks to Ke Chen for the bugreport and patch +%% - Correctly draw rectangular text boxes, Thanks to abenkst for the bugreport and fix +%% 10. June 2010: Added option to set the number of columns +%% - added a class option to set the number of columns +%% - columns=5: sets the number of columns to 5, possible values are 1..6, default is 3 in portrait and 4 in landscape format +%% 29. April 2009: Incorporated Patches by Arne Henningsen +%% - added some class options +%% - a4shrink: shrink the paper to A4 size (for printing drafts or handouts) +%% - movebody=Xpt: move the text/poster body Xpt to the right +%% (or to the left if Xpt is negative), +%% e.g. for manually centering the poster on the page +%% - showframe: use the "showframe" option of the "geometry" package +%% - a0paper (default): set paper size to A0 +%% - archE: set paper size to Arch E +%% - setting "background" can be "none" now (otherwise the "showframe" +%% option has no effect) +%% - the page number has been removed (it was mostly not visible before) +%% - the "margin=" option works now +%% 04. December 2008 +%% - Mainly an update to the landscape example +%% 14. November 2008 +%% - Actually center the title when eyecatcher is used. +%% 04. November 2008 +%% - Fixed bug with eyecatcher not working. +%% 26. June 2008 +%% - Fixed bug with plain background mode. +%% 14. June 2008 +%% - Support for portrait/landscape switching. +%% - Some smaller bugfixes. +%% 01. June 2007 +%% - First version released. +%% +%% Use this class with pdflatex +%% +%% I have confirmed that this package works with +%% - texlive 2007 and +%% - miktex 2.7 +%% +%% It does not seem to work with +%% - miktex 2.2 +%% - some old versions of tetex +%% +%% +%% TODO: +%% -) Rename backgrounds back to shaded-tb shade-lr +%% -) Rename textborder back to rounded-small (consistent naming needed!) +%% -) Rename headershade back to shade-lr, shade-tb, shade-tb-inverse +%% -) Rename headershape back to small-rounded +%% -) Option value consistency (small-rounded vs. rounded-small; missing ones) +%% -) Rename \baposterHeaderSetShade, \baposterHeaderDrawText to include @ and verb +%% +%% +%% Licence: GPL +\ProvidesClass{baposter}[2011/11/26 v2.0 baposter class] +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\LoadClass{article} +\typeout{baposter: Brian Amberg, 2007, 2008, 2009, 2010, 2011 | http://www.brian-amberg.de/uni/poster/} +\typeout{baposter: Reinhold Kainhofer, 2011 | http://reinhold.kainhofer.com/} + +%% Define lengths only once on inclusion, such that we can make multiple posters +\newlength{\baposter@basepaperwidth} +\newlength{\baposter@basepaperheight} +\newlength{\baposter@basemargin} +\newlength{\baposter@finalpaperwidth} +\newlength{\baposter@finalpaperheight} +\newlength{\baposter@finalmargin} +\newlength{\headerheight}% +\newlength{\footerheight}% +\newlength{\colwidth}% +\newlength{\colheight}% +\newlength{\baposter@@colspacing}% +\newlength{\baposter@box@@cornerradius}% +\newlength{\baposter@box@@boxheaderheight}% +\newlength{\baposter@box@@boxpadding}% +\newlength{\boxstartx}% +\newlength{\boxstarty}% +\newlength{\boxwidth}% +\newlength{\boxheight}% +\newlength{\baposter@titleimage@left@width}% +\newlength{\baposter@titleimage@right@width}% +\newlength{\baposter@titleimage@textwidth}% +\newbox\baposter@box@content% +\newbox\baposter@titleimage@left% +\newbox\baposter@titleimage@title% +\newbox\baposter@titleimage@right% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Packages +%------------------------------------------------------------------------------- +% The only ``weird'' dependency of this package is pgf. All the rest should be +% installed on any decent system. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\typeout{Use Packages} +\RequirePackage{xkeyval} +\RequirePackage{calc} +\RequirePackage[cmyk]{xcolor} +\RequirePackage{tikz} +\RequirePackage{pgf} +\RequirePackage{ifthen} +\RequirePackage[T1]{fontenc} +%\RequirePackage[l2tabu, orthodox]{nag} +\usetikzlibrary{decorations} +\usetikzlibrary{fadings} +\usetikzlibrary{calc} +\usetikzlibrary{shapes} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Settings +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Choose a smaller value for larger fonts +\newcommand{\baposter@fontscale}{0.292} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Zoom +%------------------------------------------------------------------------------- +% We scale the page from fontscale * papersize up to papersize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Paper sizes +\newif\if@landscape +\newif\if@geometryKnowsThisSize +\DeclareOptionX{landscape}{\@landscapetrue} +\DeclareOptionX{portrait}{} + +\newcommand{\baposter@setfinalpapersize}[2]{% +\if@geometryKnowsThisSize + \setlength{\baposter@finalpaperwidth}{#1}% + \setlength{\baposter@finalpaperheight}{#2}% +\else +\if@landscape +% Transpose length, if geometry does not handle the papersize based on the key + \setlength{\baposter@finalpaperwidth}{#2}% + \setlength{\baposter@finalpaperheight}{#1}% +\else + \setlength{\baposter@finalpaperwidth}{#1}% + \setlength{\baposter@finalpaperheight}{#2}% +\fi +\fi +} + +% Default paperwidth and paperheight = a0paper +\DeclareOptionX{paperwidth}[841mm]{\setlength{\baposter@finalpaperwidth}{#1}} +\DeclareOptionX{paperheight}[1189mm]{\setlength{\baposter@finalpaperheight}{#1}} +\DeclareOptionX{archA} { \baposter@setfinalpapersize{9in}{12in}}% +\DeclareOptionX{archB} { \baposter@setfinalpapersize{12in}{18in}}% +\DeclareOptionX{archC} { \baposter@setfinalpapersize{18in}{24in}}% +\DeclareOptionX{archD} { \baposter@setfinalpapersize{24in}{36in}}% +\DeclareOptionX{archE} { \baposter@setfinalpapersize{36in}{48in}}% +\DeclareOptionX{archE1} { \baposter@setfinalpapersize{30in}{42in}}% +\DeclareOptionX{archE2} { \baposter@setfinalpapersize{26in}{38in}}% +\DeclareOptionX{archE3} { \baposter@setfinalpapersize{27in}{39in}}% +\DeclareOptionX{a0paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{841mm}{1189mm}}%g +\DeclareOptionX{a1paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{594mm}{841mm}}%g +\DeclareOptionX{a2paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{420mm}{594mm}}%g +\DeclareOptionX{a3paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{297mm}{420mm}}%g +\DeclareOptionX{a4paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{210mm}{297mm}}%g +\DeclareOptionX{a5paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{148mm}{210mm}}%g +\DeclareOptionX{a6paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{105mm}{148mm}}%g +\DeclareOptionX{b0paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{1000mm}{1414mm}}%g +\DeclareOptionX{b1paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{707mm}{1000mm}}%g +\DeclareOptionX{b2paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{500mm}{707mm}}%g +\DeclareOptionX{b3paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{353mm}{500mm}}%g +\DeclareOptionX{b4paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{250mm}{353mm}}%g +\DeclareOptionX{b5paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{176mm}{250mm}}%g +\DeclareOptionX{b6paper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{125mm}{176mm}}%g +\DeclareOptionX{ansiapaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{8.5in}{11in}}% +\DeclareOptionX{ansibpaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{11in}{17in}}% +\DeclareOptionX{ansicpaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{17in}{22in}}% +\DeclareOptionX{ansidpaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{22in}{34in}}% +\DeclareOptionX{ansiepaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{34in}{44in}}% +\DeclareOptionX{letterpaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{8.5in}{11in}}% +\DeclareOptionX{legalpaper} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{8.5in}{14in}}% +\DeclareOptionX{executivepaper}{\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{7.25in}{10.5in}}% +\DeclareOptionX{screen} {\@geometryKnowsThisSizetrue\baposter@setfinalpapersize{225mm}{180mm}}%g + +% Margin +\setlength{\baposter@finalmargin}{1.5cm} +\DeclareOptionX{fontscale}[0.292]{\renewcommand{\baposter@fontscale}{#1}} +\DeclareOptionX{margin} [1.5cm]{\setlength{\baposter@finalmargin}{#1}} + +% move text/poster body to the right (or to the left if negative) +\newlength{\baposter@movebody} +\setlength{\baposter@movebody}{0cm} +\DeclareOptionX{movebody}[0cm]{\setlength{\baposter@movebody}{#1}} + + +\newif\if@debug +\DeclareOptionX{debug}{\@debugtrue} +%% Will be passed on to other packages (xcolor and geometry), still we don't want unused warnings +\DeclareOptionX{table}{} +\DeclareOptionX{showframe}{} + +\ProcessOptionsX + +\if@debug +\newcommand{\debug}[1]{\typeout{#1}} +\else +\newcommand{\debug}[1]{} +\fi + + + +\setlength{\baposter@basepaperwidth} {\baposter@fontscale\baposter@finalpaperwidth } +\setlength{\baposter@basepaperheight}{\baposter@fontscale\baposter@finalpaperheight} +\setlength{\baposter@basemargin} {\baposter@fontscale\baposter@finalmargin} +\newlength{\baposter@basemarginright} +\setlength{\baposter@basemarginright}{\baposter@basemargin} +\addtolength{\baposter@basemarginright}{-\baposter@fontscale\baposter@movebody} +\newlength{\baposter@basemarginleft} +\setlength{\baposter@basemarginleft}{\baposter@basemargin} +\addtolength{\baposter@basemarginleft}{\baposter@fontscale\baposter@movebody} + +\typeout{Paperwidth=\the\baposter@finalpaperwidth} +\typeout{Paperheight=\the\baposter@finalpaperheight} +\typeout{BasePaperwidth=\the\baposter@basepaperwidth} +\typeout{BasePaperheight=\the\baposter@basepaperheight} +\usepackage[ + paperwidth=\baposter@basepaperwidth, + paperheight=\baposter@basepaperheight, + tmargin=\baposter@basemargin, + bmargin=\baposter@basemargin, + lmargin=\baposter@basemarginleft, + rmargin=\baposter@basemarginright, + ]{geometry} + +\usepackage{pgfpages} +\if@landscape +\if@geometryKnowsThisSize +\pgfpagesuselayout{resize to}[physical paper width=\baposter@finalpaperheight,physical paper height=\baposter@finalpaperwidth] +\else +\pgfpagesuselayout{resize to}[physical paper width=\baposter@finalpaperwidth,physical paper height=\baposter@finalpaperheight] +\fi +\else +\pgfpagesuselayout{resize to}[physical paper width=\baposter@finalpaperwidth,physical paper height=\baposter@finalpaperheight] +\fi + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Default functions for borders/backgrounds +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% These functions will all be redefined from the actual option values. In +%% particular, they will be set to \baposter@optionname@optionvalue, which +%% should do the actual work / setting for that particular optionvalue. + +\newcommand{\baposterPosterDrawBackground}[2]{} % Draw poster background + +\newcommand{\baposterBoxGetShape}{} % Returns path of text box shape +\newcommand{\baposterBoxDrawBackground}[2]{} % Draw bg of boxes +\newcommand{\baposterBoxDrawBorder}[1]{} % Draw border of individual boxes + +\newcommand{\baposterHeaderGetShape}{} % Returns path of text box shape +\newcommand{\baposterHeaderSetShade}[3]{} % Set bg style for box headers +\newcommand{\baposterHeaderDrawBackground}[3]{} % Draw background of box header +\newcommand{\baposterHeaderDrawBorder}[1]{} % Draw border of box header +\newcommand{\baposterHeaderDrawText}[1]{} % Draw text inside box header + +\newcommand{\@@previousbox}{notset} % stores the previously processed box for below=auto + +% Function to set a user-defined background +\newcommand{\baposter@backgroundCmd}{\error{No background command defined. Use \background{...} to define background}} +\newcommand{\background}[1]{\renewcommand{\baposter@backgroundCmd}{#1}} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Handle poster and box options +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\debug{Handling keys} + +%% +%% POSTER OPTIONS +%% +%% Store all poster options in variables of the form \baposter@option +%% choose-keys also store the index in \baposter@optionnr +%% choose-keys typically also assign a function +\definecolor{baposter@silver}{cmyk}{0,0,0,0.7} +\define@boolkey[ba]{poster}[baposter@]{grid} [false] {} +\define@boolkey[ba]{poster}[baposter@]{eyecatcher} [true] {} +\define@cmdkey [ba]{poster}[baposter@]{headerheight} [0.1\textheight]{} +\define@cmdkey [ba]{poster}[baposter@]{footerheight} [0.1\textheight]{} +\define@cmdkey [ba]{poster}[baposter@]{columns} [{}] {} +\define@cmdkey [ba]{poster}[baposter@]{colspacing} [1em] {} +\define@cmdkey [ba]{poster}[baposter@]{bgColorOne} [baposter@silver]{} +\define@cmdkey [ba]{poster}[baposter@]{bgColorTwo} [green] {} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% UNI-BA Colors % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% UNIBA colors +\definecolor{unibablueI}{HTML}{00457D} +\definecolor{unibablueII}{HTML}{336A97} +\definecolor{unibablueIII}{HTML}{6690B1} +\definecolor{unibablueIV}{HTML}{99B5CB} +\definecolor{unibablueV}{HTML}{CCDAE5} + +\definecolor{unibayellowI}{HTML}{FFD300} +\definecolor{unibayellowII}{HTML}{FFDC33} +\definecolor{unibayellowIII}{HTML}{FFE566} +\definecolor{unibayellowIV}{HTML}{FFED99} +\definecolor{unibayellowV}{HTML}{FFF6CC} + +\definecolor{unibagreenI}{HTML}{97BF0D} +\definecolor{unibagreenII}{HTML}{ACCC3D} +\definecolor{unibagreenIII}{HTML}{C1D86E} +\definecolor{unibagreenIV}{HTML}{D5E59E} +\definecolor{unibagreenV}{HTML}{EAF2CF} +%Not CD, darker versions +\definecolor{nounibagreenI}{HTML}{82A50B} +\definecolor{nounibagreenII}{HTML}{708C0A} + +\definecolor{unibaredI}{HTML}{E6444F} +\definecolor{unibaredII}{HTML}{EB6972} +\definecolor{unibaredIII}{HTML}{F08F95} +\definecolor{unibaredIV}{HTML}{F5B4B8} +\definecolor{unibaredV}{HTML}{FADADC} +%Not CD, darker versions +\definecolor{nounibaredI}{HTML}{CC3D47} +\definecolor{nounibaredII}{HTML}{B3363E} + +\definecolor{unibagrayI}{HTML}{878783} +\definecolor{unibagrayII}{HTML}{9F9F9C} +\definecolor{unibagrayIII}{HTML}{B7B7B5} +\definecolor{unibagrayIV}{HTML}{CFCFCE} +\definecolor{unibagrayV}{HTML}{E7E7E6} + + + +% background can be one of: shadeLR, shadeTB, plain, user, none +\define@choicekey*+[ba]{poster}{background}% + [\baposter@background\baposter@backgroundnr]% + {shadeLR, shadeTB, plain, user, none} [plain] {% + \debug{Poster background: \baposter@background} + \renewcommand{\baposterPosterDrawBackground}[2]{ + \csname baposter@background@\baposter@background\endcsname{##1}{##2}} +}{ + \PackageWarning{baposter}{Unknown background `\baposter@background' (use + shadeLR, shadeTB, plain, none, or user). If user is used, you also + have to define \background{...}.} + \renewcommand{\baposterPosterDrawBackground}[2]{\baposter@background@none{##1}{##2}} +} + + +%% +%% BOX OPTIONS +%% +\define@cmdkey[ba]{posterbox}[baposter@box@]{cornerradius} [1em] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{boxheaderheight} [2em] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{boxpadding} [0.5em] {} + + +% textborder can be one of: none, bars, coils, triangles, rectangle, rounded, +% roundedleft, roundedsmall, faded; UNIMPLEMENTED: roundedright +\edef\baposter@box@textborder@validvalues{none,bars,coils,triangles,rectangle,rounded,roundedleft,roundedsmall,faded} +\define@choicekey*+[ba]{posterbox}{textborder}% + [\baposter@box@textborder\baposter@box@textbordernr]% + {none,bars,coils,triangles,rectangle,rounded,roundedleft,roundedright,roundedsmall,faded} [rectangle] {% + \debug{Text border: \baposter@box@textborder} + \renewcommand{\baposterBoxGetShape}{ + \csname baposter@box@boxshape@\baposter@box@textborder\endcsname} + \renewcommand{\baposterBoxDrawBorder}[1]{ + \csname baposter@box@drawborder@\baposter@box@textborder\endcsname{##1}} +}{ + \PackageWarning{baposter}{Unknown text-border style `\baposter@box@textborder'. + Edit your file to choose a valid option (\baposter@box@textborder@validvalues).} + \renewcommand{\baposterBoxGetShape}{\baposter@boxshape@rectangle} + \renewcommand{\baposterBoxDrawBorder}[1]{\baposter@drawborder@rectangle{##1}} +} + +% boxshade can be one of: shadeLR, shadeTB, plain, none +\define@choicekey*+[ba]{posterbox}{boxshade}% + [\baposter@box@boxshade\baposter@box@boxshadenr]% + {shadelr,shadetb,plain,none} [none] {% + \debug{Box shade: \baposter@box@boxshade} + \renewcommand{\baposterBoxDrawBackground}[2]{ + \csname baposter@box@drawbackground@\baposter@box@boxshade\endcsname{##1}{##2}} +}{ + \PackageWarning{baposter}{Unknown boxshade style `\baposter@boxshade'. + Edit your file to choose a valid option.} + \renewcommand{\baposterBoxDrawBackground}[2]{\baposter@box@drawbackground@none{##1}{##2}} +} + +% headershade can be one of: shade-lr, shade-tb, shade-tb-inverse, plain +\define@choicekey*+[ba]{posterbox}{headershade}% + [\baposter@box@headershade\baposter@box@headershadenr]% + {shadelr, shadetb, shadetbinverse, plain} [shadelr] {% + \debug{Header shade: \baposter@box@headershade} + \renewcommand{\baposterHeaderSetShade}[3]{ + \csname baposter@box@headershade@\baposter@box@headershade\endcsname{##1}{##2}{##3}} +}{ + \PackageWarning{baposter}{Unknown headershade style `\baposter@box@headershade'. + Edit your file to choose a valid option.} + \renewcommand{\baposterHeaderSetShade}[3]{\baposter@box@headershade@none{##1}{##2}{##3}} +} + +% headershape can be one of: rectangle, rounded, smallrounded, roundedleft, roundedright +\define@choicekey*+[ba]{posterbox}{headershape}% + [\baposter@box@headershape\baposter@box@headershapenr]% + {rectangle,rounded,smallrounded,roundedleft,roundedright} [roundedright] {% + \debug{Header shape: \baposter@box@headershape} + \renewcommand{\baposterHeaderGetShape}{ + \csname baposter@box@headershape@\baposter@box@headershape\endcsname} + \renewcommand{\baposterHeaderDrawText}[1]{ + \csname baposter@box@headerdrawtext@\baposter@box@headershape\endcsname{##1}} + \renewcommand{\baposterHeaderDrawBorder}[1]{ + \csname baposter@box@headerdrawborder@\baposter@box@headershape\endcsname{##1}} +}{ + \PackageWarning{baposter}{Unknown headershape style `\baposter@headershape'. + Edit your file to choose a valid option.} + \renewcommand{\baposterHeaderGetShape}{\baposter@box@headershape@rectangle} + \renewcommand{\baposterHeaderDrawText}[1]{\baposter@box@headerdrawtext@rectangle{##1}} + \renewcommand{\baposterHeaderDrawBorder}[1]{\baposter@box@headerdrawborder@rectangle{##1}} +} + +% headerborder can be one of: open, closed, none +\define@choicekey*+[ba]{posterbox}{headerborder}% + [\baposter@box@headerborder\baposter@box@headerbordernr]% + {open,closed,none} [open] {% + \debug{Header border: \baposter@box@headerborder} +% \renewcommand{\baposterHeaderBorder}{ +% \csname baposter@headerborder@\baposter@box@headerborder\endcsname} +}{ + \PackageWarning{baposter}{Unknown headerborder style `\baposter@headerborder'. + Edit your file to choose a valid option.} +% \renewcommand{\baposterHeaderBorder}{\baposter@box@headerborder@rectangle} +} + + +\define@cmdkey[ba]{posterbox}[baposter@box@]{borderColor} [yellow] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{headerColorOne} [red] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{headerColorTwo} [brown] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{headerFontColor} [black] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{boxColorOne} [magenta] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{boxColorTwo} [cyan] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{headerfont} [\scshape\Large] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{textfont} [{}] {} + +\define@cmdkey[ba]{posterbox}[baposter@box@]{linewidth} [2pt] {} + +\define@cmdkey[ba]{posterbox}[baposter@box@]{below} [notset]{} +\define@cmdkey[ba]{posterbox}[baposter@box@]{above} [notset]{} +\define@cmdkey[ba]{posterbox}[baposter@box@]{aligned}[notset]{} +\define@cmdkey[ba]{posterbox}[baposter@box@]{bottomaligned}[notset]{} +\define@cmdkey[ba]{posterbox}[baposter@box@]{column} [0] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{row} [0] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{span} [1] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{height} [auto] {} +\define@cmdkey[ba]{posterbox}[baposter@box@]{name} [noname]{} + +% Set some default values, the poster and posterbox environments can override: +\setkeys[ba]{poster}{ + % Debug grid + grid=false, + % Is there an eyecatcher image + eyecatcher=true, + columns={}, + % Colours + bgColorOne=baposter@silver, + bgColorTwo=green, + % + colspacing=1em, + headerheight=0.1\textheight, + footerheight=0.1\textheight, + background=shadeLR, +}{} +\setkeys[ba]{posterbox}{ + % Position + column=0,row=0,span=1, + below=notset,above=notset, + bottomaligned=notset, + aligned=notset, + height=auto, + % Name + name=noname, + % Box design: border: + linewidth=2pt, + borderColor=yellow, + cornerradius=1em, + % text box: + textfont={}, + boxshade=plain, + boxColorOne=magenta, + boxColorTwo=cyan, + textborder=faded, + boxpadding=0.5em, + % header + headerfont=\scshape\Large,% or headerfont=\color{white}\textsf\textbf + headerFontColor=black, + headerColorOne=red, + headerColorTwo=brown, + headershape=rectangle, + headershade=shadeLR, + headerborder=none, + boxheaderheight=2em, +}{} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Background options and functions (one function for each possible value) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\baposter@background@shadelr}[2]{ + \debug{BAPOSTER: Using shade left right background.} + \begin{tikzpicture}[remember picture,overlay]% + \shade [shading=axis,left color=#1,right color=#2] (current page.north west) + rectangle(current page.south east); + \end{tikzpicture}% +} +\newcommand{\baposter@background@shadetb}[2]{ + \debug{BAPOSTER: Using shade top to bottom background.} + \begin{tikzpicture}[remember picture,overlay]% + \shade [shading=axis,top color=#1,bottom color=#2] (current page.north west) + rectangle(current page.south east); + \end{tikzpicture}% +} +\newcommand{\baposter@background@plain}[2]{ + \debug{BAPOSTER: Using plain background.} + \begin{tikzpicture}[remember picture,overlay]% + \fill [fill=#1] (current page.north west) rectangle(current page.south east); + \end{tikzpicture}% +} +\newcommand{\baposter@background@user}[2]{ + \debug{BAPOSTER: Using user background.} + \baposter@backgroundCmd% +} +\newcommand{\baposter@background@none}[2]{ + \debug{BAPOSTER: Using no background.} +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Return shape path of text box (depending on the box shape) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\baposter@box@boxshape@none}{\baposter@box@boxshape@rectangle} +\newcommand{\baposter@box@boxshape@bars}{ + (\baposter@box@name tnw) -- (\baposter@box@name sw) % + (\baposter@box@name se) -- (\baposter@box@name tne) +} +\newcommand{\baposter@box@boxshape@coils}{\baposter@box@boxshape@bars} +\newcommand{\baposter@box@boxshape@triangles}{\baposter@box@boxshape@bars} +\newcommand{\baposter@box@boxshape@rectangle}{ + (\baposter@box@name tnw) -- (\baposter@box@name sw) -- % + (\baposter@box@name se) -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@boxshape@faded}{ + (\baposter@box@name tnw) -- (\baposter@box@name sw) % + (\baposter@box@name tne) -- (\baposter@box@name se) + } +\newcommand{\baposter@box@boxshape@rounded}{ + [rc] \baposter@box@boxshape@rectangle% +} +\newcommand{\baposter@box@boxshape@roundedsmall}{ + [src] \baposter@box@boxshape@rectangle +} +\newcommand{\baposter@box@boxshape@roundedleft}{ + (\baposter@box@name tnw) {[rc]-- (\baposter@box@name sw)} -- % + (\baposter@box@name se) -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@boxshape@roundedright}{ + (\baposter@box@name tnw) -- (\baposter@box@name sw) {[rc]-- % + (\baposter@box@name se)} -- (\baposter@box@name tne)% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Draw box background (one function for each possible value) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These functions take no arguments +\newcommand{\baposter@box@drawbackground@none}[2]{ + \tikzstyle{box colors}=[] +} +\newcommand{\baposter@box@drawbackground@plain}[2]{ + \tikzstyle{box colors}=[fill=#1] + \fill[box colors] \baposterBoxGetShape; +} +\newcommand{\baposter@box@drawbackground@shadelr}[2]{ + \tikzstyle{box colors}=[shading=axis, left color=#1, right color=#2]% + \fill[box colors] \baposterBoxGetShape; +} +\newcommand{\baposter@box@drawbackground@shadetb}[2]{ + \tikzstyle{box colors}=[shading=axis, top color=#1, bottom color=#2]% + \fill[box colors] \baposterBoxGetShape; +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Draw box border +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These functions take two arguments: borderColor +\newcommand{\baposter@box@drawborder@none}[1]{} +\newcommand{\baposter@box@drawborder@bars}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@coils}[1]{ + \draw[color=#1,segment amplitude=0.35em,segment length=0.4em,snake=coil] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@triangles}[1]{ + \draw[color=#1,segment amplitude=0.2em,segment length=0.4em,snake=triangles] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@rectangle}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@rounded}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@roundedleft}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@roundedright}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} +\newcommand{\baposter@box@drawborder@faded}[1]{ + % This is the right way to do it, but it does not work with evince, and has problems during printing, so instead we do + %\draw[color=#1,path fading=south] \baposterBoxGetShape;% + % this + \foreach \x in {0,1,...,90} \draw[color=#1!\x] ($(\baposter@box@name tnw)!{(100-\x)/100}!(\baposter@box@name sw)$) -- ($(\baposter@box@name tnw)!{(100-(\x+10))/100}!(\baposter@box@name sw)$);% + \foreach \x in {0,1,...,90} \draw[color=#1!\x] ($(\baposter@box@name tne)!{(100-\x)/100}!(\baposter@box@name se)$) -- ($(\baposter@box@name tne)!{(100-(\x+10))/100}!(\baposter@box@name se)$);% +} +\newcommand{\baposter@box@drawborder@roundedsmall}[1]{ + \draw[color=#1] \baposterBoxGetShape;% +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Return shape path of text box (depending on the box shape) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These functions take no arguments +% TODO: For headerborder==none, use (\baposter@box@name outer tnw) instead! +\newcommand{\baposter@box@headershape@rectangle}{% + (\baposter@box@name tnw) -- (\baposter@box@name nw) -- % + (\baposter@box@name ne) -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@headershape@smallrounded}{% + (\baposter@box@name tnw) {[src] -- (\baposter@box@name nw) -- % + (\baposter@box@name ne)} -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@headershape@roundedright}{% + (\baposter@box@name tnw) -- (\baposter@box@name nw) {[rc] -- % + (\baposter@box@name ne)} -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@headershape@roundedleft}{% + (\baposter@box@name tnw) {[rc]-- (\baposter@box@name nw)} -- % + (\baposter@box@name ne) -- (\baposter@box@name tne)% +} +\newcommand{\baposter@box@headershape@rounded}{% + (\baposter@box@name tnw) {[rc] -- (\baposter@box@name nw) -- % + (\baposter@box@name ne) } -- (\baposter@box@name tne)% +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Header text drawing (one function for each possible value of headershape) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These functions take one argument: the header text +\newcommand{\baposter@box@headerdrawtext@rectangle}[1]{ + \path (\baposter@box@name nw) +(0em,-0.5\baposter@box@@boxheaderheight) node[anchor=west,inner sep=0.4em] {#1};% +} +\newcommand{\baposter@box@headerdrawtext@smallrounded}[1]{ + \path (\baposter@box@name nw) +(0.5\boxwidth,-0.5\baposter@box@@boxheaderheight) node[anchor=center] {#1};% +} +\newcommand{\baposter@box@headerdrawtext@roundedright}[1]{ + \path (\baposter@box@name nw) +(0em,-0.5\baposter@box@@boxheaderheight)% + node[anchor=west,inner sep=0.4em,text depth=0.0em] {#1};% +} +\newcommand{\baposter@box@headerdrawtext@roundedleft}[1]{ + \path (\baposter@box@name nw) +(0em,-0.5\baposter@box@@boxheaderheight)% + node[anchor=west,inner sep=0.4em] {#1};% +} +\newcommand{\baposter@box@headerdrawtext@rounded}[1]{ + \path (\baposter@box@name nw) +(0.5\boxwidth,-0.5\baposter@box@@boxheaderheight) node[anchor=center] {#1};% +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Header shade options and functions (one function for each possible value) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% These functions take two arguments: headerColorOne, headerColorTwo and borderColor +\newcommand{\baposter@box@headershade@shadelr}[3]{ + \debug{Header-Shade: Shade Left - Right} + \tikzstyle{header colors}=[% + color=#3,% + shading=axis,% + left color=#1,% + right color=#2% + ]% +} +\newcommand{\baposter@box@headershade@shadetb}[3]{ + \debug{Header-Shade: Shade Top - Bottom} + \tikzstyle{header colors}=[% + color=#3,% + shading=axis,% + top color=#1,% + bottom color=#2% + ]% +} +\newcommand{\baposter@box@headershade@shadetbinverse}[3]{ + \tikzstyle{header colors}=[% + top color=#1!75!#2,% + bottom color=#2!100!#1,% + shading angle=20% + ]% + \colorlet{baposterHeaderFontColor}{white}% +} +\newcommand{\baposter@box@headershade@plain}[3]{ + \debug{Header-Shade: Plain} + \tikzstyle{header colors}=[% + color=#3,% + fill=#1% + ]% +} +\newcommand{\baposter@box@headershade@none}[3]{ + \debug{Header-Shade: none} + \tikzstyle{header colors}=[] +} + + +\tikzset{ + rectangle with rounded corners north west/.initial=4pt, + rectangle with rounded corners south west/.initial=4pt, + rectangle with rounded corners north east/.initial=4pt, + rectangle with rounded corners south east/.initial=4pt, +} +%\makeatletter +\pgfdeclareshape{rectangle with rounded corners}{ + \inheritanchorborder[from=rectangle] + \savedmacro{\neoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \let\neoffset\pgf@rectc + } + \savedmacro{\nwoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \let\nwoffset\pgf@rectc + } + \savedmacro{\seoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \let\seoffset\pgf@rectc + } + \savedmacro{\swoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \let\swoffset\pgf@rectc + } + \savedanchor{\north}{ + \pgf@y=.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\south}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \savedanchor{\east}{ + \pgf@y=0pt + \pgf@x=.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + } + \savedanchor{\west}{ + \pgf@y=0pt + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + } + \savedanchor{\northeast}{ + \pgf@y=.5\ht\pgfnodeparttextbox % height of the box + \pgf@x=.5\wd\pgfnodeparttextbox % width of the box + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\southwest}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} +% \pgf@x=0pt + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \anchor{text}{% + \northeast% + \pgf@x=-.5\wd\pgfnodeparttextbox% + \pgfmathsetlength{\pgf@y}{-.5ex} + } + \anchor{north east}{ + \northeast + \pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset} + \addtolength{\pgf@x}{-\nw pt} + \addtolength{\pgf@y}{-\nw pt} + } + \anchor{center}{ + \pgf@x=0pt + \pgf@y=0pt + } + \anchor{south west}{ + \southwest + \pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset} + \addtolength{\pgf@x}{\nw pt} + \addtolength{\pgf@y}{\nw pt} + } + \anchor{north west}{ + \northeast + \pgfmathsetmacro{\temp@x}{\pgf@x} + \southwest + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \northeast + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \ + \pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset} + \def\pgf@xaa{\pgf@xa+\nw} + \def\pgf@yaa{\pgf@y-\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south east}{ + \southwest + \pgfmathsetmacro{\temp@x}{\pgf@x} + \northeast + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \southwest + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset} + \def\pgf@xaa{\pgf@xa-\nw} + \def\pgf@yaa{\pgf@y+\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south}{\south} + \anchor{north}{\north} + \anchor{east}{\east} + \anchor{west}{\west} + \backgroundpath{% this is new + % store lower right in xa/ya and upper right in xb/yb + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + % construct main path + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathclose + } +} +%\makeatother + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The main poster environment +%%% \begin{baposter}{settings}{Eye Catcher}{Title}{Author}{University Logo} +%%%----------------------------------------------------------------------------- +%%% The settings are +%%% - grid=true,[false]:Show grid to help with alignment +%%% - colspacing=0.7em: Column spacing +%%% - columns=4: number of columns (default 4 in landscape and 3 in portrait format) (maximum number is 6) +%%% - color=[orange]: xcolor color definition used as the main color of the poster +%%% - colortwo=[white]: The other color for gradient based layouts +%%% - textborder=none,bars,coils,triangles,rectangle,rounded,roundedsmall,roundedleft,roundedright,[faded] +%%% The style of the box around the text area +%%% - headerborder=none,closed,open +%%% No extra border around box header, full border around box header or border that is open below. +%%% - headershape=rectangle,rounded,roundedleft,roundedright +%%% Shape of the box-header region +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newenvironment{poster}[8]{% + \thispagestyle{empty}% Suppress Page Number + \debug{Poster Starts}% + % This setkeys call parses all provided options and depending on the option + % value, assigns different handler functions to the \baposter(Box|Header)* + % functions. Once that is done, we don't have to care about particular + % values for border, shading, etc. All we have to do is call the + % handler functions and let them do their job. + % This also allows the user to override the poster-wide defaults on a per-box + % basis. + \setkeys[ba]{posterbox,poster}{#1}% +% + % TODO: Move all those assignments to the key macros! + % Parse Keys% + \colorlet{bgColorOne}{\baposter@bgColorOne} + \colorlet{bgColorTwo}{\baposter@bgColorTwo} +% + %% Boxes% + \setlength{\headerheight}{\baposter@headerheight}% + \setlength{\footerheight}{\baposter@footerheight}% + \setlength{\colheight}{\textheight-\baposter@headerheight-\baposter@footerheight}% + \renewcommand{\@@previousbox}{notset} + + \debug{Format}% + % Set default for columns if unset (4 for landscape, 3 for portrait) + \ifthenelse{\equal{\baposter@columns}{}}{% + \renewcommand{\baposter@columns}{\if@landscape4\else3\fi}% + }{} +% + \debug{Columns: \baposter@columns}% + \setlength{\baposter@@colspacing}{\baposter@colspacing}% + \setlength{\colwidth}{\textwidth}% + \addtolength{\colwidth}{\baposter@@colspacing*(1-\baposter@columns)}% + \ifcase\baposter@columns\relax + \error{You need to have at least one column!} + \or % 1 + \setlength{\colwidth}{\colwidth}% + \or % 2 + \setlength{\colwidth}{0.5\colwidth}% + \or % 3 + \setlength{\colwidth}{0.3333333333333\colwidth}% + \or % 4 + \setlength{\colwidth}{0.25\colwidth}% + \or % 5 + \setlength{\colwidth}{0.2\colwidth}% + \or % 6 + \setlength{\colwidth}{0.16666666666\colwidth}% + \else % >6 + \error{You do not want so many columns} + \fi +% + \newcommand{\baposter@reference}{north west}% +% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % A box with a header and some content. The basic unit of the poster% + %---------------------------------------------------------------------------% + % Each box has a name and can be placed absolutely or relatively.% + % The only inconvenience is that you can only specify a relative position % + % towards an already declared box. So if you have a box attached to the % + % bottom, one to the top and a third one which should be inbetween, you % + % have to specify the top and bottom boxes before you specify the middle % + % box.% + %% + % below= name of other node% + % above= name of other node% + % aligned=name of other node% + % bottomaligned=name of other node% + % column= [0] % + % row= [0] % + % span= [1] % + % height= ,[auto]% + % name= [noname]% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % Backward-compatibility definition (\headerbox command uses posterbox env): + \newcommand{\headerbox}[3]{% + \begin{posterbox}[##2]{##1} + ##3 + \end{posterbox} + } + + \newenvironment{posterbox}[2][]{% + \debug{Poster box options: ##1}% + % Override the poster-wide defaults on a per-box basis + \setkeys[ba]{posterbox}{##1}% +% + \def\baposter@box@title{##2} +% + \colorlet{borderColor}{\baposter@box@borderColor} + \colorlet{headerColorOne}{\baposter@box@headerColorOne} + \colorlet{headerColorTwo}{\baposter@box@headerColorTwo} + \colorlet{headerFontColor}{\baposter@box@headerFontColor} + \colorlet{boxColorOne}{\baposter@box@boxColorOne} + \colorlet{boxColorTwo}{\baposter@box@boxColorTwo} +% + \setlength{\baposter@box@@cornerradius}{\baposter@box@cornerradius}% + \setlength{\baposter@box@@boxheaderheight}{\baposter@box@boxheaderheight}% + \setlength{\baposter@box@@boxpadding}{\baposter@box@boxpadding}% + + + %% The columns is always given absolute + % boxstartx = column * colwidth + column * colspacing + \setlength{\boxstartx}{(\colwidth+\baposter@@colspacing)*\baposter@box@column}% +% + %% The width is gvien absolute + % Box Width = span * colwidth + (span-1) * colspacing + \setlength{\boxwidth}{\baposter@box@span\colwidth} % + \addtolength{\boxwidth}{\baposter@@colspacing*(\baposter@box@span-1)}% +% + %% Measure the content of the box% + \setbox\baposter@box@content=\hbox\bgroup% + \begin{pgfinterruptpicture}% + \begin{minipage}[t]{\boxwidth-\baposter@box@@boxpadding*2}% + \baposter@box@textfont\bgroup% + }% End of posterbox preamble + %%% HERE COME THE ACTUAL CONTENTS OF THE HEADERBOX ENVIRONMENT + {% posterbox handling after contents (i.e. drawing everything) + \egroup% + \end{minipage}% + \end{pgfinterruptpicture}% + \egroup% + \setlength{\boxheight}{\ht\baposter@box@content}% + \addtolength{\boxheight}{\dp\baposter@box@content}% + \addtolength{\boxheight}{\baposter@box@@boxheaderheight} % Header% + \addtolength{\boxheight}{2\baposter@box@@boxpadding} % Inner Sep +% + \ifthenelse{\equal{\baposter@box@height}{bottom}}{% + }{\ifthenelse{\equal{\baposter@box@height}{auto}}{% + }{ % Neither auto nor bottom% + \setlength{\boxheight}{\baposter@box@height\colheight}% + }}% +% + %% Determine the box position% + \debug{Setting Coordinates}% + \debug{Upper Right}% + \debug{\baposter@box@name}% +% + %%% Upper Right Corner% + % if below=auto, set it to the previous box + % TODO: We should generalize this to the previous box of the used column, + % currently we use the previous box, which might be in a different column + \ifthenelse{\equal{\baposter@box@below}{auto}}{% + \edef\baposter@box@below{\@@previousbox} + \debug{Box \baposter@box@name has below=auto, placing it below box \baposter@box@below.} + }{} + \xdef\@@previousbox{\baposter@box@name} + + \ifthenelse{\not\equal{\baposter@box@below}{notset} }{% + %% Below% + \debug{Below}% + \path[shape=coordinate] (\boxstartx,0pt |- \baposter@box@below se) ++(0pt,-\baposter@@colspacing) coordinate(\baposter@box@name nw);% + }{% + \ifthenelse{\not\equal{\baposter@box@aligned}{notset} }{% + %% Aligned% + \debug{Aligned: \baposter@box@aligned}% + \path[shape=coordinate] (\boxstartx,0pt |- \baposter@box@aligned nw) coordinate(\baposter@box@name nw);% + }{% + %% Fixed% + \debug{Fixed}% + \setlength{\boxstarty}{\baposter@box@row\colheight}% + \path[shape=coordinate] (\boxstartx,\colheight-\boxstarty) coordinate(\baposter@box@name nw);% + }}% +% + %% Lower Left Corner% + \debug{Lower Left}% + \ifthenelse{\equal{\baposter@box@above}{bottom}}{% + %% Above = Bottom% + \debug{Above bottom}% + \ifthenelse{\equal{\baposter@box@below}{notset} \and \equal{\baposter@box@aligned}{notset}}{% + \path[shape=coordinate] (\boxstartx,\boxheight) coordinate(\baposter@box@name nw);% + }{}% + \path[shape=coordinate] (\boxstartx+\boxwidth,0pt) coordinate(\baposter@box@name se);% + }{\ifthenelse{\not \equal{\baposter@box@bottomaligned}{notset}}{% + \path[shape=coordinate] (\boxstartx+\boxwidth,0pt |- \baposter@box@bottomaligned se) coordinate(\baposter@box@name se);% + }{{\ifthenelse{\not \equal{\baposter@box@above}{notset}}{% + %% Above = Node% + \path[shape=coordinate] (\boxstartx+\boxwidth,0pt |- \baposter@box@above nw) +(0pt,\baposter@@colspacing) coordinate(\baposter@box@name se);% + }{% + %% Above = notset% + \debug{Above=not set}% + \ifthenelse{\equal{\baposter@box@height}{bottom}}{% + %% height=bottom% + \debug{height=bottom}% + \path[shape=coordinate] (\boxstartx+\boxwidth,0pt) coordinate(\baposter@box@name se);% + }{ %% height=auto or fixed% + \debug{height=auto or fixed}% + \path[shape=coordinate] (\baposter@box@name nw) ++(\boxwidth,-\boxheight) coordinate(\baposter@box@name se);% + }}}}}% +% + % + % Set coordinates relative to nw,se% + \debug{Fixing Coordinates}% + \path[shape=coordinate]% + (\baposter@box@name nw) +(0pt,-\baposter@box@@boxheaderheight) coordinate(\baposter@box@name tnw)% + (\baposter@box@name nw |- \baposter@box@name se) coordinate(\baposter@box@name sw)% + (\baposter@box@name se |- \baposter@box@name nw) coordinate(\baposter@box@name ne)% + (\baposter@box@name ne) +(0pt,-\baposter@box@@boxheaderheight) coordinate(\baposter@box@name tne)% +% + (\baposter@box@name nw) +(-0.025em,0pt) coordinate(\baposter@box@name outer nw)% + (\baposter@box@name tnw) +(-0.025em,0pt) coordinate(\baposter@box@name outer tnw)% + (\baposter@box@name sw) +(-0.025em,0pt) coordinate(\baposter@box@name outer sw)% +% + (\baposter@box@name ne) +( 0.025em,0pt) coordinate(\baposter@box@name outer ne)% + (\baposter@box@name tne) +( 0.025em,0pt) coordinate(\baposter@box@name outer tne)% + (\baposter@box@name se) +( 0.025em,0pt) coordinate(\baposter@box@name outer se);% +% + %% Setting the bg colors of the box header + \baposterHeaderSetShade{headerColorOne}{headerColorTwo}{borderColor} +% + \tikzstyle{rc}=[rounded corners=\baposter@box@@cornerradius];% + \tikzstyle{src}=[rounded corners=0.5em];% +% + + %% Now that everything is set up, draw the actual box, with bg and header + \begin{scope}[line width=\baposter@box@linewidth] + %% Header% + \debug{Header}% + \debug{Header-Shape: \baposter@box@headershape, header-border: \baposter@box@headerborder (\baposter@box@headerbordernr)}% + % TODO: Also turn this last ifcase construct into a handler function + % We only need to determine (fill|shade)(draw|)... +% \baposterHeaderDrawBackground{bgColorOne}{bgColorTwo}{borderColor} +% \baposterHeaderDrawBorder{borderColor} + \ifcase\baposter@box@headerbordernr\relax% + % open + \ifthenelse{\equal{\baposter@box@headershade}{plain}}{ + \filldraw [style=header colors] \baposterHeaderGetShape;% + }{ + \shadedraw [style=header colors] \baposterHeaderGetShape;% + } + \or + % closed + \ifthenelse{\equal{\baposter@box@headershade}{plain}}{ + \filldraw [style=header colors] \baposterHeaderGetShape -- cycle;% + }{ + \shadedraw [style=header colors] \baposterHeaderGetShape -- cycle;% + } + \or + % none + \ifthenelse{\equal{\baposter@box@headershade}{plain}}{ + \fill [style=header colors] \baposterHeaderGetShape;% + }{ + \shade [style=header colors] \baposterHeaderGetShape;% + } + \fi + % + %% Draw the text inside the box header: + \baposterHeaderDrawText{\color{headerFontColor}\baposter@box@headerfont{\baposter@box@title}};% + % + %% Text borders (border around boxes) + \debug{Poster boxes}% + % First set box shade + \baposterBoxDrawBackground{boxColorOne}{boxColorTwo} + \baposterBoxDrawBorder{borderColor} + %% + %% Text Box% + \debug{Drawing Text}% + \path (\baposter@box@name tnw) node(text) [anchor=north west, + outer sep=-0.000em,text width=\boxwidth-2\baposter@box@@boxpadding,inner sep=\baposter@box@@boxpadding, + text justified] {\usebox{\baposter@box@content}};% + \end{scope} + % + % Finally store the box name as the previous box for the next call +% \xdef\@@previousbox{\baposter@box@name}% + }% END of posterbox definition +% + %% Poster Background% + \baposterPosterDrawBackground{bgColorOne}{bgColorTwo}% + %% Poster header/title + \hspace{-1.5em}% + \begin{tikzpicture}[inner sep=0pt,outer sep=0pt,line width=0.05em]% + \useasboundingbox (0em,0em) rectangle(\textwidth,\textheight-\footerheight);% + \path[shape=coordinate]% + (0pt,\colheight) coordinate(north west) (\textwidth,\colheight) coordinate(north east)% + (0pt,0pt) coordinate(south west) (\textwidth,0pt) coordinate(south east);% +% + \ifbaposter@eyecatcher% Has eye catcher + \debug{Eyecatcher found!} + \setbox\baposter@titleimage@left=\hbox{#2}% + \else% Has no eye catcher% + \setbox\baposter@titleimage@left=\hbox{}% + \fi% + \setlength{\baposter@titleimage@left@width}{\wd\baposter@titleimage@left}% + \setbox\baposter@titleimage@right=\hbox{#5}% + \setlength{\baposter@titleimage@right@width}{\wd\baposter@titleimage@right}% + \setlength{\baposter@titleimage@textwidth}{\textwidth}% + \addtolength{\baposter@titleimage@textwidth}{-\baposter@titleimage@left@width}% + \addtolength{\baposter@titleimage@textwidth}{-\baposter@titleimage@right@width}% + + \debug{#3} + % + % + % % Draw Header% + \node[ +anchor=south west, + draw=none, + fill=white, + shape=rectangle, + minimum height=\headerheight+\baposter@basemargin-\baposter@colspacing, minimum width=\textwidth +\baposter@basemarginleft +\baposter@basemarginright, +] at ($(north west)+(-\baposter@basemarginleft,\baposter@colspacing)$) (b) {}; +\node[ +anchor=south west, + draw=unibablueI, + thin, + fill=unibablueI, + shape=rectangle with rounded corners, + minimum height=\headerheight+\baposter@basemargin-\baposter@colspacing, minimum width=\textwidth +\baposter@basemarginleft +\baposter@basemarginright, + rectangle with rounded corners north west=0pt, + rectangle with rounded corners south west=0pt, + rectangle with rounded corners north east=40pt, + rectangle with rounded corners south east=0pt, +] at ($(north west)+(-\baposter@basemarginleft,\baposter@colspacing)$) (b) {}; +\draw (north west) +(\baposter@basemarginleft-2em,\baposter@colspacing+0.5\headerheight) node(image)[anchor=west] { {\usebox{\baposter@titleimage@left }} };% + \draw (north east) +(\baposter@basemarginright-1.5em,\baposter@colspacing+0.4em+0.5\headerheight) node(logo) [anchor=east] { {\usebox{\baposter@titleimage@right}} };% + % + \ifbaposter@eyecatcher% Has eye catcher% + \draw (image.east) node(title)[anchor=west,text width=\baposter@titleimage@textwidth]{% + \begin{minipage}{\baposter@titleimage@textwidth}% + \begin{center}% + #3\\[.7em]% + {#4}% + \end{center}% + \end{minipage} + };% + \else% Has no eye catcher + % + \draw (image.east) node(title)[anchor=west] { {\begin{minipage}{\baposter@titleimage@textwidth}{ #3}\\[1cm]{ #4}\end{minipage}} };% + \fi + %Draw Footer + \node[ +anchor=south west, + draw=none, + fill=unibagrayIV, + shape=rectangle with rounded corners, + minimum height=\footerheight+\baposter@basemargin-\baposter@colspacing, minimum width=\textwidth +\baposter@basemarginleft +\baposter@basemarginright, + rectangle with rounded corners north west=0pt, + rectangle with rounded corners south west=0pt, + rectangle with rounded corners north east=0pt, + rectangle with rounded corners south east=0pt, +] at ($(0,0)-(\baposter@basemarginleft,\baposter@basemargin+\baposter@footerheight)$) (b) {}; +\draw[unibagrayI,ultra thick] (b.north west) -- (b.north east); +\draw (b.center) node(footer)[anchor=center] { #7 }; +\draw ($(b.west)+(\baposter@basemarginleft+\baposter@colspacing,0)$) node(footer)[anchor=west] { #6 }; +\draw ($(b.east)-(\baposter@basemarginright+\baposter@colspacing,0)$) node(footer)[anchor=east] { #8 }; + }% END poster begin +% The body + {% BEGIN poster end + % The end, draw gridlines if neccesary + \ifbaposter@grid + \newdimen{\gridpos} + \pgfmathsetmacro{\z}{\baposter@columns-1} + \foreach \y in {0,...,\z} + { + \setlength{\gridpos}{\y\colwidth+\y\baposter@@colspacing} + \draw[draw=green,draw opacity=0.7] (\gridpos,0pt) -- (\gridpos,\colheight) + (\gridpos+\colwidth,0pt) -- (\gridpos+\colwidth,\colheight);% + } + % Horizontal lines, every 0.1: + %% Explicitly list all percentages, because with {0.0, 0.1, ..., 1.0} we + %% get rounding errors in the displayed numbers! + \foreach \y in {0.0, 0.05, 0.1, ..., 1.05} + \draw[draw=green,draw opacity=0.7] (0pt,\colheight-\y\colheight) -- + (\textwidth,\colheight-\y\colheight) node[anchor=center] {\pgfmathprintnumber[fixed,precision=2]{\y}};% + \fi% + \end{tikzpicture}% + % \xkvview{} + \par + }% END poster end diff --git a/meta/style/beamerthemeUniBa169.sty b/meta/style/beamerthemeUniBa169.sty new file mode 100644 index 0000000..13c9d1a --- /dev/null +++ b/meta/style/beamerthemeUniBa169.sty @@ -0,0 +1,315 @@ +%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester +\usetheme[hideothersubsections]{Goettingen} + +\RequirePackage{pgf} +\RequirePackage{tikz} +\RequirePackage{pdfrender} + +\tikzset{ + rectangle with rounded corners north west/.initial=4pt, + rectangle with rounded corners south west/.initial=4pt, + rectangle with rounded corners north east/.initial=4pt, + rectangle with rounded corners south east/.initial=4pt, +} +%\makeatletter +\pgfdeclareshape{rectangle with rounded corners}{ + \inheritanchorborder[from=rectangle] + \savedmacro{\neoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \let\neoffset\pgf@rectc + } + \savedmacro{\nwoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \let\nwoffset\pgf@rectc + } + \savedmacro{\seoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \let\seoffset\pgf@rectc + } + \savedmacro{\swoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \let\swoffset\pgf@rectc + } + \savedanchor{\north}{ + \pgf@y=.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\south}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \savedanchor{\east}{ + \pgf@y=0pt + \pgf@x=.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + } + \savedanchor{\west}{ + \pgf@y=0pt + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + } + \savedanchor{\northeast}{ + \pgf@y=.5\ht\pgfnodeparttextbox % height of the box + \pgf@x=.5\wd\pgfnodeparttextbox % width of the box + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\southwest}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} +% \pgf@x=0pt + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \anchor{text}{% + \northeast% + \pgf@x=-.5\wd\pgfnodeparttextbox% + \pgfmathsetlength{\pgf@y}{-.5ex} + } + \anchor{north east}{ + \northeast + \pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset} + \addtolength{\pgf@x}{-\nw pt} + \addtolength{\pgf@y}{-\nw pt} + } + \anchor{center}{ + \pgf@x=0pt + \pgf@y=0pt + } + \anchor{south west}{ + \southwest + \pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset} + \addtolength{\pgf@x}{\nw pt} + \addtolength{\pgf@y}{\nw pt} + } + \anchor{north west}{ + \northeast + \pgfmathsetmacro{\temp@x}{\pgf@x} + \southwest + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \northeast + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \ + \pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset} + \def\pgf@xaa{\pgf@xa+\nw} + \def\pgf@yaa{\pgf@y-\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south east}{ + \southwest + \pgfmathsetmacro{\temp@x}{\pgf@x} + \northeast + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \southwest + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset} + \def\pgf@xaa{\pgf@xa-\nw} + \def\pgf@yaa{\pgf@y+\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south}{\south} + \anchor{north}{\north} + \anchor{east}{\east} + \anchor{west}{\west} + \backgroundpath{% this is new + % store lower right in xa/ya and upper right in xb/yb + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + % construct main path + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathclose + } +} + +\pgfdeclareimage[width=1.4em]{uniheader}{\meta/config/images/logo} +\pgfdeclareimage[width=2.8em]{uniheadertitle}{\meta/config/images/logo} +\setbeamertemplate{blocks}[shadow=false] +\setbeamercovered{transparent} + +\beamer@headheight=0.1\paperheight + +\setbeamercolor*{Title bar}{fg=unibablueI} +\setbeamercolor*{Location bar}{fg=unibablueI,bg=white} +\setbeamercolor*{frametitle}{parent=Title bar} +\setbeamercolor*{block title}{bg=unibablueI,fg=white} +\setbeamercolor*{block body}{bg=unibagrayV,fg=black} +\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white} +\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black} +\setbeamercolor*{block title example}{bg=unibayellowII,fg=black} +\setbeamercolor*{block body example}{bg=unibayellowV,fg=black} +\setbeamercolor*{normal text}{bg=white,fg=black} +\setbeamercolor*{alerted text}{fg=nounibaredII} +\setbeamercolor*{section in head/foot}{fg=unibablueI} +\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV} + +\usecolortheme[named=unibablueI]{structure} + +\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont} +\setbeamerfont{frametitle}{size=\large} + +\setbeamertemplate{title page}{ +\begin{tikzpicture}[remember picture,overlay] +\node[ +anchor=south east, + draw=unibablueV, + thin, + fill=unibablueV, + shape=rectangle with rounded corners, + minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm, + rectangle with rounded corners north west=0pt, + rectangle with rounded corners south west=0pt, + rectangle with rounded corners north east=18pt, + rectangle with rounded corners south east=0pt, +] at ($(current page.south east)+(-.1,.1)$) (b) {}; +\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} }; +%\draw[unibablueI] node(uniba) [below of=logo, anchor=center]{\scriptsize\unibastring}; +\end{tikzpicture} +\vskip-0.3\beamer@headheight + \begin{beamercolorbox}[sep=8pt]{institute} + \usebeamerfont{institute}\insertinstitute + \end{beamercolorbox} + \vskip2em\par + \begin{beamercolorbox}[sep=16pt]{title} + \usebeamerfont{title}\inserttitle\par% + \ifx\insertsubtitle\@empty% + \else% + \vskip0.25em% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \fi% + \end{beamercolorbox}% + \vskip2em\par + \begin{beamercolorbox}[sep=16pt]{date} + \usebeamerfont{date}\insertdate + \end{beamercolorbox}\vskip-0.5em + \begin{beamercolorbox}[sep=16pt]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \vfill +} + + +\setbeamertemplate{frametitle} +{ +\ifx\insertframesubtitle\empty + \vskip+0.1cm + \usebeamerfont*{frametitle}\insertframetitle + \vskip+0.15cm +\else + \usebeamerfont*{frametitle}\insertframetitle + \vskip+0.1cm + \hskip+0.5cm\usebeamerfont*{framesubtitle}\insertframesubtitle + \vskip+0.15cm +\fi +} + +%\setbeamertemplate{headline} +%{ +% \vskip -\beamer@headheight +% \linethickness{0pt} +% \framelatex{ +% \begin{beamercolorbox}[wd=\paperwidth,ht=\beamer@headheight]{Title bar} +% \usebeamerfont{section in head/foot} +% %\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}% +% \end{beamercolorbox}} +%} + +\setbeamertemplate{footline} +{ +\begin{tikzpicture}[remember picture, overlay] +\draw[thick, unibablueI] ($(current page.south west)+(.1,0.37\beamer@headheight)$) -- ($(current page.south east)+(-.1,0.37\beamer@headheight)$); +\end{tikzpicture} + + \linethickness{0pt} + \framelatex{ + \begin{beamercolorbox}[leftskip=0.2cm, rightskip=0.2cm, wd=\paperwidth,ht=0.35\beamer@headheight,sep=0.05cm]{Location bar} + \usebeamerfont{section in head/foot}% + \begin{tikzpicture}[remember picture, overlay] + \node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute}; + \node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi}; + \node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber}; + \end{tikzpicture} + \end{beamercolorbox}} +} + +\setbeamertemplate{sidebar canvas \beamer@sidebarside}[vertical shading] + [top=white,bottom=white] + +\setbeamertemplate{sidebar \beamer@sidebarside} + { + \begin{tikzpicture}[remember picture,overlay] +\node[ +anchor=south east, + draw=unibablueV, + thin, + fill=unibablueV, + shape=rectangle with rounded corners, + minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm, + rectangle with rounded corners north west=0pt, + rectangle with rounded corners south west=0pt, + rectangle with rounded corners north east=18pt, + rectangle with rounded corners south east=0pt, +] at ($(current page.south east)+(-.1,.1)$) (b) {}; +\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} }; +\end{tikzpicture} + \vskip12em% + \hskip1em\insertverticalnavigation{\beamer@sidebarwidth}% + \vfill + \ifx\beamer@sidebarside\beamer@lefttext% + \else% + \usebeamercolor{normal text}% + \llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}% + \vskip2pt% + \fi% + % + + \ifx\beamer@sidebarside\beamer@lefttext% + \defbeamertemplate*{sidebar right}{sidebar theme} + {% + \vfill% + \llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}% + \vskip2pt} + \fi + } diff --git a/meta/style/beamerthemeUniBa43.sty b/meta/style/beamerthemeUniBa43.sty new file mode 100644 index 0000000..c3d969e --- /dev/null +++ b/meta/style/beamerthemeUniBa43.sty @@ -0,0 +1,250 @@ +%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester +\usetheme{Rochester} + +\RequirePackage{pgf} +\RequirePackage{tikz} + +\tikzset{ + rectangle with rounded corners north west/.initial=4pt, + rectangle with rounded corners south west/.initial=4pt, + rectangle with rounded corners north east/.initial=4pt, + rectangle with rounded corners south east/.initial=4pt, +} +%\makeatletter +\pgfdeclareshape{rectangle with rounded corners}{ + \inheritanchorborder[from=rectangle] + \savedmacro{\neoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \let\neoffset\pgf@rectc + } + \savedmacro{\nwoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \let\nwoffset\pgf@rectc + } + \savedmacro{\seoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \let\seoffset\pgf@rectc + } + \savedmacro{\swoffset}{ + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \let\swoffset\pgf@rectc + } + \savedanchor{\north}{ + \pgf@y=.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\south}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=0pt + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \savedanchor{\east}{ + \pgf@y=0pt + \pgf@x=.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + } + \savedanchor{\west}{ + \pgf@y=0pt + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + } + \savedanchor{\northeast}{ + \pgf@y=.5\ht\pgfnodeparttextbox % height of the box + \pgf@x=.5\wd\pgfnodeparttextbox % width of the box + \addtolength{\pgf@x}{2ex} + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x<.5\pgf@xa + \pgf@x=.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y<.5\pgf@ya + \pgf@y=.5\pgf@ya + \fi + } + \savedanchor{\southwest}{ + \pgf@y=-.5\ht\pgfnodeparttextbox + \pgf@x=-.5\wd\pgfnodeparttextbox + \addtolength{\pgf@x}{-2ex} +% \pgf@x=0pt + \setlength{\pgf@xa}{\pgfshapeminwidth} + \ifdim\pgf@x>-.5\pgf@xa + \pgf@x=-.5\pgf@xa + \fi + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@y>-.5\pgf@ya + \pgf@y=-.5\pgf@ya + \fi + } + \anchor{text}{% + \northeast% + \pgf@x=-.5\wd\pgfnodeparttextbox% + \pgfmathsetlength{\pgf@y}{-.5ex} + } + \anchor{north east}{ + \northeast + \pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset} + \addtolength{\pgf@x}{-\nw pt} + \addtolength{\pgf@y}{-\nw pt} + } + \anchor{center}{ + \pgf@x=0pt + \pgf@y=0pt + } + \anchor{south west}{ + \southwest + \pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset} + \addtolength{\pgf@x}{\nw pt} + \addtolength{\pgf@y}{\nw pt} + } + \anchor{north west}{ + \northeast + \pgfmathsetmacro{\temp@x}{\pgf@x} + \southwest + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \northeast + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \ + \pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset} + \def\pgf@xaa{\pgf@xa+\nw} + \def\pgf@yaa{\pgf@y-\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south east}{ + \southwest + \pgfmathsetmacro{\temp@x}{\pgf@x} + \northeast + \pgfmathsetmacro{\temp@xtwo}{\pgf@x} + \southwest + \pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo} + \def\pgf@xa{\pgf@x-\xdiff} + \pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset} + \def\pgf@xaa{\pgf@xa-\nw} + \def\pgf@yaa{\pgf@y+\nw} + \pgfpoint{\pgf@xaa}{\pgf@yaa} + } + \anchor{south}{\south} + \anchor{north}{\north} + \anchor{east}{\east} + \anchor{west}{\west} + \backgroundpath{% this is new + % store lower right in xa/ya and upper right in xb/yb + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + % construct main path + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}} + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}} + \pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc} + \pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}} + \pgfpathclose + } +} +%\makeatother + +\pgfdeclareimage[width=0.115\textwidth]{uniheader}{\meta/config/images/logow} + +\setbeamertemplate{blocks}[shadow=false] +\setbeamercovered{transparent} + +\beamer@headheight=0.13\paperwidth + +\setbeamercolor*{Title bar}{fg=white} +\setbeamercolor*{Location bar}{fg=unibablueI,bg=unibagrayV} +\setbeamercolor*{frametitle}{parent=Title bar} +\setbeamercolor*{block title}{bg=unibablueI,fg=white} +\setbeamercolor*{block body}{bg=unibagrayV,fg=black} +\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white} +\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black} +\setbeamercolor*{block title example}{bg=unibayellowII,fg=black} +\setbeamercolor*{block body example}{bg=unibayellowV,fg=black} +\setbeamercolor*{normal text}{bg=white,fg=black} +\setbeamercolor*{alerted text}{fg=nounibaredII} +\setbeamercolor*{section in head/foot}{bg=unibablueI,fg=white} +\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV} + +\usecolortheme[named=nounibagreenII]{structure} + +\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont} +\setbeamerfont{frametitle}{size=\large} + +\setbeamertemplate{frametitle} +{ + \vskip-0.3\beamer@headheight + \vskip-\baselineskip + \vskip-0.2cm + \hskip-0.5cm\usebeamerfont*{frametitle}\insertframetitle + \vskip+0.1cm + \hskip-0.25cm\usebeamerfont*{framesubtitle}\insertframesubtitle + \vskip+0.15cm +} + +\setbeamertemplate{headline} +{ + +\begin{tikzpicture} +\node[ +anchor=south west, + draw=unibablueI, + thin, + fill=unibablueI, + shape=rectangle with rounded corners, + minimum height=\beamer@headheight, minimum width=\textwidth, + rectangle with rounded corners north west=0pt, + rectangle with rounded corners south west=0pt, + rectangle with rounded corners north east=25pt, + rectangle with rounded corners south east=0pt, +] at (0,0) (b) {}; +\draw (b.east) +(-.7em,0) node(logo) [anchor=east] { \pgfuseimage{uniheader} }; +\draw[white] node(uniba) [left of=logo, anchor=east]{\scriptsize\uni}; +\end{tikzpicture} + + \vskip -1.75cm + \linethickness{0pt} + + \framelatex{ + \begin{beamercolorbox}[wd=\paperwidth,ht=0.3\beamer@headheight]{Title bar} + \usebeamerfont{section in head/foot}% + \insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}% + \end{beamercolorbox}} + + \framelatex{ + \begin{beamercolorbox}[wd=\paperwidth,ht=0.7\beamer@headheight]{Title bar} + \end{beamercolorbox}} +} + +\setbeamertemplate{footline} +{ + \linethickness{0.2pt} + \framelatex{ + \begin{beamercolorbox}[leftskip=.3cm,wd=\paperwidth,ht=0.25\beamer@headheight,sep=0.1cm]{Location bar} + \usebeamerfont{section in head/foot}% + \begin{tikzpicture}[remember picture, overlay] + \node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute}; + \node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi}; + \node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber}; + \end{tikzpicture} + \end{beamercolorbox}} +} diff --git a/meta/style/gitexinfo.sty b/meta/style/gitexinfo.sty new file mode 100644 index 0000000..0f80141 --- /dev/null +++ b/meta/style/gitexinfo.sty @@ -0,0 +1,138 @@ +% gitexinfo.sty +% Copyright 2015 Brent Longborough +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Brent Longborough. +% +% This work consists of these files: +% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf, +% gitinfo2test.tex, post-xxx-sample.txt, +% and gitHeadLocal.gin +% ----------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{gitexinfo}[2015/11/22 v2.0.7 Auxiliary package for gitinfo2] +\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@} +\DeclareStringOption{shash} +\DeclareStringOption{lhash} +\DeclareStringOption{authname} +\DeclareStringOption{authemail} +\DeclareStringOption{authsdate} +\DeclareStringOption{authidate} +\DeclareStringOption{authudate} +\DeclareStringOption{commname} +\DeclareStringOption{commemail} +\DeclareStringOption{commsdate} +\DeclareStringOption{commidate} +\DeclareStringOption{commudate} +\DeclareStringOption{refnames} +\DeclareStringOption{firsttagdescribe} +\DeclareStringOption{reltag} +\ProcessKeyvalOptions* +\renewcommand{\gitAbbrevHash}{\gitInf@shash} +\renewcommand{\gitHash}{\gitInf@lhash} +\renewcommand{\gitAuthorName}{\detokenize\expandafter{\gitInf@authname}} +\renewcommand{\gitAuthorEmail}{\gitWrapEmail{\gitInf@authemail}} +\renewcommand{\gitAuthorDate}{\gitInf@authsdate} +\renewcommand{\gitAuthorIsoDate}{\gitInf@authidate} +\renewcommand{\gitAuthorUnixDate}{\gitInf@authudate} +\renewcommand{\gitCommitterName}{\detokenize\expandafter{\gitInf@commname}} +\renewcommand{\gitCommitterEmail}{\gitWrapEmail{\gitInf@commemail}} +\renewcommand{\gitCommitterDate}{\gitInf@commsdate} +\renewcommand{\gitCommitterIsoDate}{\gitInf@commidate} +\renewcommand{\gitCommitterUnixDate}{\gitInf@commudate} +\renewcommand{\gitFirstTagDescribe}{\detokenize\expandafter{\gitInf@firsttagdescribe}} +\renewcommand{\gitReferences}{\detokenize\expandafter{\gitInf@refnames}} +\newcommand{\git@vtag}[1]{% + \def\do##1{% + \StrCut{##1}{tag: }\lcut\rcut% + \IfEq{\rcut}{}{% + \IfDecimal{\lcut}{% case where we have decimal e.g. 1.0 + \renewcommand{\gitVtag}{\lcut} + \renewcommand{\gitVtags}{\space\lcut} + \renewcommand{\gitVtagn}{\space\lcut} + \listbreak + }{}% + }{% + \IfDecimal\rcut{% case where we have string: decimal e.g. tag: 1.0 + \renewcommand{\gitVtag}{\rcut} + \renewcommand{\gitVtags}{\space\rcut} + \renewcommand{\gitVtagn}{\space\rcut} + \listbreak + }{}% + }% + }% + \expandafter\docsvlist\expandafter{#1}% + \StrDel{#1}{(}[\bcut]% + \StrDel{\bcut}{)}[\bcut]% + \IfSubStr{\bcut}{->}{% git version 2+? + \StrBetween{\bcut,}{HEAD -> }{,}[\bcut]% yes - no problem + }{% + \StrCount{\bcut}{, }[\xcut]% + \IfEq{\xcut}{0}{% detached head? + }{% no + \StrCut[\xcut]{\bcut}{, }{\lcut}{\bcut}% git vv < 2 - take last token + }% (not always accurate) + } + \IfEq{\bcut}{}{}{% + \IfEq{\bcut}{HEAD}{% detached head? + }{% no - we have the branch name + \renewcommand{\gitBranch}{\detokenize\expandafter{\bcut}}% + }% + }% +}% +\newcommand{\git@taglist}[1]{% + \def\do##1{% + \StrCut{##1}{tag: }\llcut\rrcut% + \IfEq{\rrcut}{}{% + \IfDecimal{\llcut}{% case where we have decimal e.g. 1.0 + \StrGobbleLeft{\gitTags,\space\llcut}{0}[\gitTags] + }{}% + }{% + \StrGobbleLeft{\gitTags,\space\rrcut}{0}[\gitTags] + }% + }% + \expandafter\docsvlist\expandafter{#1}% + \StrGobbleLeft{\gitTags}{2}[\gitTags] +}% +\newcommand{\git@rtag}[1]{% + \IfEq{#1}{}{}{% + \StrRight{#1}{2}[\gitInf@dirtflag] + \StrDel{#1}{-*}[\gitInf@describe] + \IfEq{\gitInf@dirtflag}{-*}{\renewcommand{\gitDirty}{\gitInf@dirty}}{} + \StrGobbleRight{\gitInf@describe}{9}[\gitInf@describe]% Remove -g + \StrCount{\gitInf@describe}{-}[\gitInf@mcount]% Find last - + \StrCut[\gitInf@mcount]{\gitInf@describe}{-}{\gitInf@rel}{\gitInf@off} + \renewcommand{\gitRel}{\detokenize\expandafter{\gitInf@rel}} + \renewcommand{\gitRels}{\space\gitRel} + \renewcommand{\gitReln}{\space\gitRel} + \renewcommand{\gitRoff}{\gitInf@off} + \renewcommand{\gitDescribe}{#1} + }% +}% +\git@vtag{\gitInf@refnames} +\git@taglist{\gitInf@refnames} +\git@rtag{\gitInf@reltag} +\newcommand{\git@tagmark}{} +\IfEq{\gitTags}{}{% + \renewcommand{\gitTags}{\gitInf@notags} + \ifbool{gitInf@marknotags}{% + \renewcommand{\git@tagmark}{\\Head tags: \gitTags} + }{% + } +}{% + \renewcommand{\git@tagmark}{\\Head tags: \gitTags} +} +\renewcommand{\gitMark}{% + Branch: \gitBranch\,@\,\gitAbbrevHash{} + \textbullet{} + Release:\gitReln{} + (\gitAuthorDate)\git@tagmark% + } diff --git a/meta/style/gitinfo2-hook.txt b/meta/style/gitinfo2-hook.txt new file mode 100644 index 0000000..ec305c9 --- /dev/null +++ b/meta/style/gitinfo2-hook.txt @@ -0,0 +1,34 @@ +#!/bin/sh +# Copyright 2015 Brent Longborough +# Part of gitinfo2 package Version 2 +# Release 2.0.7 2015-11-22 +# Please read gitinfo2.pdf for licencing and other details +# ----------------------------------------------------- +# Post-{commit,checkout,merge} hook for the gitinfo2 package +# .git/hooks/post-checkout +# .git/hooks/post-commit +# .git/hooks/post-merge +# +# Get the first tag found in the history from the current HEAD +FIRSTTAG=$(git describe --tags --always --dirty='-*' 2>/dev/null) +# Get the first tag in history that looks like a Release +RELTAG=$(git describe --tags --long --always --dirty='-*' --match '[0-9]*.*' 2>/dev/null) +# Hoover up the metadata +git --no-pager log -1 --date=short --decorate=short \ + --pretty=format:"\usepackage[% + shash={%h}, + lhash={%H}, + authname={%an}, + authemail={%ae}, + authsdate={%ad}, + authidate={%ai}, + authudate={%at}, + commname={%cn}, + commemail={%ce}, + commsdate={%cd}, + commidate={%ci}, + commudate={%ct}, + refnames={%d}, + firsttagdescribe={$FIRSTTAG}, + reltag={$RELTAG} + ]{gitexinfo}" HEAD > .git/gitHeadInfo.gin diff --git a/meta/style/gitinfo2.sty b/meta/style/gitinfo2.sty new file mode 100644 index 0000000..29a9491 --- /dev/null +++ b/meta/style/gitinfo2.sty @@ -0,0 +1,218 @@ +% gitinfo2.sty +% Copyright 2015 Brent Longborough +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% The Current Maintainer of this work is Brent Longborough. +% +% This work consists of these files: +% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf, +% gitinfo2test.tex, post-xxx-sample.txt, +% and gitHeadLocal.gin +% ----------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{gitinfo2}[2015/11/22 v2.0.7 git revision information] +\RequirePackage{etoolbox} +\RequirePackage{xstring} +\RequirePackage{kvoptions} +\RequirePackage{eso-pic} +\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@} +\DeclareBoolOption{draft} +\DeclareBoolOption{grumpy} +\DeclareBoolOption{local} +\DeclareBoolOption{pcount} +\DeclareBoolOption{footinfo} +\DeclareBoolOption{mark} +\DeclareBoolOption{markifdraft} +\DeclareBoolOption{markifdirty} +\DeclareBoolOption{marknotags} +\DeclareStringOption[(None)]{missing} +\DeclareStringOption[(None)]{notags} +\DeclareStringOption[(*)]{dirty} +\DeclareStringOption[4]{maxdepth} +\DeclareStringOption[1.5\baselineskip]{raisemark} +\ProcessKeyvalOptions* +\newcommand{\gitAbbrevHash}{\gitInf@missing} +\newcommand{\gitHash}{\gitInf@missing} +\newcommand{\gitAuthorName}{\gitInf@missing} +\newcommand{\gitAuthorEmail}{\gitInf@missing} +\newcommand{\gitAuthorDate}{\gitInf@missing} +\newcommand{\gitAuthorIsoDate}{\gitInf@missing} +\newcommand{\gitAuthorUnixDate}{\gitInf@missing} +\newcommand{\gitCommitterName}{\gitInf@missing} +\newcommand{\gitCommitterEmail}{\gitInf@missing} +\newcommand{\gitCommitterDate}{\gitInf@missing} +\newcommand{\gitCommitterIsoDate}{\gitInf@missing} +\newcommand{\gitCommitterUnixDate}{\gitInf@missing} +\newcommand{\gitTags}{} +\newcommand{\gitFirstTagDescribe}{\gitInf@missing} +\newcommand{\gitReferences}{\gitInf@missing} +\newcommand{\gitBranch}{\gitInf@missing} +\newcommand{\gitVtag}{} +\newcommand{\gitVtags}{} +\newcommand{\gitVtagn}{\space\gitInf@missing} +\newcommand{\gitRel}{} +\newcommand{\gitRels}{} +\newcommand{\gitReln}{\space\gitInf@missing} +\newcommand{\gitDirty}{} +\newcommand{\gitRoff}{} +\newcommand{\gitDescribe}{(None)} +\newcommand{\gitMarkPref}{[git]} +\@ifpackageloaded{xcolor}{% + \newcommand{\gitMarkFormat}{\color{gray}\small\sffamily}% +}{% + \newcommand{\gitMarkFormat}{\small\sffamily}% +} +\newcommand{\gitMark}{} +\newcommand{\gitWrapEmail}[1]{#1} +% private values +\newif\ifGI@is@a@repo@ + +% private constants +\providecommand{\GI@repo@prefix}{} +\ifbool{gitInf@local}{% + \providecommand{\GI@githeadinfo@file}{gitHeadLocal.gin} + \def\gitInf@maxdepth{0} +}{% + \providecommand{\GI@githeadinfo@file}{\GI@repo@prefix.git/gitHeadInfo.gin} +} +\newcommand{\gitInf@dirtflag}{} +\newcommand{\gitInf@describe}{} +\newcommand{\gitInf@mcount}{} +\newcommand{\gitInf@rel}{} +\newcommand{\gitInf@off}{} + +% \TeX{}nical tools + +\newcommand\GI@export@macro[1]{% + \edef\@tempa{\endgroup + \def\noexpand#1{#1}}% + \@tempa} + +% finding the .git directory + +\newcommand\GI@check@repo@prefix{% + \GI@is@a@repo@true + \IfFileExists{./\GI@githeadinfo@file}{% + \edef\GI@repo@prefix{./}% + }{% + \GI@set@repo@prefix}} + +\newcommand\GI@set@repo@prefix{% + \begingroup \count@\gitInf@maxdepth\relax + \GI@set@repo@prefix@} + +\newcommand\GI@set@repo@prefix@{% + \advance\count@\m@ne + \ifnum\count@<\z@ + % \expandafter\GI@not@a@git@repo + \endgroup\relax + \else + \edef\GI@repo@prefix{../\GI@repo@prefix}% + \IfFileExists{\GI@githeadinfo@file}{% + \PackageInfo{gitinfo2}{% + gitinfo2 found : \GI@githeadinfo@file \MessageBreak + }% + \GI@export@macro\GI@githeadinfo@file + }{% + \expandafter\GI@set@repo@prefix@}% + \fi} + +\GI@check@repo@prefix +\InputIfFileExists{\GI@githeadinfo@file}{}{% + \ifbool{gitInf@grumpy}{% + \PackageError{gitinfo2}{I can't find the file '\GI@githeadinfo@file'\MessageBreak + Please check the manual (gitinfo2.pdf) \MessageBreak + if you need more details}{} + }{% + \PackageWarningNoLine{gitinfo2}{I can't find the file '\GI@githeadinfo@file'.\MessageBreak + All git metadata has been set to '\gitInf@missing'} + } +} +% --------------------------------------------------------------------- +% Memoir support +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\@ifclassloaded{memoir}{% + \ifbool{gitInf@pcount}{ + \newcommand{\@gitPage}{\thepage/\thelastpage} + \addtodef{\frontmatter}{\renewcommand{\@gitPage}{\thepage}}{} + \addtodef{\mainmatter}{}{\renewcommand{\@gitPage}{\thepage/\thelastpage}} + }{% + \newcommand{\@gitPage}{\thepage} + } + \newcommand{\@gitFootRev}{Release\gitRels: \gitAbbrevHash{} (\gitAuthorDate)} + \newcommand{\@gitrFootRev}{% + \tiny\textsf{\raggedleft \@gitFootRev}% + }% + \newcommand{\@gitlFootRev}{% + \tiny\textsf{\@gitFootRev}% + }% + \copypagestyle{giplain}{plain} + \copypagestyle{giruled}{ruled} + \copypagestyle{giheadings}{headings} + \makeevenfoot{giplain}{\@gitPage}{}{\@gitrFootRev} + \makeoddfoot{giplain}{\@gitlFootRev}{}{\@gitPage} + \makeevenfoot{giruled}{\@gitPage}{}{\@gitrFootRev} + \makeoddfoot{giruled}{\@gitlFootRev}{}{\@gitPage} + \makeevenfoot{giheadings}{\@gitPage}{}{\@gitrFootRev} + \makeoddfoot{giheadings}{\@gitlFootRev}{}{\@gitPage} + \makeevenhead{giheadings}{}{}{\slshape\leftmark} + \makeoddhead{giheadings}{\slshape\rightmark}{}{} +}{}% +% --------------------------------------------------------------------- +% Watermarking +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\ifbool{gitInf@markifdirty}{% + \IfEq{\gitDirty}{}{}{% + \booltrue{gitInf@mark} + \renewcommand{\gitMarkPref}{[Dirty]} + }% +}{}% +\ifbool{gitInf@markifdraft}{% + \ifbool{gitInf@draft}{% + \booltrue{gitInf@mark} + \renewcommand{\gitMarkPref}{[Draft]} + }{}% +}{}% +\ifbool{gitInf@mark}{% + \AddToShipoutPictureBG{% + \AtPageLowerLeft{% + \raisebox{\gitInf@raisemark}{% + \makebox[\paperwidth]{% + \begin{minipage}[b]{\paperwidth}% + \renewcommand{\baselinestretch}{1}% + \centering{\gitMarkFormat\gitMarkPref{} \textbullet{} \gitMark}% + \end{minipage}% + }% + }% + }% + }% +}{}% +% --------------------------------------------------------------------- +% Datetime integration +% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\@ifpackageloaded{datetime2}{% + \IfEq{\gitAuthorDate}{\gitInf@missing}{% + \DTMsavedate{gitdate}{\THEDAY-\THEMONTH-\THEYEAR} + }{% + \StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md} + \StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day} + \DTMsavenoparsedate{gitdate}{\gitInf@year}{\gitInf@month}{\gitInf@day}{-1} + } +}{}% +\@ifpackageloaded{datetime}{% + \IfEq{\gitAuthorDate}{\gitInf@missing}{% + \newdate{gitdate}{\THEDAY}{\THEMONTH}{\THEYEAR} + }{% + \StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md} + \StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day} + \newdate{gitdate}{\gitInf@day}{\gitInf@month}{\gitInf@year} + } +}{}%