pax_global_header00006660000000000000000000000064120206315750014513gustar00rootroot0000000000000052 comment=dc31652d774267a52fa44995c3a9abfb0a0103aa pcb2gcode-1.1.4-git20120902/000077500000000000000000000000001202063157500147475ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/AUTHORS000066400000000000000000000006741202063157500160260ustar00rootroot00000000000000 Cynbe ru Taren (Jeff Prothero) Core algorithm, original (pre 1.0) version: http://cynbe.us/~cynbe/gcoder/ Patrick Birnzain sourceforge project, most of C++ rewrite Christian M. Amsüss (Metalab Vienna) Debian/Ubuntu Packages, major contributions Bernhard Kubicek (Metalab Vienna) --metric, --milldrill, path simplification, etc. Pierre Doucet Arch Linux packages Further Development: Andrew Jessop Alan Condit jmcgee Christoper Gabriel pcb2gcode-1.1.4-git20120902/COPYING000066400000000000000000001045131202063157500160060ustar00rootroot00000000000000 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. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 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: Copyright (C) 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 . pcb2gcode-1.1.4-git20120902/ChangeLog000066400000000000000000000003401202063157500165160ustar00rootroot00000000000000 This project is developed using git. We do not currently maintain any dedicated change log for the release versions, please refer to the git history. -- 2011 Jan 18 Patrick Birnzain pcb2gcode-1.1.4-git20120902/Fixed.hpp000066400000000000000000000255131202063157500165250ustar00rootroot00000000000000/** * http://www.codef00.com/coding.php * Modified (pbirnzain) * * Copyright (c) 2008 * Evan Teran * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, provided * that the above copyright notice appears in all copies and that both the * copyright notice and this permission notice appear in supporting * documentation, and that the same name not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. We make no representations about the * suitability this software for any purpose. It is provided "as is" * without express or implied warranty. */ #ifndef FIXED_20060211_H_ #define FIXED_20060211_H_ #include #include #include // for std::size_t #include // for CHAR_BIT #include #include #include #include namespace numeric { template class Fixed; namespace detail { template struct bit_size { static const std::size_t size = sizeof(T) * CHAR_BIT; }; // helper templates to make magic with types :) // these allow us to determine resonable types from // a desired size, they also let us infer the next largest type // from a type which is nice for the division op template struct type_from_size { static const bool is_specialized = false; typedef void value_type; }; template <> struct type_from_size<64> { static const bool is_specialized = true; static const std::size_t size = 64; typedef int64_t value_type; typedef type_from_size<128> next_size; }; template <> struct type_from_size<32> { static const bool is_specialized = true; static const std::size_t size = 32; typedef int32_t value_type; typedef type_from_size<64> next_size; }; template <> struct type_from_size<16> { static const bool is_specialized = true; static const std::size_t size = 16; typedef int16_t value_type; typedef type_from_size<32> next_size; }; template <> struct type_from_size<8> { static const bool is_specialized = true; static const std::size_t size = 8; typedef int8_t value_type; typedef type_from_size<16> next_size; }; // this is to assist in adding support for non-native base // types (for adding big-int support), this should be fine // unless your bit-int class doesn't nicely support casting template B next_to_base(const N& rhs) { return static_cast(rhs); } struct divide_by_zero : std::exception { }; template void divide(const Fixed &numerator, const Fixed &denominator, Fixed "ient, Fixed &remainder, typename boost::enable_if_c::next_size::is_specialized>::type* = 0) { BOOST_STATIC_ASSERT(detail::type_from_size::next_size::is_specialized); typedef typename Fixed::next_type next_type; typedef typename Fixed::base_type base_type; static const std::size_t fractional_bits = Fixed::fractional_bits; next_type t(numerator.to_raw()); t <<= fractional_bits; quotient = Fixed::from_base(detail::next_to_base(t / denominator.to_raw())); remainder = Fixed::from_base(detail::next_to_base(t % denominator.to_raw())); } template void divide(Fixed numerator, Fixed denominator, Fixed "ient, Fixed &remainder, typename boost::disable_if_c::next_size::is_specialized>::type* = 0) { // NOTE: division is broken for large types :-( // especially when dealing with negative quantities typedef typename Fixed::base_type base_type; static const int bits = Fixed::total_bits; if(denominator == 0) { throw divide_by_zero(); quotient = 0; remainder = 0; } else { int sign = 0; if(numerator < 0) { sign ^= 1; numerator = -numerator; } if(denominator < 0) { sign ^= 1; denominator = -denominator; } base_type n = numerator.to_raw(); base_type d = denominator.to_raw(); base_type x = 1; base_type answer = 0; while((n >= d) && (((d >> (bits - 1)) & 1) == 0)) { x <<= 1; d <<= 1; } while(x != 0) { if(n >= d) { n -= d; answer |= x; } x >>= 1; d >>= 1; } quotient = answer; remainder = n; if(sign) { quotient = -quotient; } } } // this is the usual implementation of multiplication template void multiply(const Fixed &lhs, const Fixed &rhs, Fixed &result, typename boost::enable_if_c::next_size::is_specialized>::type* = 0) { BOOST_STATIC_ASSERT(detail::type_from_size::next_size::is_specialized); typedef typename Fixed::next_type next_type; typedef typename Fixed::base_type base_type; static const std::size_t fractional_bits = Fixed::fractional_bits; next_type t(static_cast(lhs.to_raw()) * static_cast(rhs.to_raw())); t >>= fractional_bits; result = Fixed::from_base(next_to_base(t)); } // this is the fall back version we use when we don't have a next size // it is slightly slower, but is more robust since it doesn't // require and upgraded type template void multiply(const Fixed &lhs, const Fixed &rhs, Fixed &result, typename boost::disable_if_c::next_size::is_specialized>::type* = 0) { typedef typename Fixed::base_type base_type; static const std::size_t fractional_bits = Fixed::fractional_bits; static const std::size_t integer_mask = Fixed::integer_mask; static const std::size_t fractional_mask = Fixed::fractional_mask; // more costly but doesn't need a larger type const base_type a_hi = (lhs.to_raw() & integer_mask) >> fractional_bits; const base_type b_hi = (rhs.to_raw() & integer_mask) >> fractional_bits; const base_type a_lo = (lhs.to_raw() & fractional_mask); const base_type b_lo = (rhs.to_raw() & fractional_mask); const base_type x1 = a_hi * b_hi; const base_type x2 = a_hi * b_lo; const base_type x3 = a_lo * b_hi; const base_type x4 = a_lo * b_lo; result = Fixed::from_base((x1 << fractional_bits) + (x3 + x2) + (x4 >> fractional_bits)); } } // lets us do things like "typedef numeric::fixed_from_type::fixed_type fixed"; // NOTE: that we will use a type of equivalent size, not neccessarily the type // specified. Should make little to no difference to the user template struct fixed_from_type { typedef Fixed::size / 2, detail::bit_size::size / 2> fixed_type; }; /* * inheriting from boost::operators enables us to be a drop in replacement for base types * without having to specify all the different versions of operators manually */ template class Fixed : boost::operators >, boost::shiftable > { BOOST_STATIC_ASSERT(detail::type_from_size::is_specialized); public: static const std::size_t fractional_bits = F; static const std::size_t integer_bits = I; static const std::size_t total_bits = I + F; typedef detail::type_from_size base_type_info; typedef typename base_type_info::value_type base_type; typedef typename base_type_info::next_size::value_type next_type; private: static const std::size_t base_size = base_type_info::size; static const base_type fractional_mask = ~((~base_type(0)) << fractional_bits); static const base_type integer_mask = ~fractional_mask; public: static const base_type one = base_type(1) << fractional_bits; public: // constructors Fixed() : data_(0) { } Fixed(long n) : data_(base_type(n) << fractional_bits) { // TODO: assert in range! } Fixed(unsigned long n) : data_(base_type(n) << fractional_bits) { // TODO: assert in range! } Fixed(int n) : data_(base_type(n) << fractional_bits) { // TODO: assert in range! } Fixed(unsigned int n) : data_(base_type(n) << fractional_bits) { // TODO: assert in range! } Fixed(float n) : data_(static_cast(n * one)) { // TODO: assert in range! } Fixed(double n) : data_(static_cast(n * one)) { // TODO: assert in range! } Fixed(const Fixed &o) : data_(o.data_) { } Fixed& operator=(const Fixed &o) { data_ = o.data_; return *this; } private: // this makes it simpler to create a fixed point object from // a native type without scaling // use "Fixed::from_base" in order to perform this. struct no_scale {}; Fixed(base_type n, const no_scale &) : data_(n) { } public: static Fixed from_base(base_type n) { return Fixed(n, no_scale()); } public: // comparison operators bool operator==(const Fixed &o) const { return data_ == o.data_; } bool operator<(const Fixed &o) const { return data_ < o.data_; } public: // unary operators bool operator!() const { return !data_; } Fixed operator~() const { Fixed t(*this); t.data_ = ~t.data_; return t; } Fixed operator-() const { Fixed t(*this); t.data_ = -t.data_; return t; } Fixed& operator++() { data_ += one; return *this; } Fixed& operator--() { data_ -= one; return *this; } public: // basic math operators Fixed& operator+=(const Fixed &n) { data_ += n.data_; return *this; } Fixed& operator-=(const Fixed &n) { data_ -= n.data_; return *this; } Fixed& operator&=(const Fixed &n) { data_ &= n.data_; return *this; } Fixed& operator|=(const Fixed &n) { data_ |= n.data_; return *this; } Fixed& operator^=(const Fixed &n) { data_ ^= n.data_; return *this; } Fixed& operator*=(const Fixed &n) { detail::multiply(*this, n, *this); return *this; } Fixed& operator/=(const Fixed &n) { Fixed temp; detail::divide(*this, n, *this, temp); return *this; } Fixed& operator>>=(const Fixed &n) { data_ >>= n.to_int(); return *this; } Fixed& operator<<=(const Fixed &n) { data_ <<= n.to_int(); return *this; } public: // conversion to basic types int to_int() const { return (data_ & integer_mask) >> fractional_bits; } operator int() const { return this->to_int(); } unsigned int to_uint() const { return (data_ & integer_mask) >> fractional_bits; } float to_float() const { return static_cast(data_) / Fixed::one; } double to_double() const { return static_cast(data_) / Fixed::one; } base_type to_raw() const { return data_; } public: void swap(Fixed &rhs) { std::swap(data_, rhs.data_); } public: base_type data_; }; template std::ostream &operator<<(std::ostream &os, const Fixed &f) { os << f.to_double(); return os; } } #endif pcb2gcode-1.1.4-git20120902/INSTALL000077700000000000000000000000001202063157500232022/usr/share/automake-1.11/INSTALLustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/Makefile.am000066400000000000000000000012601202063157500170020ustar00rootroot00000000000000SUBDIRS = man bin_PROGRAMS = pcb2gcode pcb2gcode_SOURCES = \ svg_exporter.hpp \ svg_exporter.cpp \ board.hpp \ board.cpp \ coord.hpp \ drill.hpp \ drill.cpp \ exporter.hpp \ Fixed.hpp \ gerberimporter.hpp \ gerberimporter.cpp \ importer.hpp \ layer.hpp \ layer.cpp \ mill.hpp \ mill.cpp \ ngc_exporter.hpp \ ngc_exporter.cpp \ surface.hpp \ surface.cpp \ options.hpp \ options.cpp \ config.h \ main.cpp ACLOCAL_AMFLAGS = -I m4 AM_CPPFLAGS = $(BOOST_CPPFLAGS) $(glibmm_CFLAGS) $(gdkmm_CFLAGS) $(gerbv_CFLAGS) AM_LDFLAGS = $(BOOST_PROGRAM_OPTIONS_LDFLAGS) LIBS = $(glibmm_LIBS) $(gdkmm_LIBS) $(gerbv_LIBS) $(BOOST_PROGRAM_OPTIONS_LIBS) EXTRA_DIST = millproject pcb2gcode-1.1.4-git20120902/NEWS000066400000000000000000000000001202063157500154340ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/README000066400000000000000000000024121202063157500156260ustar00rootroot00000000000000This is a complete rewrite of the original pcb2gcode in C++. Quick Installation *************** Archlinux: pcb2gcode stable 1.1.3 -> https://aur.archlinux.org/packages.php?ID=50457 pcb2gcode git 1.1.4 -> https://aur.archlinux.org/packages.php?ID=55198 Fedora: *) Open a terminal and cd to the extracted tarball *) type the following: su yum groupinstall "Development Tools" yum install automake autoconf libtool boost-devel gtkmm24-devel gerbv-devel exit ./configure make su -c 'make install' *) done. Debian, Ubuntu: There are pcb2gcode packages in the official repositories. The Ubuntu ones are outdated (1.1.2) as of 26-12-2011, I recommend installing 1.1.4 from source. *) Open a terminal and cd to the extracted tarball *) type the following: sudo apt-get install build-essential automake autoconf libtool libboost-all-dev libgtkmm-2.4-dev gerbv ./configure make sudo make install *) done. Installation from GIT (latest development version): $ git clone git://pcb2gcode.git.sourceforge.net/gitroot/pcb2gcode/pcb2gcode $ cd pcb2gcode $ ./git-build.sh $ sudo make install For further details, see INSTALL and http://sourceforge.net/apps/mediawiki/pcb2gcode pcb2gcode-1.1.4-git20120902/board.cpp000066400000000000000000000114131202063157500165420ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "board.hpp" typedef pair > layer_t; Board::Board( int _dpi, bool _fill_outline, double _outline_width) { margin = 0.0; dpi = _dpi; fill_outline = _fill_outline; outline_width = _outline_width; } double Board::get_width() { return layers.begin()->second->surface->get_width_in(); } double Board::get_height() { return layers.begin()->second->surface->get_height_in(); } uint Board::get_dpi() { return dpi; } void Board::prepareLayer( string layername, shared_ptr importer, shared_ptr manufacturer, bool mirror, bool mirror_absolute ) { // see comment for prep_t in board.hpp prepared_layers.insert( std::make_pair( layername, make_tuple(importer, manufacturer, mirror, mirror_absolute) ) ); } void Board::createLayers() { if( !prepared_layers.size() ) throw std::logic_error("No layers prepared."); // start calculating the minimal board size min_x = INFINITY; max_x = -INFINITY; min_y = INFINITY; max_y = -INFINITY; // calculate room needed by the PCB traces for( map< string, prep_t >::iterator it = prepared_layers.begin(); it != prepared_layers.end(); it++ ) { shared_ptr importer = it->second.get<0>(); float t; t = importer->get_min_x(); if(min_x > t) min_x = t; t = importer->get_max_x(); if(max_x < t) max_x = t; t = importer->get_min_y(); if(min_y > t) min_y = t; t = importer->get_max_y(); if(max_y < t) max_y = t; } // if there's no pcb outline, add the specified margins try { shared_ptr outline_mill = prepared_layers.at("outline").get<1>(); ivalue_t radius = outline_mill->tool_diameter / 2; min_x -= radius; max_x += radius; min_y -= radius; max_y += radius; } catch( std::logic_error& e ) { min_x -= margin; max_x += margin; min_y -= margin; max_y += margin; } // board size calculated. create layers for( map::iterator it = prepared_layers.begin(); it != prepared_layers.end(); it++ ) { // prepare the surface shared_ptr surface( new Surface(dpi, min_x, max_x, min_y, max_y) ); shared_ptr importer = it->second.get<0>(); surface->render(importer); shared_ptr layer( new Layer(it->first, surface, it->second.get<1>(), it->second.get<2>(), it->second.get<3>() ) ); // see comment for prep_t in board.hpp layers.insert( std::make_pair( layer->get_name(), layer ) ); } // DEBUG output BOOST_FOREACH( layer_t layer, layers ) { layer.second->surface->save_debug_image(string("original_")+layer.second->get_name()); } // mask layers with outline if( prepared_layers.find("outline") != prepared_layers.end()) { shared_ptr outline_layer = layers.at("outline"); if(fill_outline) { outline_layer->surface->fill_outline(outline_width); } for (map >::iterator it = layers.begin(); it != layers.end(); it++ ) { if(it->second != outline_layer) { it->second->add_mask(outline_layer); it->second->surface->save_debug_image("masked"); } } } } vector< shared_ptr > Board::get_toolpath( string layername ) { vector< shared_ptr > toolpath; try { return layers[layername]->get_toolpaths(); } catch ( std::logic_error& e ) { std::stringstream msg; msg << "class Board: get_toolpath(): layer not available: "; msg << layername << std::endl; throw std::logic_error( msg.str() ); } } vector< string > Board::list_layers() { vector layerlist; BOOST_FOREACH( layer_t layer, layers ) { layerlist.push_back( layer.first ); } return layerlist; } shared_ptr Board::get_layer( string layername ) { return layers.at(layername); } pcb2gcode-1.1.4-git20120902/board.hpp000066400000000000000000000056241202063157500165560ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef BOARD_H #define BOARD_H #include #include #include #include using std::cout; using std::endl; #include using std::map; #include using std::vector; using std::pair; #include #include using boost::shared_ptr; #include using boost::tuple; #include "coord.hpp" #include "surface.hpp" #include "layer.hpp" #include "mill.hpp" //! Represents a printed circuit board. /*! This class calculates the required minimum board size * and applies the (not yet) described operations on the * photoplots of each layer to calculate the toolpaths. */ class Board { public: Board( int dpi, bool fill_outline, double outline_width ); void prepareLayer( string layername, shared_ptr importer, shared_ptr manufacturer, bool topside, bool mirror_absolute ); void set_margins( double margins ) { margin = margins; }; ivalue_t get_width(); ivalue_t get_height(); ivalue_t get_min_x() { return min_x; }; ivalue_t get_max_x() { return max_x; }; ivalue_t get_min_y() { return min_y; }; ivalue_t get_max_y() { return max_y; }; vector< string > list_layers(); shared_ptr get_layer( string layername ); vector< shared_ptr > get_toolpath( string layername ); void createLayers(); // should be private uint get_dpi(); private: ivalue_t margin; uint dpi; bool fill_outline; double outline_width; ivalue_t min_x; ivalue_t max_x; ivalue_t min_y; ivalue_t max_y; /* The Layer gets constructed from data prepared in * prepareLayer after the size calculations are done in createLayers. * (It can't be constructed in prepareLayer as the surface which gets * passed to the Layer at construction time needs the sizes to be * created.) * In the meantime, the construction arguments get carried around in * prep_t tuples, whose signature must basically match the construction * signature of Layer. */ typedef tuple< shared_ptr, shared_ptr, bool, bool > prep_t; map< string, prep_t > prepared_layers; map< string, shared_ptr > layers; }; #endif // BOARD_H pcb2gcode-1.1.4-git20120902/config.h.in000066400000000000000000000045261202063157500170010ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have */ #undef HAVE_BOOST_FOREACH_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_PROGRAM_OPTIONS_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_SCOPED_PTR_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_SHARED_PTR_HPP /* Define to 1 if you have */ #undef HAVE_BOOST_TUPLE_TUPLE_HPP /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif pcb2gcode-1.1.4-git20120902/configure.ac000066400000000000000000000016741202063157500172450ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) AC_INIT([pcb2gcode], [1.1.4], [pbirnzain@users.sourceforge.net]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([m4]) AM_INIT_AUTOMAKE([pcb2gcode], [1.1.4]) # Checks for programs. AC_PROG_CXX AC_PROG_CC AC_PROG_LIBTOOL export LC_NUMERIC="POSIX" # Checks for libraries. BOOST_REQUIRE([1.39.0]) BOOST_PROGRAM_OPTIONS BOOST_SMART_PTR BOOST_FOREACH BOOST_TUPLE PKG_CHECK_MODULES([glibmm], [glibmm-2.4 >= 2.8]) PKG_CHECK_MODULES([gdkmm], [gdkmm-2.4 >= 2.8]) PKG_CHECK_MODULES([gerbv], [libgerbv >= 2.1.0]) AC_SUBST(gerbv_LIBS) AC_SUBST(gerbv_CFLAGS) # Checks for header files. AC_HEADER_STDC # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_INLINE # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT(man/Makefile) pcb2gcode-1.1.4-git20120902/coord.hpp000066400000000000000000000005221202063157500165650ustar00rootroot00000000000000#ifndef COORD_H #define COORD_H #include typedef std::pair coordpair; typedef std::vector coords; //#include "Fixed.hpp" //typedef numeric::Fixed<16,16> ivalue_t; typedef double ivalue_t; typedef std::pair icoordpair; typedef std::vector icoords; #endif // COORD_H pcb2gcode-1.1.4-git20120902/depcomp000077500000000000000000000442671202063157500163410ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, 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 . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcb2gcode-1.1.4-git20120902/drill.cpp000066400000000000000000000207201202063157500165620ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include using std::cout; using std::endl; #include #include using namespace std; #include "drill.hpp" #include #include #include using std::pair; ExcellonProcessor::ExcellonProcessor( string drillfile, const ivalue_t board_width ) : board_width(board_width) { bDoSVG = false; project = gerbv_create_project(); const char* cfilename = drillfile.c_str(); boost::scoped_array filename( new char[strlen(cfilename) + 1] ); strcpy(filename.get(), cfilename); gerbv_open_layer_from_filename(project, filename.get()); if( project->file[0] == NULL) throw drill_exception(); preamble = string("G94 ( Inches per minute feed rate. )\n") + "G20 ( Units == INCHES. )\n" + "G90 ( Absolute coordinates. )\n"; postamble = string("M9 ( Coolant off. )\n") + "M2 ( Program end. )\n\n"; } void ExcellonProcessor::set_svg_exporter( shared_ptr svgexpo ) { this->svgexpo = svgexpo; bDoSVG = true; } void ExcellonProcessor::add_header( string header ) { this->header.push_back(header); } void ExcellonProcessor::export_ngc( const string of_name, shared_ptr driller, bool mirrored, bool mirror_absolute ) { ivalue_t double_mirror_axis = mirror_absolute ? 0 : board_width; //SVG EXPORTER int rad = 1.; // open output file std::ofstream of; of.open( of_name.c_str() ); shared_ptr > bits = get_bits(); shared_ptr > holes = get_holes(); // write header to .ngc file BOOST_FOREACH( string s, header ) { of << "( " << s << " )" << endl; } of << endl; of << "( This file uses " << bits->size() << " drill bit sizes. )\n\n"; of.setf( ios_base::fixed ); of.precision(5); of << setw(7); // preamble of << preamble << "S" << left << driller->speed << " ( RPM spindle speed. )\n" << endl; for( map::const_iterator it = bits->begin(); it != bits->end(); it++ ) { of << "G00 Z" << driller->zchange << " ( Retract )\n" << "T" << it->first << endl << "M5 ( Spindle stop. )\n" << "M6 ( Tool change. )\n" << "(MSG, CHANGE TOOL BIT: to drill size " << it->second.diameter << " " << it->second.unit << ")\n" << "M0 ( Temporary machine stop. )\n" << "M3 ( Spindle on clockwise. )\n" << endl; const icoords drill_coords = holes->at(it->first); icoords::const_iterator coord_iter = drill_coords.begin(); //SVG EXPORTER if (bDoSVG) { //set a random color svgexpo->set_rand_color(); //draw first circle svgexpo->circle( (double_mirror_axis - coord_iter->first), coord_iter->second, rad); svgexpo->stroke(); } of << "G81 R" << driller->zsafe << " Z" << driller->zwork << " F" << driller->feed << " X" << (mirrored?double_mirror_axis - coord_iter->first:coord_iter->first) << " Y" << coord_iter->second << endl; ++coord_iter; while( coord_iter != drill_coords.end() ) { of << "X" << (mirrored?double_mirror_axis - coord_iter->first:coord_iter->first) << " Y" << coord_iter->second << endl; //SVG EXPORTER if (bDoSVG) { //make a whole svgexpo->circle( (double_mirror_axis - coord_iter->first), coord_iter->second, rad); svgexpo->stroke(); } ++coord_iter; } of << "\n\n"; } // retract, end of << "G00 Z" << driller->zchange << " ( All done -- retract )\n" << endl; of << "M9 ( Coolant off. )\n"; of << "M2 ( Program end. )\n\n"; of.close(); } void ExcellonProcessor::millhole(std::ofstream &of,float x, float y, shared_ptr cutter,float holediameter) { g_assert(cutter); double cutdiameter=cutter->tool_diameter; if(cutdiameter*1.001>=holediameter) { of<<"G0 X"<< x<<" Y" << y<< endl; //of<<"G1 Z"<zwork<zsafe<stepsize; //z_step=0.01; double z = cutter->zwork + z_step * abs( int( cutter->zwork / z_step ) ); if( !cutter->do_steps ) { z=cutter->zwork; z_step=1; //dummy to exit the loop } int stepcount=abs( int( cutter->zwork / z_step )) ; while( z >= cutter->zwork ) { //of<<"G1 Z"<zsafe< target, bool mirrored, bool mirror_absolute ) { g_assert( mirrored == true ); g_assert( mirror_absolute == false ); cerr << "Currently Drilling "<< endl; // open output file std::ofstream of; of.open( outputname.c_str() ); shared_ptr > bits = get_bits(); shared_ptr > holes = get_holes(); // write header to .ngc file BOOST_FOREACH( string s, header ) { of << "( " << s << " )" << endl; } of << endl; //of << "( This file uses " << bits->size() << " drill bit sizes. )\n\n"; of << "( This file uses a mill head of "<tool_diameter<<" to drill the "<size() <<"bit sizes. )\n\n"; of.setf( ios_base::fixed ); of.precision(5); of << setw(7); // preamble of << preamble << "S" << left << target->speed << " ( RPM spindle speed. )\n" << endl; of<<"F"<feed<::const_iterator it = bits->begin(); it != bits->end(); it++ ) { float diameter=it->second.diameter; //cerr<<"bit:"<at(it->first); icoords::const_iterator coord_iter = drill_coords.begin(); millhole(of, board_width - coord_iter->first, coord_iter->second, target,diameter); ++coord_iter; while( coord_iter != drill_coords.end() ) { millhole(of, board_width - coord_iter->first, coord_iter->second, target,diameter); ++coord_iter; } } // retract, end of << "G00 Z" << target->zchange << " ( All done -- retract )\n" << endl; of << postamble; of.close(); } void ExcellonProcessor::parse_bits() { bits = shared_ptr< map >( new map() ); for( gerbv_drill_list_t* currentDrill = project->file[0]->image->drill_stats->drill_list; currentDrill; currentDrill = currentDrill->next ) { drillbit curBit; curBit.diameter = currentDrill->drill_size; curBit.unit = string( currentDrill->drill_unit ); curBit.drill_count = currentDrill->drill_count; bits->insert( pair(currentDrill->drill_num, curBit) ); } } void ExcellonProcessor::parse_holes() { if(!bits) parse_bits(); holes = shared_ptr< map >( new map() ); for (gerbv_net_t* currentNet = project->file[0]->image->netlist; currentNet; currentNet = currentNet->next) { if(currentNet->aperture != 0) (*holes)[currentNet->aperture].push_back( icoordpair(currentNet->start_x, currentNet->start_y) ); } } shared_ptr > ExcellonProcessor::get_bits() { if(!bits) parse_bits(); return bits; } shared_ptr > ExcellonProcessor::get_holes() { if(!holes) parse_holes(); return holes; } ExcellonProcessor::~ExcellonProcessor() { gerbv_destroy_project(project); } void ExcellonProcessor::set_preamble(string _preamble) { preamble=_preamble; } void ExcellonProcessor::set_postamble(string _postamble) { postamble=_postamble; } pcb2gcode-1.1.4-git20120902/drill.hpp000066400000000000000000000054271202063157500165760ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef DRILL_H #define DRILL_H #include using std::map; #include using std::string; #include using std::vector; #include using std::map; #include using boost::shared_ptr; extern "C" { #include } #include "coord.hpp" #include class drill_exception : virtual std::exception, virtual boost::exception {}; #include "mill.hpp" #include "svg_exporter.hpp" class drillbit { public: double diameter; string unit; int drill_count; }; //! Reads Excellon drill files and directly creates RS274-NGC gcode output. /*! While we could easily add different input and output formats for the layerfiles * to pcb2gcode, i've decided to ditch the importer/exporter scheme here. * We'll very likely not encounter any drill files that gerbv can't read, and * still rather likely never export to anything other than a ngc g-code file. * Also, i'm lazy, and if I turn out to be wrong splitting the code won't be much effort anyway. */ class ExcellonProcessor { public: ExcellonProcessor( const string drillfile, const ivalue_t board_width ); ~ExcellonProcessor(); void add_header( string ); void set_preamble(string); void set_postamble(string); //SVG EXPORTER void set_svg_exporter( shared_ptr svgexpo ); void export_ngc( const string of_name, shared_ptr target, bool mirrored, bool mirror_absolute ); void export_ngc( const string of_name, shared_ptr target, bool mirrored, bool mirror_absolute ); shared_ptr > get_bits(); shared_ptr > get_holes(); private: void parse_holes(); void parse_bits(); const ivalue_t board_width; bool bDoSVG; shared_ptr svgexpo; shared_ptr< map > bits; shared_ptr< map > holes; gerbv_project_t* project; vector header; string preamble,postamble; private: //methods void millhole(std::ofstream &of,float x, float y, shared_ptr cutter,float holediameter); }; #endif // DRILL_H pcb2gcode-1.1.4-git20120902/exporter.hpp000066400000000000000000000023601202063157500173310ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef EXPORTER_H #define EXPORTER_H #include using std::vector; #include using std::string; using std::pair; #include #include using boost::shared_ptr; #include #include "coord.hpp" #include "board.hpp" class Exporter : public boost::noncopyable { public: Exporter( shared_ptr board ) {}; virtual void export_all(boost::program_options::variables_map&) = 0; }; #endif // EXPORTER_H pcb2gcode-1.1.4-git20120902/gerberimporter.cpp000066400000000000000000000062471202063157500205140ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "gerberimporter.hpp" #include GerberImporter::GerberImporter(const string path) { project = gerbv_create_project(); const char* cfilename = path.c_str(); boost::scoped_array filename( new char[strlen(cfilename) + 1] ); strcpy(filename.get(), cfilename); gerbv_open_layer_from_filename(project, filename.get()); if( project->file[0] == NULL) throw gerber_exception(); } gdouble GerberImporter::get_width() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->max_x - project->file[0]->image->info->min_x; } gdouble GerberImporter::get_height() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->max_y - project->file[0]->image->info->min_y; } gdouble GerberImporter::get_min_x() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->min_x; } gdouble GerberImporter::get_max_x() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->max_x; } gdouble GerberImporter::get_min_y() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->min_y; } gdouble GerberImporter::get_max_y() { if(!project || !project->file[0]) throw gerber_exception(); return project->file[0]->image->info->max_y; } #include void GerberImporter::render(Cairo::RefPtr surface, const guint dpi, const double min_x, const double min_y) throw (import_exception) { gerbv_render_info_t render_info; render_info.scaleFactorX = dpi; render_info.scaleFactorY = dpi; render_info.lowerLeftX = min_x; render_info.lowerLeftY = min_y; render_info.displayWidth = surface->get_width(); render_info.displayHeight = surface->get_height(); render_info.renderType = GERBV_RENDER_TYPE_CAIRO_NORMAL; GdkColor color_saturated_white = { 0xFFFFFFFF, 0xFFFF, 0xFFFF, 0xFFFF }; project->file[0]->color = color_saturated_white; cairo_t* cr = cairo_create( surface->cobj() ); gerbv_render_layer_to_cairo_target( cr, project->file[0], &render_info ); cairo_destroy(cr); /// @todo check wheter importing was successful } GerberImporter::~GerberImporter() { gerbv_destroy_project(project); } pcb2gcode-1.1.4-git20120902/gerberimporter.hpp000066400000000000000000000033021202063157500205060ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef GERBERIMPORTER_H #define GERBERIMPORTER_H #include using std::string; #include "importer.hpp" extern "C" { #include } struct gerber_exception : virtual import_exception {}; //! Importer for RS274-X Gerber files. /*! GerberImporter is using libgerbv and hence features * its suberb support for different file formats and * gerber dialects. */ class GerberImporter : virtual public LayerImporter { public: GerberImporter(const string path); virtual gdouble get_width(); virtual gdouble get_height(); virtual gdouble get_min_x(); virtual gdouble get_max_x(); virtual gdouble get_min_y(); virtual gdouble get_max_y(); virtual void render(Cairo::RefPtr surface, const guint dpi, const double min_x, const double min_y) throw (import_exception); virtual ~GerberImporter(); protected: private: gerbv_project_t* project; }; #endif // GERBERIMPORTER_H pcb2gcode-1.1.4-git20120902/git-build.sh000077500000000000000000000001431202063157500171640ustar00rootroot00000000000000#!/bin/sh libtoolize && aclocal && automake --add-missing && autoreconf && ./configure && make -j pcb2gcode-1.1.4-git20120902/importer.hpp000066400000000000000000000030661202063157500173260ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef IMPORTER_H #define IMPORTER_H #include using Glib::ustring; #include #include #include #include struct import_exception : virtual std::exception, virtual boost::exception {}; typedef boost::error_info errorstring; //! pure virtual base class for importers. class LayerImporter { public: virtual gdouble get_width() = 0; virtual gdouble get_height() = 0; virtual gdouble get_min_x() = 0; virtual gdouble get_max_x() = 0; virtual gdouble get_min_y() = 0; virtual gdouble get_max_y() = 0; virtual void render(Cairo::RefPtr surface, const guint dpi, const double xoff, const double yoff) throw (import_exception) = 0; }; #endif // IMPORTER_H pcb2gcode-1.1.4-git20120902/install-sh000077500000000000000000000325371202063157500167650ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcb2gcode-1.1.4-git20120902/layer.cpp000066400000000000000000000012201202063157500165620ustar00rootroot00000000000000 #include "layer.hpp" Layer::Layer( const string& name, shared_ptr surface, shared_ptr manufacturer, bool backside, bool mirror_absolute ) { this->name = name; this->mirrored = backside; this->mirror_absolute = mirror_absolute; this->surface = surface; this->manufacturer = manufacturer; } #include using namespace std; vector< shared_ptr > Layer::get_toolpaths() { return surface->get_toolpath( manufacturer, mirrored, mirror_absolute ); } shared_ptr Layer::get_manufacturer() { return manufacturer; } void Layer::add_mask( shared_ptr mask) { surface->add_mask( mask->surface); } pcb2gcode-1.1.4-git20120902/layer.hpp000066400000000000000000000013341202063157500165750ustar00rootroot00000000000000 #ifndef LAYER_H #define LAYER_H #include using std::string; #include using std::vector; #include #include "coord.hpp" #include "surface.hpp" #include "mill.hpp" class Layer : boost::noncopyable { public: Layer( const string& name, shared_ptr surface, shared_ptr manufacturer, bool backside, bool mirror_absolute ); vector< shared_ptr > get_toolpaths(); shared_ptr get_manufacturer(); string get_name() { return name; }; void add_mask( shared_ptr); private: string name; bool mirrored; bool mirror_absolute; shared_ptr surface; shared_ptr manufacturer; friend class Board; }; #endif // LAYER_H pcb2gcode-1.1.4-git20120902/m4/000077500000000000000000000000001202063157500152675ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/m4/boost.m4000066400000000000000000000762741202063157500166770ustar00rootroot00000000000000# boost.m4: Locate Boost headers and libraries for autoconf-based projects. # Copyright (C) 2007 Benoit Sigoure # # 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. # # Additional permission under section 7 of the GNU General Public # License, version 3 ("GPLv3"): # # If you convey this file as part of a work that contains a # configuration script generated by Autoconf, you may do so under # terms of your choice. # # 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 . # serial 6 # Original sources can be found at http://repo.or.cz/w/boost.m4.git # You can fetch the latest version of the script by doing: # wget 'http://repo.or.cz/w/boost.m4.git?a=blob_plain;f=build-aux/boost.m4;hb=HEAD' -O boost.m4 # ------ # # README # # ------ # # This file provides several macros to use the various Boost libraries. # The first macro is BOOST_REQUIRE. It will simply check if it's possible to # find the Boost headers of a given (optional) minimum version and it will # define BOOST_CPPFLAGS accordingly. It will add an option --with-boost to # your configure so that users can specify non standard locations. # For more README and documentation, go to http://repo.or.cz/w/boost.m4.git # Note: THESE MACROS ASSUME THAT YOU USE LIBTOOL. If you don't, don't worry, # simply read the README, it will show you what to do step by step. m4_pattern_forbid([^_?BOOST_]) # BOOST_REQUIRE([VERSION]) # ------------------------ # Look for Boost. If version is given, it must either be a literal of the form # "X.Y.Z" where X, Y and Z are integers (the ".Z" part being optional) or a # variable "$var". # Defines the value BOOST_CPPFLAGS. This macro only checks for headers with # the required version, it does not check for any of the Boost libraries. # FIXME: Add a 2nd optional argument so that it's not fatal if Boost isn't found # and add an AC_DEFINE to tell whether HAVE_BOOST. AC_DEFUN([BOOST_REQUIRE], [dnl First find out what kind of argument we have. dnl If we have an empty argument, there is no constraint on the version of dnl Boost to use. If it's a literal version number, we can split it in M4 (so dnl the resulting configure script will be smaller/faster). Otherwise we do dnl the splitting at runtime. m4_bmatch([$1], [^ *$], [m4_pushdef([BOOST_VERSION_REQ], [])dnl boost_version_major=0 boost_version_minor=0 boost_version_subminor=0 ], [^[0-9]+\([-._][0-9]+\)*$], [m4_pushdef([BOOST_VERSION_REQ], [ version >= $1])dnl boost_version_major=m4_bregexp([$1], [^\([0-9]+\)], [\1]) boost_version_minor=m4_bregexp([$1], [^[0-9]+[-._]\([0-9]+\)], [\1]) boost_version_subminor=m4_bregexp([$1], [^[0-9]+[-._][0-9]+[-._]\([0-9]+\)], [\1]) ], [^\$[a-zA-Z_]+$], [m4_pushdef([BOOST_VERSION_REQ], [])dnl boost_version_major=`expr "X$1" : 'X\([[^-._]]*\)'` boost_version_minor=`expr "X$1" : 'X[[0-9]]*[[-._]]\([[^-._]]*\)'` boost_version_subminor=`expr "X$1" : 'X[[0-9]]*[[-._]][[0-9]]*[[-._]]\([[0-9]]*\)'` case $boost_version_major:$boost_version_minor in #( *: | :* | *[[^0-9]]*:* | *:*[[^0-9]]*) AC_MSG_ERROR([[Invalid argument for REQUIRE_BOOST: `$1']]) ;; esac ], [m4_fatal(Invalid argument: `$1')] )dnl AC_ARG_WITH([boost], [AS_HELP_STRING([--with-boost=DIR], [prefix of Boost]BOOST_VERSION_REQ[ @<:@guess@:>@])])dnl AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"]) AC_CACHE_CHECK([for Boost headers[]BOOST_VERSION_REQ], [boost_cv_inc_path], [boost_cv_inc_path=no AC_LANG_PUSH([C++])dnl boost_subminor_chk= test x"$boost_version_subminor" != x \ && boost_subminor_chk="|| (B_V_MAJ == $boost_version_major \ && B_V_MIN == $boost_version_minor \ && B_V_SUB < $boost_version_subminor)" for boost_dir in "$with_boost/include" '' \ /opt/local/include /usr/local/include /opt/include /usr/include \ "$with_boost" C:/Boost/include do # Without --layout=system, Boost (or at least some versions) installs # itself in /include/boost-. This inner loop helps to # find headers in such directories. # I didn't indent this loop on purpose (to avoid over-indented code) for boost_inc in "$boost_dir" "$boost_dir"/boost-* do # $boost_inc can often be a symlink, so keep -e here. test -e "$boost_inc" || continue # Ensure that version.hpp exists: we're going to read it. Moreover, # Boost could be reachable thanks to the default include path so we can # mistakenly accept a wrong include path without this check. test -e "$boost_inc/boost/version.hpp" || continue boost_save_CPPFLAGS=$CPPFLAGS test x"$boost_inc" != x && CPPFLAGS="$CPPFLAGS -I$boost_inc" m4_pattern_allow([^BOOST_VERSION$])dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #ifndef BOOST_VERSION # error BOOST_VERSION is not defined #endif #define B_V_MAJ (BOOST_VERSION / 100000) #define B_V_MIN (BOOST_VERSION / 100 % 1000) #define B_V_SUB (BOOST_VERSION % 100) #if (B_V_MAJ < $boost_version_major) \ || (B_V_MAJ == $boost_version_major \ && B_V_MIN < $boost_version_minor) $boost_subminor_chk # error Boost headers version < $1 #endif ]])], [boost_cv_inc_path=yes], [boost_cv_version=no]) CPPFLAGS=$boost_save_CPPFLAGS if test x"$boost_cv_inc_path" = xyes; then if test x"$boost_inc" != x; then boost_cv_inc_path=$boost_inc fi break 2 fi done done AC_LANG_POP([C++])dnl ]) case $boost_cv_inc_path in #( no) AC_MSG_ERROR([Could not find Boost headers[]BOOST_VERSION_REQ]) ;;#( yes) BOOST_CPPFLAGS= ;;#( *) BOOST_CPPFLAGS="-I$boost_cv_inc_path" ;; esac AC_SUBST([BOOST_CPPFLAGS])dnl AC_CACHE_CHECK([for Boost's header version], [boost_cv_lib_version], [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl boost_cv_lib_version=unknown boost_sed_version='/^.*BOOST_LIB_VERSION.*"\([[^"]]*\)".*$/!d;s//\1/' boost_version_hpp="$boost_inc/boost/version.hpp" test -e "$boost_version_hpp" \ && boost_cv_lib_version=`sed "$boost_sed_version" "$boost_version_hpp"` ]) m4_popdef([BOOST_VERSION_REQ])dnl ])# BOOST_REQUIRE # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) # -------------------------------------------------------------------------- # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for # some parts of the Boost library which are only made of headers and don't # require linking (such as Boost.Foreach). # # Default ACTION-IF-NOT-FOUND: Fail with a fatal error. # # Default ACTION-IF-FOUND: define the preprocessor symbol HAVE_ in # case of success # (where HEADER-NAME is written LIKE_THIS, e.g., # HAVE_BOOST_FOREACH_HPP). AC_DEFUN([BOOST_FIND_HEADER], [AC_REQUIRE([BOOST_REQUIRE])dnl AC_LANG_PUSH([C++])dnl boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" AC_CHECK_HEADER([$1], [m4_default([$3], [AC_DEFINE(AS_TR_CPP([HAVE_$1]), [1], [Define to 1 if you have <$1>])])], [m4_default([$2], [AC_MSG_ERROR([cannot find $1])])]) CPPFLAGS=$boost_save_CPPFLAGS AC_LANG_POP([C++])dnl ])# BOOST_FIND_HEADER # BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # ------------------------------------------------------------------------- # Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for # libboost_thread). Check that HEADER-NAME works and check that # libboost_LIB-NAME can link with the code CXX-TEST. The optional argument # CXX-PROLOGUE can be used to include some C++ code before the `main' # function. # # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). # # Boost libraries typically come compiled with several flavors (with different # runtime options) so PREFERRED-RT-OPT is the preferred suffix. A suffix is one # or more of the following letters: sgdpn (in that order). s = static # runtime, d = debug build, g = debug/diagnostic runtime, p = STLPort build, # n = (unsure) STLPort build without iostreams from STLPort (it looks like `n' # must always be used along with `p'). Additionally, PREFERRED-RT-OPT can # start with `mt-' to indicate that there is a preference for multi-thread # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp # ... If you want to make sure you have a specific version of Boost # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. AC_DEFUN([BOOST_FIND_LIB], [AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl AC_REQUIRE([BOOST_REQUIRE])dnl AC_REQUIRE([_BOOST_GUESS_WHETHER_TO_USE_MT])dnl AC_LANG_PUSH([C++])dnl AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl BOOST_FIND_HEADER([$3]) boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" # Now let's try to find the library. The algorithm is as follows: first look # for a given library name according to the user's PREFERRED-RT-OPT. For each # library name, we prefer to use the ones that carry the tag (toolset name). # Each library is searched through the various standard paths were Boost is # usually installed. If we can't find the standard variants, we try to # enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist # but there's -obviously- libboost_threads-mt.dylib). AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], [Boost_lib=no case "$2" in #( mt | mt-) boost_mt=-mt; boost_rtopt=;; #( mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #( *) boost_mt=; boost_rtopt=$2;; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. case $boost_rtopt in #( *[[a-z0-9A-Z]]*) boost_rtopt="-$boost_rtopt";; esac $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) boost_save_ac_objext=$ac_objext # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3> $5], [$4])]) dnl Optimization hacks: compiling C++ is slow, especially with Boost. What dnl we're trying to do here is guess the right combination of link flags dnl (LIBS / LDFLAGS) to use a given library. This can take several dnl iterations before it succeeds and is thus *very* slow. So what we do dnl instead is that we compile the code first (and thus get an object file, dnl typically conftest.o). Then we try various combinations of link flags dnl until we succeed to link conftest.o in an executable. The problem is dnl that the various TRY_LINK / COMPILE_IFELSE macros of Autoconf always dnl remove all the temporary files including conftest.o. So the trick here dnl is to temporarily change the value of ac_objext so that conftest.o is dnl preserved accross tests. This is obviously fragile and I will burn in dnl hell for not respecting Autoconf's documented interfaces, but in the dnl mean time, it optimizes the macro by a factor of 5 to 30. dnl Another small optimization: the first argument of AC_COMPILE_IFELSE left dnl empty because the test file is generated only once above (before we dnl start the for loops). AC_COMPILE_IFELSE([], [ac_objext=do_not_rm_me_plz], [AC_MSG_ERROR([Cannot compile a test that uses Boost $1])]) ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the 6 nested for loops, only the 2 innermost ones # matter. for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$1$boost_tag_$boost_mt_$boost_ver_ \ boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$1$boost_tag_$boost_mt_ \ boost_$1$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( *@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib /usr/local/lib /opt/lib /usr/lib \ "$with_boost" C:/Boost/lib /lib /usr/lib64 /lib64 do test -e "$boost_ldpath" || continue boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$Boost_lib_LIBS" || continue;; #( *) # No: use -lboost_foo to find the shared library. Boost_lib_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$Boost_lib_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" dnl First argument of AC_LINK_IFELSE left empty because the test file is dnl generated only once above (before we start the for loops). _BOOST_AC_LINK_IFELSE([], [Boost_lib=yes], [Boost_lib=no]) ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$Boost_lib" = xyes; then Boost_lib_LDFLAGS="-L$boost_ldpath -R$boost_ldpath" break 6 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done rm -f conftest.$ac_objext ]) case $Boost_lib in #( no) AC_MSG_ERROR([Could not find the flags to link with Boost $1]) ;; esac AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS]) AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS]) CPPFLAGS=$boost_save_CPPFLAGS AS_VAR_POPDEF([Boost_lib])dnl AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl AS_VAR_POPDEF([Boost_lib_LIBS])dnl AC_LANG_POP([C++])dnl ])# BOOST_FIND_LIB # --------------------------------------- # # Checks for the various Boost libraries. # # --------------------------------------- # # List of boost libraries: http://www.boost.org/libs/libraries.htm # The page http://beta.boost.org/doc/libs is useful: it gives the first release # version of each library (among other things). # BOOST_BIND() # ------------ # Look for Boost.Bind AC_DEFUN([BOOST_BIND], [BOOST_FIND_HEADER([boost/bind.hpp])]) # BOOST_CONVERSION() # ------------------ # Look for Boost.Conversion (cast / lexical_cast) AC_DEFUN([BOOST_CONVERSION], [BOOST_FIND_HEADER([boost/cast.hpp]) BOOST_FIND_HEADER([boost/lexical_cast.hpp]) ])# BOOST_CONVERSION # BOOST_DATE_TIME([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_DATE_TIME], [BOOST_FIND_LIB([date_time], [$1], [boost/date_time/posix_time/posix_time.hpp], [boost::posix_time::ptime t;]) ])# BOOST_DATE_TIME # BOOST_FILESYSTEM([PREFERRED-RT-OPT]) # ------------------------------------ # Look for Boost.Filesystem. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. # Do not check for boost/filesystem.hpp because this file was introduced in 1.34. AC_DEFUN([BOOST_FILESYSTEM], [BOOST_FIND_LIB([filesystem], [$1], [boost/filesystem/path.hpp], [boost::filesystem::path p;]) ])# BOOST_FILESYSTEM # BOOST_FOREACH() # --------------- # Look for Boost.Foreach AC_DEFUN([BOOST_FOREACH], [BOOST_FIND_HEADER([boost/foreach.hpp])]) # BOOST_FORMAT() # -------------- # Look for Boost.Format # Note: we can't check for boost/format/format_fwd.hpp because the header isn't # standalone. It can't be compiled because it triggers the following error: # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' # does not name a type AC_DEFUN([BOOST_FORMAT], [BOOST_FIND_HEADER([boost/format.hpp])]) # BOOST_FUNCTION() # ---------------- # Look for Boost.Function AC_DEFUN([BOOST_FUNCTION], [BOOST_FIND_HEADER([boost/function.hpp])]) # BOOST_GRAPH([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_GRAPH], [BOOST_FIND_LIB([graph], [$1], [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;]) ])# BOOST_GRAPH # BOOST_IOSTREAMS([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.IOStreams. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_IOSTREAMS], [BOOST_FIND_LIB([iostreams], [$1], [boost/iostreams/device/file_descriptor.hpp], [boost::iostreams::file_descriptor fd(0); fd.close();]) ])# BOOST_IOSTREAMS # BOOST_HASH() # ------------ # Look for Boost.Functional/Hash AC_DEFUN([BOOST_HASH], [BOOST_FIND_HEADER([boost/functional/hash.hpp])]) # BOOST_LAMBDA() # -------------- # Look for Boost.Lambda AC_DEFUN([BOOST_LAMBDA], [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) # BOOST_PREPROCESSOR() # -------------------- # Look for Boost.Preprocessor AC_DEFUN([BOOST_PREPROCESSOR], [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) # BOOST_PROGRAM_OPTIONS([PREFERRED-RT-OPT]) # ----------------------------------------- # Look for Boost.Program_options. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_PROGRAM_OPTIONS], [BOOST_FIND_LIB([program_options], [$1], [boost/program_options.hpp], [boost::program_options::options_description d("test");]) ])# BOOST_PROGRAM_OPTIONS # BOOST_REF() # ----------- # Look for Boost.Ref AC_DEFUN([BOOST_REF], [BOOST_FIND_HEADER([boost/ref.hpp])]) # BOOST_REGEX([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Regex. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_REGEX], [BOOST_FIND_LIB([regex], [$1], [boost/regex.hpp], [boost::regex exp("*"); boost::regex_match("foo", exp);]) ])# BOOST_REGEX # BOOST_SERIALIZATION([PREFERRED-RT-OPT]) # --------------------------------------- # Look for Boost.Serialization. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_SERIALIZATION], [BOOST_FIND_LIB([serialization], [$1], [boost/archive/text_oarchive.hpp], [std::ostream* o = 0; // Cheap way to get an ostream... boost::archive::text_oarchive t(*o);]) ])# BOOST_SIGNALS # BOOST_SIGNALS([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Signals. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_SIGNALS], [BOOST_FIND_LIB([signals], [$1], [boost/signal.hpp], [boost::signal s;]) ])# BOOST_SIGNALS # BOOST_SMART_PTR() # ----------------- # Look for Boost.SmartPtr AC_DEFUN([BOOST_SMART_PTR], [BOOST_FIND_HEADER([boost/scoped_ptr.hpp]) BOOST_FIND_HEADER([boost/shared_ptr.hpp]) ]) # BOOST_STRING_ALGO() # ------------------- # Look for Boost.StringAlgo AC_DEFUN([BOOST_STRING_ALGO], [BOOST_FIND_HEADER([boost/algorithm/string.hpp]) ]) # BOOST_TEST([PREFERRED-RT-OPT]) # ------------------------------ # Look for Boost.Test. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_TEST], [m4_pattern_allow([^BOOST_CHECK$])dnl BOOST_FIND_LIB([unit_test_framework], [$1], [boost/test/unit_test.hpp], [BOOST_CHECK(2 == 2);], [using boost::unit_test::test_suite; test_suite* init_unit_test_suite(int argc, char ** argv) { return NULL; }]) ])# BOOST_TEST # BOOST_THREADS([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. # FIXME: Provide an alias "BOOST_THREAD". AC_DEFUN([BOOST_THREADS], [dnl Having the pthread flag is required at least on GCC3 where dnl boost/thread.hpp would complain if we try to compile without dnl -pthread on GNU/Linux. AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl boost_threads_save_LIBS=$LIBS boost_threads_save_CPPFLAGS=$CPPFLAGS LIBS="$LIBS $boost_cv_pthread_flag" # Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, # boost/thread.hpp will trigger a #error if -pthread isn't used: # boost/config/requires_threads.hpp:47:5: #error "Compiler threading support # is not turned on. Please set the correct command line options for # threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" BOOST_FIND_LIB([thread], [$1], [boost/thread.hpp], [boost::thread t; boost::mutex m;]) BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $boost_cv_pthread_flag" BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" LIBS=$boost_threads_save_LIBS CPPFLAGS=$boost_threads_save_CPPFLAGS ])# BOOST_THREADS # BOOST_TOKENIZER() # ----------------- # Look for Boost.Tokenizer AC_DEFUN([BOOST_TOKENIZER], [BOOST_FIND_HEADER([boost/tokenizer.hpp])]) # BOOST_TRIBOOL() # --------------- # Look for Boost.Tribool AC_DEFUN([BOOST_TRIBOOL], [BOOST_FIND_HEADER([boost/logic/tribool_fwd.hpp]) BOOST_FIND_HEADER([boost/logic/tribool.hpp]) ]) # BOOST_TUPLE() # ------------- # Look for Boost.Tuple AC_DEFUN([BOOST_TUPLE], [BOOST_FIND_HEADER([boost/tuple/tuple.hpp])]) # BOOST_UTILITY() # --------------- # Look for Boost.Utility (noncopyable, result_of, base-from-member idiom, # etc.) AC_DEFUN([BOOST_UTILITY], [BOOST_FIND_HEADER([boost/utility.hpp])]) # BOOST_VARIANT() # --------------- # Look for Boost.Variant. AC_DEFUN([BOOST_VARIANT], [BOOST_FIND_HEADER([boost/variant/variant_fwd.hpp]) BOOST_FIND_HEADER([boost/variant.hpp])]) # BOOST_WAVE([PREFERRED-RT-OPT]) # ------------------------------ # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. AC_DEFUN([BOOST_WAVE], [BOOST_FIND_LIB([wave], [$1], [boost/wave.hpp], [boost::wave::token_id id; get_token_name(id);])]) # ----------------- # # Internal helpers. # # ----------------- # # _BOOST_PTHREAD_FLAG() # --------------------- # Internal helper for BOOST_THREADS. Based on ACX_PTHREAD: # http://autoconf-archive.cryp.to/acx_pthread.html AC_DEFUN([_BOOST_PTHREAD_FLAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_LANG_PUSH([C++])dnl AC_CACHE_CHECK([for the flags needed to use pthreads], [boost_cv_pthread_flag], [ boost_cv_pthread_flag= # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # (none): in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -lpthreads: AIX (must check this before -lpthread) # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads) # -pthreads: Solaris/GCC # -mthreads: MinGW32/GCC, Lynx/GCC # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # -lpthread: GNU Linux, etc. # --thread-safe: KAI C++ case $host_os in #( *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: boost_pthread_flags="-pthreads -lpthread -mt -pthread";; #( *) boost_pthread_flags="-lpthreads -Kthread -kthread -llthread -pthread \ -pthreads -mthreads -lpthread --thread-safe -mt";; esac # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0);])]) for boost_pthread_flag in '' $boost_pthread_flags; do boost_pthread_ok=false dnl Re-use the test file already generated. boost_pthreads__save_LIBS=$LIBS LIBS="$LIBS $boost_pthread_flag" AC_LINK_IFELSE([], [if grep ".*$boost_pthread_flag" conftest.err; then echo "This flag seems to have triggered warnings" >&AS_MESSAGE_LOG_FD else boost_pthread_ok=:; boost_cv_pthread_flag=$boost_pthread_flag fi]) LIBS=$boost_pthreads__save_LIBS $boost_pthread_ok && break done ]) AC_LANG_POP([C++])dnl ])# _BOOST_PTHREAD_FLAG # _BOOST_gcc_test(MAJOR, MINOR) # ----------------------------- # Internal helper for _BOOST_FIND_COMPILER_TAG. m4_define([_BOOST_gcc_test], ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl # _BOOST_FIND_COMPILER_TAG() # -------------------------- # Internal. When Boost is installed without --layout=system, each library # filename will hold a suffix that encodes the compiler used during the # build. The Boost build system seems to call this a `tag'. AC_DEFUN([_BOOST_FIND_COMPILER_TAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], [AC_LANG_PUSH([C++])dnl boost_cv_lib_tag=unknown # The following tests are mostly inspired by boost/config/auto_link.hpp # The list is sorted to most recent/common to oldest compiler (in order # to increase the likelihood of finding the right compiler with the # least number of compilation attempt). # Beware that some tests are sensible to the order (for instance, we must # look for MinGW before looking for GCC3). # I used one compilation test per compiler with a #error to recognize # each compiler so that it works even when cross-compiling (let me know # if you know a better approach). # Known missing tags (known from Boost's tools/build/v2/tools/common.jam): # como, edg, kcc, bck, mp, sw, tru, xlc # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines # the same defines as GCC's). # TODO: Move the test on GCC 4.3 up once it's released. for i in \ _BOOST_gcc_test(4, 2) \ _BOOST_gcc_test(4, 1) \ _BOOST_gcc_test(4, 0) \ "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \ _BOOST_gcc_test(3, 4) \ _BOOST_gcc_test(3, 3) \ "defined _MSC_VER && _MSC_VER >= 1400 @ vc80" \ _BOOST_gcc_test(3, 2) \ "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \ _BOOST_gcc_test(3, 1) \ _BOOST_gcc_test(3, 0) \ "defined __BORLANDC__ @ bcb" \ "defined __ICC && (defined __unix || defined __unix__) @ il" \ "defined __ICL @ iw" \ "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \ _BOOST_gcc_test(4, 3) \ _BOOST_gcc_test(2, 95) \ "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \ "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \ "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \ "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8" do boost_tag_test=`expr "X$i" : 'X\([[^@]]*\) @ '` boost_tag=`expr "X$i" : 'X[[^@]]* @ \(.*\)'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if $boost_tag_test /* OK */ #else # error $boost_tag_test #endif ]])], [boost_cv_lib_tag=$boost_tag; break], []) done AC_LANG_POP([C++])dnl ]) case $boost_cv_lib_tag in #( # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed # to "gcc41" for instance. gcc*) # We can specify multiple tags in this variable because it's used by # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ... boost_cv_lib_tag="$boost_cv_lib_tag -gcc" ;; #( unknown) AC_MSG_WARN([[could not figure out which toolset name to use for $CXX]]) boost_cv_lib_tag= ;; esac ])# _BOOST_FIND_COMPILER_TAG # _BOOST_GUESS_WHETHER_TO_USE_MT() # -------------------------------- # Compile a small test to try to guess whether we should favor MT (Multi # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], [# Check whether we do better use `mt' even though we weren't ask to. AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if defined _REENTRANT || defined _MT || defined __MT__ /* use -mt */ #else # error MT not needed #endif ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) ]) # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # ------------------------------------------------------------------- # Fork of _AC_LINK_IFELSE that preserves conftest.o across calls. Fragile, # will break when Autoconf changes its internals. Requires that you manually # rm -f conftest.$ac_objext in between to really different tests, otherwise # you will try to link a conftest.o left behind by a previous test. # Used to aggressively optimize BOOST_FIND_LIB (see the big comment in this # macro) m4_define([_BOOST_AC_LINK_IFELSE], [m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f conftest$ac_exeext boost_ac_ext_save=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) AS_IF([_AC_DO_STDERR($ac_link) && { test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. }], [$2], [if $boost_use_source; then _AC_MSG_LOG_CONFTEST fi $3]) dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization) dnl information created by the PGI compiler (conftest_ipa8_conftest.oo), dnl as it would interfere with the next link command. rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext m4_ifval([$1], [conftest.$ac_ext])[]dnl ])# _BOOST_AC_LINK_IFELSE pcb2gcode-1.1.4-git20120902/m4/config.guess000077500000000000000000001276151202063157500176230ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pcb2gcode-1.1.4-git20120902/m4/config.sub000077500000000000000000001031671202063157500172620ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: pcb2gcode-1.1.4-git20120902/m4/depcomp000077500000000000000000000442671202063157500166610ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, 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 . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcb2gcode-1.1.4-git20120902/m4/install-sh000077500000000000000000000325371202063157500173050ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcb2gcode-1.1.4-git20120902/m4/ltmain.sh000077500000000000000000007330601202063157500171230ustar00rootroot00000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6b # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6b # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6b TIMESTAMP="" package_revision=1.3017 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 pcb2gcode-1.1.4-git20120902/m4/missing000077500000000000000000000262331202063157500166740ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, 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 . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: pcb2gcode-1.1.4-git20120902/main.cpp000066400000000000000000000170111202063157500163770ustar00rootroot00000000000000/* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010, 2011 Patrick Birnzain and others * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include #include using std::cout; using std::cerr; using std::endl; using std::fstream; #include using Glib::ustring; #include #include #include "gerberimporter.hpp" #include "surface.hpp" #include "ngc_exporter.hpp" #include "board.hpp" #include "drill.hpp" #include "options.hpp" #include "svg_exporter.hpp" #include #include #include #include int main( int argc, char* argv[] ) { Glib::init(); Gdk::wrap_init(); options::parse( argc, argv ); po::variables_map& vm = options::get_vm(); if( vm.count("version") ) { cout << PACKAGE_STRING << endl; exit(0); } if( vm.count("help") ) { cout << options::help(); exit(0); // cout << endl << "If you're new to pcb2gcode and CNC milling, please don't forget to read the attached documentation! " // << "It contains lots of valuable hints on both using this program and milling circuit boards." << endl; } double unit=1; if( vm.count("metric") ) { unit=1./25.4; } options::check_parameters(); // prepare environment shared_ptr isolator; if( vm.count("front") || vm.count("back") ) { isolator = shared_ptr( new Isolator() ); isolator->tool_diameter = vm["offset"].as() * 2*unit; isolator->zwork = vm["zwork"].as()*unit; isolator->zsafe = vm["zsafe"].as()*unit; isolator->feed = vm["mill-feed"].as()*unit; isolator->speed = vm["mill-speed"].as(); isolator->zchange = vm["zchange"].as()*unit; isolator->extra_passes = vm.count("extra-passes")?vm["extra-passes"].as():0; } shared_ptr cutter; if( vm.count("outline") || (vm.count("drill") && vm.count("milldrill")) ) { cutter = shared_ptr( new Cutter() ); cutter->tool_diameter = vm["cutter-diameter"].as()*unit; cutter->zwork = vm["zcut"].as()*unit; cutter->zsafe = vm["zsafe"].as()*unit; cutter->feed = vm["cut-feed"].as()*unit; cutter->speed = vm["cut-speed"].as(); cutter->zchange = vm["zchange"].as()*unit; cutter->do_steps = true; cutter->stepsize = vm["cut-infeed"].as()*unit; } shared_ptr driller; if( vm.count("drill") ) { driller = shared_ptr( new Driller() ); driller->zwork = vm["zdrill"].as()*unit; driller->zsafe = vm["zsafe"].as()*unit; driller->feed = vm["drill-feed"].as()*unit; driller->speed = vm["drill-speed"].as(); driller->zchange = vm["zchange"].as()*unit; } // prepare custom preamble string preamble, postamble; if( vm.count("preamble") ) { string name = vm["preamble"].as(); fstream in(name.c_str(),fstream::in); if(!in.good()) { cerr << "Cannot read preamble file \"" << name << "\"" << endl; exit(1); } string tmp((std::istreambuf_iterator(in)), std::istreambuf_iterator()); preamble = tmp + "\n\n"; } if( vm.count("postamble") ) { string name = vm["postamble"].as(); fstream in(name.c_str(),fstream::in); if(!in.good()) { cerr << "Cannot read preamble file \"" << name << "\"" << endl; exit(1); } string tmp((std::istreambuf_iterator(in)), std::istreambuf_iterator()); postamble = tmp + "\n\n"; } shared_ptr board( new Board( vm["dpi"].as(), vm.count("fill-outline"), vm.count("fill-outline") ? vm["outline-width"].as() * unit : INFINITY )); // this is currently disabled, use --outline instead if( vm.count("margins") ) board->set_margins( vm["margins"].as() ); // load files try { // import layer files, create surface cout << "Importing front side... "; try { string frontfile = vm["front"].as(); boost::shared_ptr importer( new GerberImporter(frontfile) ); board->prepareLayer( "front", importer, isolator, false, vm.count("mirror-absolute") ); cout << "done\n"; } catch( import_exception& i ) { cout << "error\n"; } catch( boost::exception& e ) { cout << "not specified\n"; } cout << "Importing back side... "; try { string backfile = vm["back"].as(); boost::shared_ptr importer( new GerberImporter(backfile) ); board->prepareLayer( "back", importer, isolator, true, vm.count("mirror-absolute") ); cout << "done\n"; } catch( import_exception& i ) { cout << "error\n"; } catch( boost::exception& e ) { cout << "not specified\n"; } cout << "Importing outline... "; try { string outline = vm["outline"].as(); boost::shared_ptr importer( new GerberImporter(outline) ); board->prepareLayer( "outline", importer, cutter, !vm.count("front"), vm.count("mirror-absolute") ); cout << "done\n"; } catch( import_exception& i ) { cout << "error\n"; } catch( boost::exception& e ) { cout << "not specified\n"; } } catch(import_exception ie) { if( ustring const* mes = boost::get_error_info(ie) ) std::cerr << "Import Error: " << *mes; else std::cerr << "Import Error: No reason given."; } //SVG EXPORTER shared_ptr svgexpo( new SVG_Exporter( board ) ); try { board->createLayers(); // throws std::logic_error cout << "Calculated board dimensions: " << board->get_width() << "in x " << board->get_height() << "in" << endl; //SVG EXPORTER if( vm.count("svg") ) { cout << "Create SVG File ... " << vm["svg"].as() << endl; svgexpo->create_svg( vm["svg"].as() ); } shared_ptr exporter( new NGC_Exporter( board ) ); exporter->add_header( PACKAGE_STRING ); if( vm.count("preamble") ) exporter->set_preamble(preamble); if( vm.count("postamble") ) exporter->set_postamble(postamble); //SVG EXPORTER if( vm.count("svg") ) exporter->set_svg_exporter( svgexpo ); exporter->export_all(vm); } catch( std::logic_error& le ) { cout << "Internal Error: " << le.what() << endl; } catch( std::runtime_error& re ) { } if( vm.count("drill") ) { cout << "Converting " << vm["drill"].as() << "... "; try { ExcellonProcessor ep( vm["drill"].as(), board->get_min_x() + board->get_max_x() ); ep.add_header( PACKAGE_STRING ); if( vm.count("preamble") ) ep.set_preamble(preamble); if( vm.count("postamble") ) ep.set_postamble(postamble); //SVG EXPORTER if( vm.count("svg") ) ep.set_svg_exporter( svgexpo ); if( vm.count("milldrill") ) ep.export_ngc( vm["drill-output"].as(), cutter, !vm.count("drill-front"), vm.count("mirror-absolute") ); else ep.export_ngc( vm["drill-output"].as(), driller, !vm.count("drill-front"), vm.count("mirror-absolute") ); cout << "done.\n"; } catch( drill_exception& e ) { cout << "ERROR.\n"; } } else { cout << "No drill file specified.\n"; } } pcb2gcode-1.1.4-git20120902/man/000077500000000000000000000000001202063157500155225ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/man/Makefile.am000066400000000000000000000000601202063157500175520ustar00rootroot00000000000000man_MANS = pcb2gcode.1 EXTRA_DIST = $(man_MANS) pcb2gcode-1.1.4-git20120902/man/pcb2gcode.1000066400000000000000000000145471202063157500174470ustar00rootroot00000000000000.TH PCB2GCODE 1 "2010-11-10" .\" Please adjust this date whenever revising the manpage. .SH NAME pcb2gcode \- command-line tool for engraving PCBs using CNCs .SH SYNOPSIS .B pcb2gcode .RI [ options ] .SH DESCRIPTION This manual page documents briefly the \fBpcb2gcode\fP command. .PP \fBpcb2gcode\fP is a program that takes the files typically produced by PCB (printed circuit board) designing tools, in particular Gerber (RS-274X) and Excellon (an RS-274C variant) files as parsed by \fBgerbv\fP, and produces files that can be used to control a CNC (computer numerical control) milling machine. These files are in G code format (RS-274D/NGC) that can be read, for example, by the linuxcnc EMC2 system. When these files are executed, an engraving bit is used to remove the surface from a copper covered circuit board, thus creating isolated areas. In another step, holes are drilled into the board at the appropriate positions, and it can be cut out in another step. (For each step, a separate output file is created.) .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. Instead of passing all options on the command line, nearly all options can be stored in a file named \fImillproject\fP. There, options are given one per line as \fIoption\fP=\fIvalue\fP pairs (without the two dashes), and can be separated by blank lines and commented (everything after a `#` character is treated as a comment). Options that don't take an argument (like \fB\-\-metric\fP) are entered as \fIoption\fP=1 there. Unless configured otherwise, numeric values are in units of inch and inch/minute. When the \fB\-\-metric\fP option is given, they are in mm and mm/minute. .TP \fB\-\-front\fP \fIfilename.gbr\fP Engrave the front side according to the given file (typically used in two-sided boards). .TP \fB\-\-back\fP \fIfilename.gbr\fP Engrave the back side according to the given file. .TP \fB\-\-outline\fP \fIfilename.gbr\fP Cut out the board to the shape exposed in the given file. Typically, there is only a polygon in this gerber file. Alternatively, this file can contain a closed line chain (see \fB\-\-fill-outline\fP). .TP \fB\-\-drill\fP \fIfilename.cnc\fP Convert the given file (containing drill sizes and positions) to G-code. .PP For every option \fB\-\-x\fP that takes a filename, there is an \fB\-\-x\-output\fP option that specifies where the resulting G-code is saved, defaulting to \fIx.gbr\fP. Instead of giving each output file name, the \fB\-\-basename\fP option can be used; the base name will be used as a prefix to the default output file names. .PP The parameters that define engraving are: .TP \fB\-\-zwork\fP \fIunit\fP Z-coordinate at which engraving happens .TP \fB\-\-zsafe\fP \fIunit\fP Z-coordinate for movements between engraving steps .TP \fB\-\-mill-feed\fP \fIunit/minute\fP feed rate at which engraving takes place (horizontal speed) .TP \fB\-\-mill-speed\fP \fIrpm\fP spindle speed during engraving (rounds per minute) .TP \fB\-\-offset\fP \fIunit\fP distance by which the tool movement will be outset from the contours in the gerber file to be engraved If this distance can't be satisfied because copper areas are too close, a warning will be printed and the line will be drawn between the areas. This behavior can be used to get voronoi-style (flood-filling) areas; simply set the offset to a large value (like 1 inch). .TP \fB\-\-extra-passes\fP \fInumber\fP number of additional isolation passes For each extra pass, engraving is repeated with the offset width increased by half its original value, creating wider isolation areas. .PP The parameters that define outline cutting are: .TP \fB\-\-cutter-diameter\fP \fIunit\fP amount by half of which the tool path is outset from the shape in the outline file .TP \fB\-\-zcut\fP \fIunit\fP Z-coordinate indicating where the outline cutting ends .TP \fB\-\-cut-feed\fP \fIunit/minute\fP feed rate at which outline cutting takes place (horizontal speed) .TP \fB\-\-cut-speed\fP \fIrpm\fP spindle speed during outline cutting (rounds per minute) .TP \fB\-\-cut-infeed\fP \fIunit\fP maximum Z distance that is cut away in a single pass (positive value; if less then zcut's value, there will be more than one pass) .TP \fB\-\-fill-outline\fP If \fB\-\-fill-outline\fP is given, it is assumed that the outline file contains not a polygon but a closed chain of lines. The board will be cut along the centres of these lines. .TP \fB\-\-outline-width \fIunit\fP\fP thickness of the lines that form the outline (if \fB\-\-fill-outline\fP is given) .PP Drilling takes another set of options: .TP \fB\-\-zdrill\fP \fIunit\fP Z value down to which will be drilled .TP \fB\-\-zchange\fP \fIunit\fP Z-coordinate for movements with the drill head .TP \fB\-\-drill-feed\fP \fIunit/minute\fP feed rate for drilling (vertical speed) .TP \fB\-\-drill-speed\fP \fIrpm\fP spindle speed during drilling (rounds per minute) .TP \fB\-\-milldrill\fP If \fB\-\-milldrill\fP is given, the milling head will be used to drill the holes in the PCB. Holes up to the size of the milling head will be drilled regularly (possibly creating a bigger hole than intended), the other holes are created by moving the head in circles using the feed and infeed parameters used in cutting. .TP \fB\-\-drill\-front\fP use the coordinates of the front side for drilling instead of the coordinates of the back side .PP These options govern the general behavior of \fBpcb2gcode\fP: .TP \fB\-\-dpi\fP \fIdpi\fP resolution used internally (defaults to 1000) .TP \fB\-\-mirror-absolute\fP mirror operations on the back side along the Y axis instead of the board center, which is the default .PP The only options that can't be used in the \fImillproject\fP file are the common ones: .TP .B \-?, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .SH SEE ALSO .BR gerbv (1), .BR pcb (1). .br .\" from man(7) .de URL \\$2 \(laURL: \\$1 \(ra\\$3 .. .if \n[.g] .mso www.tmac For further information about \fBpcb2gcode\fP, see the .URL "http://sourceforge.net/apps/mediawiki/pcb2gcode/" "project wiki" "." .SH AUTHOR pcb2gcode was written by Patrick Birnzain, loosely based on an earlier program of the same name by Jeff Prothero (Cynbe ru Taren), which in term was based even more loosely on Matthew Sager's gerber_to_gcode. .PP This manual page was written by chrysn for the Debian project (and may be used by others). pcb2gcode-1.1.4-git20120902/mill.cpp000066400000000000000000000014261202063157500164130ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "mill.hpp" pcb2gcode-1.1.4-git20120902/mill.hpp000066400000000000000000000023101202063157500164110ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef MILL_H #define MILL_H #include class Mill { public: virtual ~Mill() {}; double feed; int speed; double zchange; double zsafe; double zwork; }; class RoutingMill : public Mill { public: double tool_diameter; }; class Isolator : public RoutingMill { public: int extra_passes; }; class Cutter : public RoutingMill { public: bool do_steps; double stepsize; }; class Driller : public Mill { }; #endif // MILL_H pcb2gcode-1.1.4-git20120902/millproject000066400000000000000000000014051202063157500172160ustar00rootroot00000000000000# this is an example config file for pcb2gcode. # place this in the same directory as your gerber files to save typing # You may want to uncomment and change those in local project files #front=board.front.gbr #back=board.back.gbr #outline=board.outline.gbr #drill=board.plated-drill.cnc # The board outline is 10mil wide, no holes fill-outline = yes outline-width = 0.010 # parameters for isolation routing / engraving / etching #offset=1 # uncomment for voronoi regions #offset=0.010 # uncomment for 20mil isolator zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 # parameters for cutting out boards cutter-diameter=0.03937 zcut=-0.08 cut-feed=3 cut-speed=20000 cut-infeed=0.1 # drilling parameters zdrill=-0.08 zchange=0.8 drill-feed=3 drill-speed=20000 pcb2gcode-1.1.4-git20120902/ngc_exporter.cpp000066400000000000000000000152601202063157500201560ustar00rootroot00000000000000/* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "ngc_exporter.hpp" #include #include #include using namespace std; NGC_Exporter::NGC_Exporter( shared_ptr board ) : Exporter(board) { this->board = board; bDoSVG = false; } void NGC_Exporter::set_svg_exporter( shared_ptr svgexpo ) { this->svgexpo = svgexpo; bDoSVG = true; } void NGC_Exporter::add_header( string header ) { this->header.push_back(header); } void NGC_Exporter::export_all(boost::program_options::variables_map& options) { BOOST_FOREACH( string layername, board->list_layers() ) { std::stringstream option_name; option_name << layername << "-output"; string of_name = options[option_name.str()].as(); cerr << "Current Layer: " << layername << ", exporting to " << of_name << "." << endl; export_layer( board->get_layer(layername), of_name); } } double NGC_Exporter::get_tolerance( void ) { // set maximum deviation to 5 pixels to ensure smooth movement return 5.0/this->board->get_dpi(); } void NGC_Exporter::export_layer( shared_ptr layer, string of_name ) { string layername = layer->get_name(); shared_ptr mill = layer->get_manufacturer(); bool bSvgOnce = TRUE; // open output file std::ofstream of; of.open( of_name.c_str() ); // write header to .ngc file BOOST_FOREACH( string s, header ) { of << "( " << s << " )" << endl; } of << endl; of.setf( ios_base::fixed ); of.precision(5); of << setw(7); // preamble of << "G94 ( Inches per minute feed rate. )\n" << "G20 ( Units == INCHES. )\n" << "G90 ( Absolute coordinates. )\n" << "S" << left << mill->speed << " ( RPM spindle speed. )\n" << "M3 ( Spindle on clockwise. )\n" << endl; of << "G64 P" << get_tolerance() << " ( set maximum deviation from commanded toolpath )\n" << endl; //SVG EXPORTER if (bDoSVG) { //choose a color svgexpo->set_rand_color(); } // contours BOOST_FOREACH( shared_ptr path, layer->get_toolpaths() ) { // retract, move to the starting point of the next contour of << "G04 P0 ( dwell for no time -- G64 should not smooth over this point )\n"; of << "G00 Z" << mill->zsafe << " ( retract )\n" << endl; of << "G00 X" << path->begin()->first << " Y" << path->begin()->second << " ( rapid move to begin. )\n"; //SVG EXPORTER if (bDoSVG) { svgexpo->move_to(path->begin()->first, path->begin()->second); bSvgOnce = TRUE; } /** if we're cutting, perhaps do it in multiple steps, but do isolations just once. * i know this is partially repetitive, but this way it's easier to read */ shared_ptr cutter = boost::dynamic_pointer_cast( mill ); if( cutter && cutter->do_steps ) { // cutting double z_step = cutter->stepsize; double z = mill->zwork + z_step * abs( int( mill->zwork / z_step ) ); while( z >= mill->zwork ) { of << "G01 Z" << z << " F" << mill->feed << " ( plunge. )\n"; of << "G04 P0 ( dwell for no time -- G64 should not smooth over this point )\n"; icoords::iterator iter = path->begin(); icoords::iterator last = path->end(); // initializing to quick & dirty sentinel value icoords::iterator peek; while( iter != path->end() ) { peek = iter + 1; if( /* it's necessary to write the coordinates if... */ last == path->end() || /* it's the beginning */ peek == path->end() || /* it's the end */ !( /* or if neither of the axis align */ ( last->first == iter->first && iter->first == peek->first ) || /* x axis aligns */ ( last->second == iter->second && iter->second == peek->second ) /* y axis aligns */ ) /* no need to check for "they are on one axis but iter is outside of last and peek" becaus that's impossible from how they are generated */ ) { of << "X" << iter->first << " Y" << iter->second << endl; //SVG EXPORTER if (bDoSVG) { if (bSvgOnce) svgexpo->line_to(iter->first, iter->second); } } last = iter; ++iter; } //SVG EXPORTER if (bDoSVG) { svgexpo->close_path(); bSvgOnce = FALSE; } z -= z_step; } } else { // isolating of << "G01 Z" << mill->zwork << " F" << mill->feed << " ( plunge. )\n"; of << "G04 P0 ( dwell for no time -- G64 should not smooth over this point )\n"; icoords::iterator iter = path->begin(); icoords::iterator last = path->end(); // initializing to quick & dirty sentinel value icoords::iterator peek; while( iter != path->end() ) { peek = iter + 1; if( /* it's necessary to write the coordinates if... */ last == path->end() || /* it's the beginning */ peek == path->end() || /* it's the end */ !( /* or if neither of the axis align */ ( last->first == iter->first && iter->first == peek->first ) || /* x axis aligns */ ( last->second == iter->second && iter->second == peek->second ) /* y axis aligns */ ) /* no need to check for "they are on one axis but iter is outside of last and peek" becaus that's impossible from how they are generated */ ) { of << "X" << iter->first << " Y" << iter->second << endl; //SVG EXPORTER if (bDoSVG) if (bSvgOnce) svgexpo->line_to(iter->first, iter->second); } last = iter; ++iter; } //SVG EXPORTER if (bDoSVG) { svgexpo->close_path(); bSvgOnce = FALSE; } } } of << endl; // retract, end of << "G04 P0 ( dwell for no time -- G64 should not smooth over this point )\n"; of << "G00 Z" << mill->zchange << " ( retract )\n" << endl; of << "M9 ( Coolant off. )\n"; of << "M2 ( Program end. )\n\n"; of.close(); //SVG EXPORTER if (bDoSVG) { svgexpo->stroke(); } } void NGC_Exporter::set_preamble(string _preamble) { preamble=_preamble; } void NGC_Exporter::set_postamble(string _postamble) { postamble=_postamble; } pcb2gcode-1.1.4-git20120902/ngc_exporter.hpp000066400000000000000000000035021202063157500201570ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef NGCEXPORTER_H #define NGCEXPORTER_H #include using std::vector; #include using std::string; using std::pair; #include using std::ofstream; #include using boost::shared_ptr; #include #include "coord.hpp" #include "mill.hpp" #include "exporter.hpp" #include "svg_exporter.hpp" class NGC_Exporter : public Exporter { public: NGC_Exporter( shared_ptr board ); /* virtual void add_path( shared_ptr ); */ /* virtual void add_path( vector< shared_ptr > ); */ void add_header( string ); void export_all( boost::program_options::variables_map& ); //SVG EXPORTER void set_svg_exporter( shared_ptr svgexpo ); void set_preamble(string); void set_postamble(string); protected: double get_tolerance( void ); void export_layer( shared_ptr layer, string of_name ); //SVG EXPORTER bool bDoSVG; shared_ptr svgexpo; shared_ptr board; vector header; string preamble, postamble; }; #endif // NGCEXPORTER_H pcb2gcode-1.1.4-git20120902/options.cpp000066400000000000000000000263761202063157500171640ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "options.hpp" #include "config.h" #include #include #include #include #include using std::cerr; using std::endl; options& options::instance() { static options singleton; return singleton; } void options::parse( int argc, char** argv ) { // guessing causes problems when one option is the start of another // (--drill, --drill-diameter); see bug 3089930 int style = po::command_line_style::default_style & ~po::command_line_style::allow_guessing; po::options_description generic; generic.add(instance().cli_options).add(instance().cfg_options); try { po::store(po::parse_command_line(argc, argv, generic, style), instance().vm); } catch( std::logic_error& e ) { cerr << "Error: You've supplied an invalid parameter.\n" << "Note that spindle speeds are integers!\n" << "Details: " << e.what() << endl; exit(101); } po::notify( instance().vm ); parse_files(); /* * this needs to be an extra step, as --basename modifies the default * values of the --...-output parameters */ string basename=""; if( instance().vm.count("basename")) { basename = instance().vm["basename"].as()+"_"; } string front_output="--front-output="+basename+"front.ngc"; string back_output="--back-output="+basename+"back.ngc"; string outline_output="--outline-output="+basename+"outline.ngc"; string drill_output="--drill-output="+basename+"drill.ngc"; const char *fake_basename_command_line[] = { "", front_output.c_str(), back_output.c_str(), outline_output.c_str(), drill_output.c_str() }; po::store(po::parse_command_line(5, (char**)fake_basename_command_line, generic, style), instance().vm); po::notify(instance().vm); } string options::help() { std::stringstream msg; msg << PACKAGE_STRING << "\n\n"; msg << instance().cli_options << instance().cfg_options; return msg.str(); } void options::parse_files() { std::string file("millproject"); try { std::ifstream stream; try { stream.open(file.c_str()); po::store( po::parse_config_file( stream, instance().cfg_options), instance().vm); } catch( std::exception& e ) { cerr << "Error parsing configuration file \"" << file << "\": " << e.what() << endl; } stream.close(); } catch( std::exception& e ) { cerr << "Error reading configuration file \"" << file << "\": " << e.what() << endl; } po::notify( instance().vm ); } options::options() : cli_options("command line only options"), cfg_options("generic options (CLI and config files)") { cli_options.add_options() ("help,?", "produce help message") ("version", "\n") ; cfg_options.add_options() ("front", po::value(), "front side RS274-X .gbr") ("back", po::value(), "back side RS274-X .gbr") ("outline", po::value(), "pcb outline polygon RS274-X .gbr") ("drill", po::value(), "Excellon drill file\n") ("svg", po::value(), "SVG output file. EXPERIMENTAL\n") ("zwork", po::value(), "milling depth in inches (Z-coordinate while engraving)") ("zsafe", po::value(), "safety height (Z-coordinate during rapid moves)") ("offset", po::value(), "distance between the PCB traces and the end mill path in inches; usually half the isolation width") ("mill-feed", po::value(), "feed while isolating in ipm") ("mill-speed", po::value(), "spindle rpm when milling") ("milldrill", "drill using the mill head") ("extra-passes", po::value(), "specify the the number of extra isolation passes, increasing the isolation width half the tool diameter with each pass\n") ("fill-outline", po::value()->zero_tokens(), "accept a contour instead of a polygon as outline") ("outline-width", po::value(), "width of the outline") ("cutter-diameter", po::value(), "diameter of the end mill used for cutting out the PCB") ("zcut", po::value(), "PCB cutting depth in inches.") ("cut-feed", po::value(), "PCB cutting feed") ("cut-speed", po::value(), "PCB cutting spindle speed") ("cut-infeed", po::value(), "Maximum cutting depth; PCB may be cut in multiple passes\n") ("zdrill", po::value(), "drill depth") ("zchange", po::value(), "tool changing height") ("drill-feed", po::value(), "drill feed; ipm") ("drill-speed", po::value(), "spindle rpm when drilling") ("drill-front", po::value()->zero_tokens(), "drill through the front side of board\n") ("metric", "use metric units for parameters. does not affect gcode output") ("dpi", po::value()->default_value(1000), "virtual photoplot resolution") ("mirror-absolute", po::value()->zero_tokens(), "mirror back side along absolute zero instead of board center\n") ("basename", po::value(), "prefix for default output file names") ("front-output", po::value()->default_value("front.ngc"), "output file for front layer") ("back-output", po::value()->default_value("back.ngc"), "output file for back layer") ("outline-output", po::value()->default_value("outline.ngc"), "output file for outline") ("drill-output", po::value()->default_value("drill.ngc"), "output file for drilling\n") ("preamble", po::value(), "gcode preamble file") ("postamble", po::value(), "gcode postamble file") ; } static void check_generic_parameters( po::variables_map const& vm ) { int dpi = vm["dpi"].as(); if( dpi < 100 ) cerr << "Warning: very low DPI value." << endl; if( dpi > 10000 ) cerr << "Warning: very high DPI value, processing may take extremely long" << endl; if( !vm.count("zsafe") ) { cerr << "Error: Safety height not specified.\n"; exit(5); } if( !vm.count("zchange") ) { cerr << "Error: Tool changing height not specified.\n"; exit(15); } } static void check_milling_parameters( po::variables_map const& vm ) { if(vm.count("front") || vm.count("back")) { if( !vm.count("zwork") ) { cerr << "Error: --zwork not specified.\n"; exit(1); } else if( vm["zwork"].as() > 0 ) { cerr << "Warning: Engraving depth (--zwork) is greater than zero!\n"; } if( !vm.count("offset") ) { cerr << "Error: Etching --offset not specified.\n"; exit(4); } if( !vm.count("mill-feed") ) { cerr << "Error: Milling feed [ipm] not specified.\n"; exit(13); } if( !vm.count("mill-speed") ) { cerr << "Error: Milling speed [rpm] not specified.\n"; exit(14); } // required parameters present. check for validity. if( vm["zsafe"].as() <= vm["zwork"].as() ) { cerr << "Error: The safety height --zsafe is lower than the milling " << "height --zwork. Are you sure this is correct?\n"; exit(15); } if( vm["mill-feed"].as() < 0 ) { cerr << "Error: Negative milling feed (--mill-feed).\n"; exit(17); } if( vm["mill-speed"].as() < 0 ) { cerr << "Error: --mill-speed < 0.\n"; exit(16); } } } static void check_drilling_parameters( po::variables_map const& vm ) { if( vm.count("drill") ) { if( !vm.count("zdrill") ) { cerr << "Error: Drilling depth (--zdrill) not specified.\n"; exit(9); } if( !vm.count("zchange") ) { cerr << "Error: Drill bit changing height (--zchange) not specified.\n"; exit(10); } if( !vm.count("drill-feed") ) { cerr << "Error:: Drilling feed (--drill-feed) not specified.\n"; exit(11); } if( !vm.count("drill-speed") ) { cerr << "Error: Drilling spindle RPM (--drill-speed) not specified.\n"; exit(12); } if( vm["zsafe"].as() <= vm["zdrill"].as() ) { cerr << "Error: The safety height --zsafe is lower than the drilling " << "height --zdrill!\n"; exit(18); } if( vm["zchange"].as() <= vm["zdrill"].as() ) { cerr << "Error: The safety height --zsafe is lower than the tool " << "change height --zchange!\n"; exit(19); } if( vm["drill-feed"].as() <= 0 ) { cerr << "Error: The drilling feed --drill-feed is <= 0.\n"; exit(20); } if( vm["drill-speed"].as() < 0 ) { cerr << "Error: --drill-speed < 0.\n"; exit(17); } } } static void check_cutting_parameters( po::variables_map const& vm ) { if( vm.count("outline") || (vm.count("drill") && vm.count("milldrill"))) { if( vm.count("fill-outline") ) { if(!vm.count("outline-width")) { cerr << "Error: For outline filling, a width (--outline-width) has to be specified.\n"; exit(25); } else { double outline_width = vm["outline-width"].as(); if( outline_width < 0 ) { cerr << "Error: Specified outline width is less than zero!\n"; exit(26); } else if( outline_width == 0 ) { cerr << "Error. Specified outline width is zero!\n"; exit(27); } else { std::stringstream width_sb; if( (vm.count("metric") && outline_width >= 10) || (!vm.count("metric") && outline_width >= 0.4) ) { width_sb << outline_width << (vm.count("metric") ? " mm" : " inch"); cerr << "Warning: You specified an outline-width of " << width_sb.str() << "!\n"; } } } } if( !vm.count("zcut") ) { cerr << "Error: Board cutting depth (--zcut) not specified.\n"; exit(5); } if( !vm.count("cutter-diameter") ) { cerr << "Error: Cutter diameter not specified.\n"; exit(15); } if( !vm.count("cut-feed") ) { cerr << "Error: Board cutting feed (--cut-feed) not specified.\n"; exit(6); } if( !vm.count("cut-speed") ) { cerr << "Error: Board cutting spindle RPM (--cut-speed) not specified.\n"; exit(7); } if( !vm.count("cut-infeed") ) { cerr << "Error: Board cutting infeed (--cut-infeed) not specified.\n"; exit(8); } if( vm["zsafe"].as() <= vm["zcut"].as() ) { cerr << "Error: The safety height --zsafe is lower than the cutting " << "height --zcut!\n"; exit(21); } if( vm["cut-feed"].as() <= 0 ) { cerr << "Error: The cutting feed --cut-feed is <= 0.\n"; exit(22); } if( vm["cut-speed"].as() < 0 ) { cerr << "Error: The cutting spindle speed --cut-speed is smaler than 0.\n"; exit(23); } if( vm["cut-infeed"].as() < 0.001 ) { cerr << "Error: Too small cutting infeed --cut-infeed.\n"; exit(24); } } } void options::check_parameters() { po::variables_map const& vm = instance().vm; try { check_generic_parameters( vm ); check_milling_parameters( vm ); check_cutting_parameters( vm ); check_drilling_parameters( vm ); } catch ( std::runtime_error& re ) { cerr << "Error: Invalid parameter. :-(\n"; exit(100); } } pcb2gcode-1.1.4-git20120902/options.hpp000066400000000000000000000027521202063157500171610ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef OPTIONS_HPP #define OPTIONS_HPP #include #include using boost::shared_ptr; #include namespace po = boost::program_options; #include #include #include using std::string; class options : boost::noncopyable { public: static void parse( int argc, char** argv ); static void parse_files(); static void check_parameters(); static po::variables_map& get_vm() { return instance().vm; }; static string help(); private: options(); po::variables_map vm; po::options_description cli_options; //! CLI options po::options_description cfg_options; //! generic options static options& instance(); }; #endif // OPTIONS_HPP pcb2gcode-1.1.4-git20120902/surface.cpp000066400000000000000000000470321202063157500171110ustar00rootroot00000000000000/* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #include "surface.hpp" using std::pair; // color definitions for the ARGB32 format used #define OPAQUE 0xFF000000 #define RED 0xFF0000FF #define GREEN 0xFF00FF00 #define BLUE 0xFFFF0000 #define WHITE ( RED | GREEN | BLUE ) // while equal by value, OPAQUE is used for |-ing and BLACK for setting or comparison #define BLACK ( RED & GREEN & BLUE ) void Surface::make_the_surface(uint width, uint height) { pixbuf = Gdk::Pixbuf::create(Gdk::COLORSPACE_RGB, true, 8, width, height); cairo_surface = Cairo::ImageSurface::create(pixbuf->get_pixels(), Cairo::FORMAT_ARGB32, width, height, pixbuf->get_rowstride()); } #include #include using std::cerr; using std::endl; #define PRC(x) *(reinterpret_cast(x)) Surface::Surface( guint dpi, ivalue_t min_x, ivalue_t max_x, ivalue_t min_y, ivalue_t max_y ) : dpi(dpi), min_x(min_x), max_x(max_x), min_y(min_y), max_y(max_y), zero_x(-min_x*(ivalue_t)dpi + (ivalue_t)procmargin), zero_y(-min_y*(ivalue_t)dpi + (ivalue_t)procmargin), clr(32) { guint8* pixels; int stride; make_the_surface( (max_x - min_x) * dpi + 2*procmargin, (max_y - min_y) * dpi + 2*procmargin ); usedcolors.push_back(BLACK); usedcolors.push_back(WHITE); /* "Note that the buffer is not cleared; you will have to fill it completely yourself." */ printf("clearing\n"); pixels = cairo_surface->get_data(); stride = cairo_surface->get_stride(); for(int y = 0; y < pixbuf->get_height(); y++ ) { for(int x = 0; x < pixbuf->get_width(); x++ ) { PRC(pixels + x*4 + y*stride) = BLACK; } } } void Surface::render( boost::shared_ptr importer ) throw(import_exception) { importer->render(cairo_surface, dpi, min_x - static_cast(procmargin)/dpi, min_y - static_cast(procmargin)/dpi ); } #include using std::cout; using std::endl; using std::list; double distancePointLine(const icoordpair &x,const icoordpair &la,const icoordpair &lb) { icoordpair nab; //normal vector to a-b= {-ab_y,ab_x} nab.first=-(la.second-lb.second); nab.second=(la.first-lb.first); double lnab=sqrt(nab.first*nab.first+nab.second*nab.second); double skalar; //product skalar=nab.first*(x.first-la.first)+nab.second*(x.second-la.second); return fabs(skalar/lnab ); } void simplifypath(shared_ptr outline, double accuracy) { //take two points of the path // and their interconnecting path. // if the distance between all intermediate points and this line is smaller // than the accuracy, all the points in between can be removed.. bool change; int lasterased=0; const bool debug=false; std::list l; for(int i=0;isize();i++) { icoordpair &ii=(*outline)[i]; l.push_back(ii); } if (debug) cerr<<"outline size:"<size()<::iterator a=l.begin(); do { list::iterator b,c; b=a;b++; c=b;c++; if((b==l.end())) break; double d=distancePointLine(*b, *a,*c); if((dresize(0); for( list::iterator a=l.begin();a!=l.end();a++) outline->push_back(*a); if(debug) cerr<<"outline size:"<size()< > Surface::get_toolpath( shared_ptr mill, bool mirrored, bool mirror_absolute ) { Isolator* iso = dynamic_cast(mill.get()); int extra_passes = iso?iso->extra_passes:0; coords components = fill_all_components(); int added = -1; int contentions = 0; int grow = mill->tool_diameter / 2 * dpi; ivalue_t double_mirror_axis = mirror_absolute ? 0 : (min_x + max_x); vector< shared_ptr > toolpath; for( int pass = 0; pass <= extra_passes && added != 0; pass++ ) { for(int i = 0; i < grow && added != 0; i++) { added = 0; BOOST_FOREACH( coordpair c, components ) { added += grow_a_component(c.first, c.second, contentions); } } coords inside, outside; BOOST_FOREACH( coordpair c, components ) { calculate_outline( c.first, c.second, outside, inside ); inside.clear(); shared_ptr outline( new icoords() ); // i'm not sure wheter this is the right place to do this... // that "mirrored" flag probably is a bad idea. BOOST_FOREACH( coordpair c, outside ) { outline->push_back( icoordpair( // tricky calculations mirrored ? (double_mirror_axis - xpt2i(c.first)) : xpt2i(c.first), min_y + max_y - ypt2i(c.second) ) ); } if(0) simplifypath(outline,0.005); outside.clear(); toolpath.push_back(outline); } } if(contentions) { cerr << "Warning: pcb2gcode hasn't been able to fulfill all" << " clearance requirements and tried a best effort approach" << " instead. You may want to check the g-code output and" << " possibly use a smaller milling width.\n"; } save_debug_image("traced"); return toolpath; } guint32 Surface::get_an_unused_color() { bool badcol; do { badcol=false; clr = rand(); for(int i=0;i > Surface::fill_all_components() { std::vector< pair > components; int max_x = cairo_surface->get_width() - 1; int max_y = cairo_surface->get_height() - 1; guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); for(int y = 0; y <= max_y; y ++) { for(int x = 0; x <= max_x; x ++) { if( (PRC(pixels + x*4 + y*stride) | OPAQUE) == WHITE ) { components.push_back( pair(x,y) ); fill_a_component(x, y, get_an_unused_color()); } } } return components; } #include // fill_a_component does not do any image boundary checks out of performance reasons. void Surface::fill_a_component(int x, int y, guint32 argb) { guint32 newclr = argb; guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); guint8* here = pixels + x*4 + y*stride; guint8* maxhere = pixels + (cairo_surface->get_width()-1)*4 + (cairo_surface->get_height()-1)*stride; guint32 ownclr = PRC(here); std::stack< pair > queued_pixels; queued_pixels.push( pair(x,y) ); while( queued_pixels.size() ) { pair current_pixel = queued_pixels.top(); x = current_pixel.first; y = current_pixel.second; queued_pixels.pop(); here = pixels + x*4 + y*stride; PRC(here) = newclr; if( here+4 <= maxhere && PRC(here+4) == ownclr ) queued_pixels.push( pair(x+1, y) ); if( pixels <= here-4 && PRC(here-4) == ownclr ) queued_pixels.push( pair(x-1, y) ); if( here+stride <= maxhere && PRC(here+stride) == ownclr ) queued_pixels.push( pair(x, y+1) ); if( pixels <= here-stride && PRC(here-stride) == ownclr ) queued_pixels.push( pair(x, y-1) ); if( here+4+stride <= maxhere && PRC(here+4+stride) == ownclr ) queued_pixels.push( pair(x+1, y+1) ); if( here-4+stride <= maxhere && PRC(here-4+stride) == ownclr ) queued_pixels.push( pair(x-1, y+1) ); if( pixels <= here+4-stride && PRC(here+4-stride) == ownclr ) queued_pixels.push( pair(x+1, y-1) ); if( pixels <= here-4-stride && PRC(here-4-stride) == ownclr ) queued_pixels.push( pair(x-1, y-1) ); } cairo_surface->mark_dirty(); } // starting from a pixel at xy within a "component" aka a blob of same-colored pixels, increase x until it is next to a new color void Surface::run_to_border(int& x, int& y) { guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); guint32 start_color = PRC(pixels + x*4 + y * stride); if( start_color == 0 ) { PRC(pixels + x*4 + y * stride) = RED; save_debug_image("error_runtoborder"); std::stringstream msg; msg << "run_to_border: start_color == 0 at (" << x << "," << y << ")\n"; throw std::logic_error( msg.str() ); } while( PRC(pixels + x*4 + y*stride) == start_color ) x++; } int offset8[8][2] = {{1,0}, {1,1}, {0,1}, {-1,1}, {-1,0}, {-1,-1}, {0,-1}, {1,-1}}; int offset4[4][2] = {{1,0}, {0,1}, {-1,0}, {0,-1}}; // true if free for growing components inline bool Surface::allow_grow(int x, int y, guint32 ownclr) { if(x <= 0 || y <= 0) return false; if(x >= cairo_surface->get_width()-1) return false; if(y >= cairo_surface->get_height()-1) return false; guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); for(int i = 7; i >= 0; i--) { int cx = x + offset8[i][0]; int cy = y + offset8[i][1]; guint8* pixel = pixels + cx * 4 + cy * stride; // surrounding pixel != own color, not black -> other component! if( PRC(pixel) != ownclr && ( PRC(pixel) | OPAQUE) != BLACK ) return false; } return true; } int growoff_o[3][3][2] = { {{ 0,-1}, {-1,-1}, {-1,0}}, {{ 1,-1}, { 0, 0}, {-1,1}}, {{ 1, 0}, { 1, 1}, { 0,1}} }; int growoff_i[3][3][2] = { {{-1, 0}, {-1, 1}, {0, 1}}, {{-1,-1}, { 0, 0}, {1, 1}}, {{ 0,-1}, { 1,-1}, {1, 0}} }; void Surface::calculate_outline(const int x, const int y, vector< pair >& outside, vector< pair >& inside) { guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); int max_y = cairo_surface->get_height(); guint32 owncolor = PRC(pixels + x*4 + y*stride); int xstart = x; int ystart = y; run_to_border(xstart,ystart); //change xstart so that xstart++ would be outside of the component int xout = xstart; int yout = ystart; int xin = xout-1; int yin = yout; outside.push_back( pair(xout, yout) ); int blasts = 0; while(true) { int i; int steps = 0; // number of steps done in 1 iteration of the while loop // step outside for(i = 0; i < 8; i++) { int xoff = xout - xin + 1; int yoff = yout - yin + 1; int xnext = xin + growoff_o[xoff][yoff][0]; int ynext = yin + growoff_o[xoff][yoff][1]; if(xnext == xstart && ynext == ystart) { outside.push_back( pair(xout, yout) ); outside.push_back( pair(xstart, ystart) ); return; } if(xnext<0 || ynext<0 || xnext>stride || ynext>max_y) { save_debug_image("error_outerpath"); std::stringstream msg; msg << "Outside path reaches image margins at " << xin << "," << yin << ")\n"; throw std::logic_error( msg.str() ); } guint8* next = pixels + xnext*4 + ynext*stride; if( PRC(next) != owncolor ) { outside.push_back( pair(xout, yout) ); xout = xnext; yout = ynext; } else break; } if( i == 8 ) { save_debug_image("error_outsideoverstepping"); std::stringstream msg; msg << "Outside over-stepping at in(" << xin << "," << yin << ")\n"; throw std::logic_error( msg.str() ); } steps += i; // step inside for(i = 0; i < 8; i++) { int xoff = xin - xout + 1; int yoff = yin - yout + 1; int xnext = xout + growoff_i[xoff][yoff][0]; int ynext = yout + growoff_i[xoff][yoff][1]; // next pixel is checked clockwise guint8* next = pixels + xnext*4 + ynext*stride; if(xnext<0 || ynext<0 || xnext>stride || ynext>max_y) { save_debug_image("error_innerpath"); std::stringstream msg; msg << "Inside path reaches image margins at " << xin << "," << yin << ")\n"; throw std::logic_error( msg.str() ); } if( PRC(next) == owncolor ) { inside.push_back( pair(xin, yin) ); xin = xnext; yin = ynext; } else break; } if( i == 8 ) { save_debug_image("error_insideoverstepping"); std::stringstream msg; msg << "Inside over-stepping at out(" << xout << "," << yout << ")\n"; throw std::logic_error( msg.str() ); } steps += i; // check whether we made any progress calculating the trace outline. // if we haven't, our algorithm is deadlocked by stray pixels // we try to resolve this by enforcing the algorithm's constraints // for the components if( steps == 0 ) { int changes = 0; // test constraints for surrounding pixels, enforce if necessary for(i = 0; i < 8; i++) { int cx = xin + offset8[i][0]; int cy = yin + offset8[i][1]; guint8* pixel = pixels + cx * 4 + cy * stride; if( allow_grow( cx, cy, owncolor) ) { PRC(pixel) = owncolor; changes++; } // if a component pixel can't be reached non-diagonally, clear it // even if it was set just now int j; for(j = 0; j < 4; j++) { if( PRC( pixels + (cx + offset4[j][0]) * 4 + (cy + offset4[j][1]) * stride ) != BLACK ) break; } if( j == 4 ) { PRC(pixel) = BLACK; changes++; } } if( allow_grow(xstart, ystart, owncolor) ) PRC(pixels+xstart*4+ystart*stride) = owncolor; if( changes == 0 ) { PRC(pixels + xin*4 + yin*stride) |= RED; PRC(pixels + xout*4 + yout*stride) |= BLUE; save_debug_image("failed_repair"); std::stringstream msg; msg << "Failed repairing @ (" << xin << "," << yin << ")\n"; throw std::logic_error( msg.str() ); } else blasts++; // start right at the beginning. still more efficient than keeping // the history necessary to be able to continue next to the problem. inside.clear(); outside.clear(); xstart = x; ystart = y; run_to_border(xstart,ystart); xout = xstart; yout = ystart; xin = xout-1; yin = yout; outside.push_back( pair(xout, yout) ); continue; } } fprintf(stderr, "blasts: %d", blasts); } guint Surface::grow_a_component(int x, int y, int& contentions) { if( x < 0 || x >= cairo_surface->get_width() || y < 0 || y >= cairo_surface->get_height() ) { std::stringstream msg; msg << "grow_a_component(): invalid starting point: (" << x << "," << y << ")"; throw std::logic_error( msg.str() ); } contentions = 0; vector< pair > outside, inside; calculate_outline(x, y, outside, inside); guint8* pixels = cairo_surface->get_data(); int stride = cairo_surface->get_stride(); uint pixels_changed = 0; guint32 ownclr = PRC(pixels + x*4 + y*stride); for(uint i = 0; i < outside.size(); i++) { pair coord = outside[i]; if( allow_grow(coord.first, coord.second, ownclr) ) { PRC(pixels + coord.first*4 + coord.second*stride) = ownclr; pixels_changed++; } else { contentions++; } } return pixels_changed; } void Surface::add_mask( shared_ptr mask_surface) { Cairo::RefPtr mask_cairo_surface = mask_surface->cairo_surface; int max_x = cairo_surface->get_width(); int max_y = cairo_surface->get_height(); int stride = cairo_surface->get_stride(); if( max_x != mask_cairo_surface->get_width() || max_y != mask_cairo_surface->get_height() || stride != mask_cairo_surface->get_stride() ) { throw std::logic_error( "Surface shapes don't match." ); } guint8* pixels = cairo_surface->get_data(); guint8* mask_pixels = mask_cairo_surface->get_data(); for(int y = 0; y < max_y; y ++) { for(int x = 0; x < max_x; x ++) { PRC(pixels + x*4 + y*stride) &= PRC(mask_pixels + x*4 + y*stride); /* engrave only on the surface area */ PRC(pixels + x*4 + y*stride) |= (~PRC(mask_pixels + x*4 + y*stride) & (RED | BLUE)); /* tint the outiside in an own color to block extension */ } } } #include void Surface::save_debug_image(string message) { static uint debug_image_index = 0; opacify(pixbuf); pixbuf->save( (boost::format("outp%1%_%2%.png") % debug_image_index % message).str() , "png"); debug_image_index++; } void Surface::opacify( Glib::RefPtr pixbuf ) { int stride = pixbuf->get_rowstride(); guint8* pixels = pixbuf->get_pixels(); for(int y = 0; y < pixbuf->get_height(); y++ ) { for(int x = 0; x < pixbuf->get_width(); x++ ) { PRC(pixels + x*4 + y*stride) |= OPAQUE; } } } void Surface::fill_outline ( double linewidth ) { /* paint everything white that can not be reached from outside the image */ int stride = pixbuf->get_rowstride(); guint8* pixels = pixbuf->get_pixels(); /* in order to find out what is "outside", we need to walk "around' the image */ for(int x = 0; x < pixbuf->get_width(); x++ ) { if(PRC(pixels + x*4 + 0*stride) != BLACK) throw std::logic_error( "Non-black pixel at top border" ); if(PRC(pixels + x*4 + (pixbuf->get_height() - 1)*stride) != BLACK) throw std::logic_error( "Non-black pixel at bottom border" ); } for(int y = 0; y < pixbuf->get_height(); y++ ) { if(PRC(pixels + 0*4 + y*stride) != BLACK) throw std::logic_error( "Non-black pixel at left border" ); if(PRC(pixels + (pixbuf->get_width() - 1)*4 + y*stride) != BLACK) throw std::logic_error( "Non-black pixel at right border" ); } fill_a_component(0, 0, BLUE); /* everything else (that is, the area of the board) will be black * * saving the line where black starts for later when we need something * black so grow's run_to_border can work. */ int first_line_with_black = 0; for(int y = 0; y < pixbuf->get_height(); y++ ) { for(int x = 0; x < pixbuf->get_width(); x++ ) { if(PRC(pixels + x*4 + y*stride) != BLUE) { PRC(pixels + x*4 + y*stride) = BLACK; if(first_line_with_black == 0) { first_line_with_black = y; } } } } /* compensate for growth induced by line thicknesses. * * this could be done by growing the outline by a reduced amount later * (providing the lines are not wider than the tool), but by doing the * reduction now, the lines are already compensated for in the masking * step. thus, the engraving bit will really engrave once around the * outline instead of engraving in an area that is going to be removed, * potentially creating neater edges and providing a more realistic * rendition in png and gcode previews. */ int grow = linewidth / 2 * dpi; int contentions = 0; int added = 0; for(int i = 0; i < grow; ++i) { // starting at the very left added = grow_a_component(0, first_line_with_black + grow, contentions); } // if you can think of a sane situation in which either of this could // occur and nevertheless give a meaningful result, change it to a // warning. if(!added) throw std::logic_error( "Shrinking the outline by half the line width came to a halt." ); if(contentions) throw std::logic_error( "Shrinking the outline collided with something while there should not be anything." ); for(int y = 0; y < pixbuf->get_height(); y++ ) { for(int x = 0; x < pixbuf->get_width(); x++ ) { if(PRC(pixels + x*4 + y*stride) == BLUE) PRC(pixels + x*4 + y*stride) = BLACK; else PRC(pixels + x*4 + y*stride) = WHITE; } } save_debug_image("outline_filled"); } pcb2gcode-1.1.4-git20120902/surface.hpp000066400000000000000000000057221202063157500171160ustar00rootroot00000000000000 /* * This file is part of pcb2gcode. * * Copyright (C) 2009, 2010 Patrick Birnzain * * pcb2gcode 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. * * pcb2gcode 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 pcb2gcode. If not, see . */ #ifndef SURFACE_H #define SURFACE_H #include #include #include using boost::shared_ptr; #include using std::vector; #include #include #include using Glib::ustring; #include "coord.hpp" #include "mill.hpp" #include "gerberimporter.hpp" struct surface_exception : virtual std::exception, virtual boost::exception {}; class Surface : virtual public boost::noncopyable { public: Surface( guint dpi, ivalue_t min_x, ivalue_t max_x, ivalue_t min_y, ivalue_t max_y ); void render( boost::shared_ptr importer) throw(import_exception); boost::shared_ptr< Surface > deep_copy(); void save_debug_image(string); vector< shared_ptr > get_toolpath( shared_ptr mill, bool mirror, bool mirror_absolute ); ivalue_t get_width_in() { return max_x - min_x; }; ivalue_t get_height_in() { return max_y - min_y; }; void add_mask( shared_ptr); void fill_outline(double linewidth); protected: Glib::RefPtr pixbuf; Cairo::RefPtr cairo_surface; static const int procmargin = 10; const ivalue_t dpi; const ivalue_t min_x, max_x, min_y, max_y; const int zero_x, zero_y; void make_the_surface(uint width, uint height); // Image Processing Methods inline ivalue_t xpt2i( int xpt ) { return ivalue_t(xpt - zero_x) / ivalue_t(dpi); } inline ivalue_t ypt2i( int ypt ) { return ivalue_t(ypt - zero_y) / ivalue_t(dpi); } inline int xi2pt( ivalue_t xi ) { return int(xi * ivalue_t(dpi)) + zero_x; } inline int yi2pt( ivalue_t yi ) { return int(yi * ivalue_t(dpi)) + zero_y; } std::vector< std::pair > fill_all_components(); void fill_a_component(int x, int y, guint32 argb); uint grow_a_component(int x, int y, int& contentions); inline bool allow_grow(int x, int y, guint32 ownclr); void run_to_border(int& x, int& y); void calculate_outline(int x, int y, vector< std::pair >& outside, vector< std::pair >& inside); // Misc. Functions static void opacify( Glib::RefPtr pixbuf ); guint32 clr; guint32 get_an_unused_color(); std::vector usedcolors; }; #endif // SURFACE_H pcb2gcode-1.1.4-git20120902/svg_exporter.cpp000066400000000000000000000033061202063157500202040ustar00rootroot00000000000000/* * svg_exporter.cpp * * svg exporter for milling paths and drill-holes. * * Created by Ingo Randolf * * 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. * * * */ #include using std::cout; using std::endl; #include #include using namespace std; #include "svg_exporter.hpp" #include using std::pair; SVG_Exporter::SVG_Exporter( shared_ptr board ) { this->dpi = 72; this->board = board; } SVG_Exporter::~SVG_Exporter() { // something to do here? // closing svg?? } void SVG_Exporter::create_svg( string filename ) { //create the svg cairo_svgsurface = Cairo::SvgSurface::create(filename, board->get_width() * dpi, board->get_height() * dpi); //get the cairo drawing area cr = Cairo::Context::create(cairo_svgsurface); //setup cr->set_line_width(0.1); // set line width cr->set_source_rgba(1.0, 0.0, 0.0, 1.0); // set initial color... } void SVG_Exporter::set_rand_color() { cr->set_source_rgb( (rand()%256)/256., (rand()%256)/256., (rand()%256)/256.); } void SVG_Exporter::move_to(ivalue_t x, ivalue_t y) { cr->move_to(x * dpi, y * dpi); } void SVG_Exporter::line_to(ivalue_t x, ivalue_t y) { cr->line_to(x * dpi, y * dpi); } void SVG_Exporter::circle(ivalue_t x, ivalue_t y, ivalue_t rad) { cr->arc( x * dpi, y * dpi, rad, 0.0, 2.0 * M_PI); } void SVG_Exporter::close_path() { cr->close_path(); } void SVG_Exporter::stroke() { cr->stroke(); } void SVG_Exporter::show_page() { cr->show_page(); } void SVG_Exporter::copy_page() { cr->copy_page(); }pcb2gcode-1.1.4-git20120902/svg_exporter.hpp000066400000000000000000000025671202063157500202210ustar00rootroot00000000000000/* * svg_exporter.cpp * * svg exporter for milling paths and drill-holes. * * Created by Ingo Randolf * * 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. * * * */ #ifndef SVGEXPORTER_H #define SVGEXPORTER_H #include using std::map; #include using std::string; #include using std::vector; #include using std::map; #include using boost::shared_ptr; extern "C" { #include } #include #include #include using Glib::ustring; #include "coord.hpp" #include "exporter.hpp" class SVG_Exporter { public: //SVG_Exporter(string filename, const ivalue_t board_width, const ivalue_t board_height); SVG_Exporter( shared_ptr board ); ~SVG_Exporter(); void create_svg( string filename ); void set_rand_color(); void move_to(ivalue_t x, ivalue_t y); void line_to(ivalue_t x, ivalue_t y); void circle(ivalue_t x, ivalue_t y, ivalue_t rad); void close_path(); void stroke(); void show_page(); void copy_page(); protected: int dpi; shared_ptr board; Cairo::RefPtr cairo_svgsurface; Cairo::RefPtr cr; }; #endif // SVGEXPORTER_H pcb2gcode-1.1.4-git20120902/testing/000077500000000000000000000000001202063157500164245ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/README000066400000000000000000000015621202063157500173100ustar00rootroot00000000000000This is a quick hack to aid refactoring pcb2gcode. Needs python 2.7, meld Uses some of the example files that come with the (awesome) gerbv project. The script accepts 4 parameters: buildold: run pcb2gcode on all four example projects, save results and use as output of "old" version buildnew: same as buildold, but use as output of "new" version in comparison cmp: compare output of "old" and "new" version clean: remove files created by buildold and buildnew It is used as follows: 1) run "python test.py buildold" 2) refactor pcb2gcode 3) run "python test.py buildnew" 4) run "python test.py cmp" 5) if the output differs: a) meld is automatically called so you can check what has changed b) you fix your mistakes, continue with 3) if the output is the same: a) celebrate, then send me your improvements ;-) pcb2gcode-1.1.4-git20120902/testing/gerbv_example/000077500000000000000000000000001202063157500212445ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/am-test/000077500000000000000000000000001202063157500226165ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/am-test/am-test.gbx000066400000000000000000000022171202063157500246740ustar00rootroot00000000000000G04 Verification of all aperture macros * G04 Handcoded by Stefan Petersen * %MOIN*% %FSLAX23Y23*% %OFA0.0000B0.0000*% G90* %AMCIRCLE* 1,1,$1,0,0* % %AMVECTOR* 2,1,$1,0,0,$2+1,$3,-135* % %AMLINE1* 21,1,$1,$2,0,0,-135* % %AMLINE2* 22,1,$1,$2,0,0,-45* % %AMOUTLINE* 4,1,3,0.0,0.0,0.0,0.5,0.5,0.5,0.5,0.0,-25* % %AMPOLYGON* 5,1,$1,0,0,0.5,$2* % %AMMOIRE* 6,0,0,1.0,0.1,0.4,2,0.01,1,40* % %AMTHERMAL* 7,0,0,1.0,0.3,0.01,-13* % %ADD10C,0.0650*% %ADD11CIRCLE,.5*% %ADD12VECTOR,0.05X0X0*% %ADD13LINE1,0.3X0.05*% %ADD14LINE2,0.8X0.5*% %ADD15OUTLINE*% %ADD16POLYGON,3X-10*% %ADD17POLYGON,6X0*% %ADD18MOIRE*% %ADD19THERMAL*% G04 Outline* X0Y0D02* G54D10* X0Y0D01* X10000D01* Y10000D01* X0D01* Y0D01* G04 Dots * X2000Y5000D03* X3000D03* X4000D03* X5000D03* X6000D03* X7000D03* X8000D03* X9000D03* Y6200X9000D03* G04 Draw circle* G54D11* X2000Y5000D03* G04 Draw line vector * G54D12* X3000D03* G04 Draw line center * G54D13* X4000D03* G04 Draw line lower left * G54D14* X5000D03* G04 Draw outline * G54D15* X6000D03* G04 Draw polygon 1 * G54D16* X7000D03* G04 Draw polygon 1 * G54D17* X8000D03* G04 Draw Moire * G54D18* X9000D03* G04 Draw Thermal * G54D19* Y6200X9000D03* M02* pcb2gcode-1.1.4-git20120902/testing/gerbv_example/am-test/millproject000066400000000000000000000001471202063157500250670ustar00rootroot00000000000000dpi=400 back=am-test.gbx offset=0.1 zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 zchange=1.0 pcb2gcode-1.1.4-git20120902/testing/gerbv_example/dan/000077500000000000000000000000001202063157500220065ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/dan/README.txt000066400000000000000000000003431202063157500235040ustar00rootroot00000000000000# $Id$ This file is from Dan McMahill. This file uses rectangular apertures to draw lines which is now supported since release 0.0.9. top_sr.gbx is the same thing but with a "SR" (step and repeat) line added near the top. pcb2gcode-1.1.4-git20120902/testing/gerbv_example/dan/millproject000066400000000000000000000001661202063157500242600ustar00rootroot00000000000000dpi=500 front=top.gbx back=top_sr.gbx offset=0.010 zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 zchange=1.0 pcb2gcode-1.1.4-git20120902/testing/gerbv_example/dan/top.gbx000066400000000000000000000256671202063157500233320ustar00rootroot00000000000000G04 Title: (unknown), layergroup #2 * G04 Creator: pcb 1.6.3 * G04 CreationDate: Sat Jun 1 04:16:29 2002 UTC * G04 For: dan * G04 Format: Gerber/RS-274X * G04 PCB-Dimensions: 3359 2107 * G04 PCB-Coordinate-Origin: lower left * G04 Color: R0 G0 B0 * * %FSLAX23Y23*% %MOIN*% %ADD11C,0.035*% %ADD12C,0.010*% %ADD13C,0.025*% %ADD14R,0.040X0.040*% %ADD15R,0.070X0.070*% %ADD16C,0.008*% %ADD17R,0.060X0.060*% %ADD18R,0.090X0.090*% %AMTHERM1*7,0,0,0.090,0.060,0.015,45*% %ADD19THERM1*% %ADD20C,0.060*% %ADD21C,0.090*% %ADD22C,0.090X0.060*% %ADD23C,0.100*% %ADD24C,0.130*% %ADD25C,0.130X0.100*% %AMTHERM2*7,0,0,0.130,0.100,0.015,45*% %ADD26THERM2*% %ADD27R,0.150X0.150*% %ADD28R,0.180X0.180*% %ADD29R,0.095X0.095*% %ADD30R,0.125X0.125*% %ADD31C,0.030*% %ADD32C,0.026*% %ADD33C,0.056*% %ADD34R,0.026X0.026*% %ADD35R,0.056X0.056*% %AMTHERM3*7,0,0,0.090,0.060,0.015,45*% %ADD36THERM3*% %IPPOS*% G01* %LNcomponent*% %LPD*% G04 LayerGroup: 2 * G04 Layer: "component" (4) * G54D11*Y1132D02*Y1207D01* G54D12*X1470Y1377D02*X1450Y1397D01* X1470Y1337D02*Y1377D01* X1490Y1317D02*X1470Y1337D01* X1505Y1317D02*X1490D01* X1610D02*X1505D01* X1615Y1312D02*X1610Y1317D01* X1620Y1307D02*X1615Y1312D01* X2130Y1307D02*X1620D01* X1360Y1402D02*X1355Y1407D01* X1445Y1402D02*X1360D01* X1450Y1397D02*X1445Y1402D01* G54D13*X1150Y1307D02*X1225D01* X1375Y1832D02*X1350Y1857D01* X1225Y1382D02*Y1532D01* X1375D02*Y1832D01* X1150Y1457D02*Y1532D01* X1350Y1482D02*X1300Y1532D01* X1350Y1407D02*Y1482D01* X475Y957D02*Y882D01* X1645Y1207D02*X1700D01* X1850Y1957D02*Y1882D01* X1825Y1982D02*X1850Y1957D01* X1675Y1982D02*X1825D01* X1625Y1932D02*X1675Y1982D01* X1600Y1907D02*X1625Y1932D01* X1400Y1907D02*X1600D01* X1350Y1857D02*X1400Y1907D01* X1000Y1857D02*X1350D01* X875Y1732D02*X1000Y1857D01* X825Y1732D02*X875D01* X800Y1707D02*X825Y1732D01* X800Y1607D02*Y1707D01* X700Y1507D02*X800Y1607D01* X700Y1457D02*Y1507D01* X475Y1232D02*X700Y1457D01* X475Y1182D02*Y1232D01* X1225Y1532D02*Y1682D01* Y1532D02*X1300D01* X2025Y1382D02*Y1557D01* X2000Y1357D02*X2025Y1382D01* X1150D02*Y1457D01* X2025Y1732D02*Y1557D01* X2000Y1757D02*X2025Y1732D01* X1875Y1757D02*X2000D01* X1850Y1782D02*X1875Y1757D01* X1850Y1882D02*Y1782D01* X2255Y527D02*X2250Y532D01* X2255Y437D02*Y527D01* X2165Y522D02*X2170Y527D01* X2165Y437D02*Y522D01* X2085Y532D02*X2180D01* X2000Y842D02*Y907D01* X2345Y532D02*X2255D01* X2075Y882D02*Y957D01* X2100D02*X2175D01* X2500Y1057D02*X2550D01* X2500Y1132D02*X2550D01* X1775Y1507D02*Y1432D01* X1675Y1507D02*X1775D01* X1675Y1607D02*X1775D01* Y1882D02*X1700D01* X1475Y1657D02*Y1557D01* X1575Y1657D02*X1475D01* Y1732D02*X1575D01* X1475Y1832D02*Y1732D01* X1150Y1282D02*Y1307D01* X1650Y1132D02*X1700D01* X1250Y1032D02*X1350D01* X850Y1482D02*X950D01* X1025Y1582D02*Y1482D01* X950Y1582D02*Y1482D01* X1250Y1032D02*X1175D01* X1250D02*Y982D01* G54D12*X2230Y802D02*X2225Y797D01* X2230Y977D02*Y802D01* X2215Y992D02*X2230Y977D01* X2215Y1007D02*Y992D01* Y1007D02*X2105D01* X2215Y1242D02*Y1007D01* X2200Y1257D02*X2215Y1242D01* X2200Y1307D02*Y1257D01* G54D13*X375Y732D02*X250D01* X1320Y1157D02*Y1257D01* X1300Y1137D02*X1320Y1157D01* X1250Y1137D02*X1300D01* G54D12*X1340Y1087D02*X1250D01* X1360Y1107D02*X1340Y1087D01* X1360Y1297D02*Y1107D01* X1350Y1307D02*X1360Y1297D01* X1350Y1337D02*Y1307D01* G54D13*X2650Y982D02*Y1057D01* X2500Y832D02*Y982D01* X2450Y1557D02*X2025D01* X2500Y1507D02*X2450Y1557D01* X2500Y1207D02*Y1507D01* X2750Y832D02*Y982D01* X2650D02*X3000D01* X2575D02*X2500D01* X2325Y1007D02*X2275D01* X2025D02*X2000Y982D01* X2100Y1007D02*X2025D01* X2375D02*X2325D01* X2400Y982D02*X2375Y1007D01* X2425Y982D02*X2400D01* X2425Y1132D02*Y1207D01* Y1057D02*Y1132D01* X2325Y1057D02*X2425D01* X2000Y1132D02*Y1057D01* X2050Y1182D02*X2000Y1132D01* X2175Y1182D02*X2050D01* X2250Y1032D02*Y1182D01* X2275Y1007D02*X2250Y1032D01* X1650Y1057D02*X1925D01* X2000D02*X2100D01* X1825Y907D02*Y1057D01* X1575Y1132D02*Y1207D01* X1475Y1132D02*X1575D01* Y1057D02*Y907D01* X1500Y1082D02*X1475D01* X1525Y1057D02*X1500Y1082D01* X1575Y1057D02*X1525D01* X1575Y1207D02*Y1282D01* X1175Y1132D02*X1150Y1157D01* X1250Y1132D02*X1175D01* X1575Y1357D02*X2000D01* X1150Y1232D02*Y1282D01* Y1232D02*X1000D01* D02*X975Y1257D01* X1125Y1082D02*X1250D01* X1100Y1057D02*X1125Y1082D01* X1100Y982D02*Y1057D01* X1075Y957D02*X1100Y982D01* X900Y957D02*X1075D01* X800Y1107D02*X725D01* X825Y1082D02*X800Y1107D01* X875Y1082D02*X825D01* X900Y1057D02*X875Y1082D01* X900Y932D02*Y1057D01* X1400Y1107D02*Y1257D01* X1425Y1082D02*X1400Y1107D01* X1475Y1082D02*X1425D01* X250Y807D02*Y1032D01* X575Y932D02*X650D01* X550Y957D02*X575Y932D01* X550Y1007D02*Y957D01* X525Y1032D02*X550Y1007D01* X475Y1032D02*X525D01* X475D02*Y1107D01* X250Y1032D02*X475D01* X650Y932D02*Y1107D01* G04 Text: TERM * G54D16*X350Y607D02*X370D01* X360D02*Y567D01* X383Y587D02*X398D01* X383Y567D02*X403D01* X383Y607D02*Y567D01* Y607D02*X403D01* X416D02*X436D01* D02*X441Y602D01* D02*Y592D01* X436Y587D02*X441Y592D01* X421Y587D02*X436D01* X421Y607D02*Y567D01* Y587D02*X441Y567D01* X454Y607D02*Y567D01* Y607D02*X469Y592D01* D02*X484Y607D01* D02*Y567D01* G04 Text: OUT * X2900Y1252D02*Y1222D01* Y1252D02*X2905Y1257D01* D02*X2915D01* D02*X2920Y1252D01* D02*Y1222D01* X2915Y1217D02*X2920Y1222D01* X2905Y1217D02*X2915D01* X2900Y1222D02*X2905Y1217D01* X2933Y1257D02*Y1222D01* D02*X2938Y1217D01* D02*X2948D01* D02*X2953Y1222D01* Y1257D02*Y1222D01* X2966Y1257D02*X2986D01* X2976D02*Y1217D01* G04 Text: IN * X200Y1307D02*X210D01* X205D02*Y1267D01* X200D02*X210D01* X223Y1307D02*Y1267D01* Y1307D02*Y1302D01* D02*X248Y1277D01* Y1307D02*Y1267D01* G04 Text: +9V * X2000Y1837D02*X2020D01* X2010Y1847D02*Y1827D01* X2033Y1817D02*X2053Y1837D01* Y1852D02*Y1837D01* X2048Y1857D02*X2053Y1852D01* X2038Y1857D02*X2048D01* X2033Y1852D02*X2038Y1857D01* X2033Y1852D02*Y1842D01* D02*X2038Y1837D01* D02*X2053D01* X2066Y1857D02*Y1827D01* D02*X2076Y1817D01* D02*X2086Y1827D01* Y1857D02*Y1827D01* G04 Text: 2002-05-31 * X100Y1852D02*X105Y1857D01* D02*X120D01* D02*X125Y1852D01* D02*Y1842D01* X100Y1817D02*X125Y1842D01* X100Y1817D02*X125D01* X138Y1822D02*X143Y1817D01* X138Y1852D02*Y1822D01* Y1852D02*X143Y1857D01* D02*X153D01* D02*X158Y1852D01* D02*Y1822D01* X153Y1817D02*X158Y1822D01* X143Y1817D02*X153D01* X138Y1827D02*X158Y1847D01* X171Y1822D02*X176Y1817D01* X171Y1852D02*Y1822D01* Y1852D02*X176Y1857D01* D02*X186D01* D02*X191Y1852D01* D02*Y1822D01* X186Y1817D02*X191Y1822D01* X176Y1817D02*X186D01* X171Y1827D02*X191Y1847D01* X204Y1852D02*X209Y1857D01* D02*X224D01* D02*X229Y1852D01* D02*Y1842D01* X204Y1817D02*X229Y1842D01* X204Y1817D02*X229D01* X242Y1837D02*X262D01* X275Y1822D02*X280Y1817D01* X275Y1852D02*Y1822D01* Y1852D02*X280Y1857D01* D02*X290D01* D02*X295Y1852D01* D02*Y1822D01* X290Y1817D02*X295Y1822D01* X280Y1817D02*X290D01* X275Y1827D02*X295Y1847D01* X308Y1857D02*X328D01* X308D02*Y1837D01* D02*X313Y1842D01* D02*X323D01* D02*X328Y1837D01* D02*Y1822D01* X323Y1817D02*X328Y1822D01* X313Y1817D02*X323D01* X308Y1822D02*X313Y1817D01* X341Y1837D02*X361D01* X374Y1852D02*X379Y1857D01* D02*X389D01* D02*X394Y1852D01* D02*Y1822D01* X389Y1817D02*X394Y1822D01* X379Y1817D02*X389D01* X374Y1822D02*X379Y1817D01* Y1837D02*X394D01* X412Y1817D02*X422D01* X417Y1857D02*Y1817D01* X407Y1847D02*X417Y1857D01* G04 Text: DRM011 REV 001 * X105Y1957D02*Y1917D01* X120Y1957D02*X125Y1952D01* D02*Y1922D01* X120Y1917D02*X125Y1922D01* X100Y1917D02*X120D01* X100Y1957D02*X120D01* X138D02*X158D01* D02*X163Y1952D01* D02*Y1942D01* X158Y1937D02*X163Y1942D01* X143Y1937D02*X158D01* X143Y1957D02*Y1917D01* Y1937D02*X163Y1917D01* X176Y1957D02*Y1917D01* Y1957D02*X191Y1942D01* D02*X206Y1957D01* D02*Y1917D01* X219Y1922D02*X224Y1917D01* X219Y1952D02*Y1922D01* Y1952D02*X224Y1957D01* D02*X234D01* D02*X239Y1952D01* D02*Y1922D01* X234Y1917D02*X239Y1922D01* X224Y1917D02*X234D01* X219Y1927D02*X239Y1947D01* X257Y1917D02*X267D01* X262Y1957D02*Y1917D01* X252Y1947D02*X262Y1957D01* X285Y1917D02*X295D01* X290Y1957D02*Y1917D01* X280Y1947D02*X290Y1957D01* X326D02*X346D01* D02*X351Y1952D01* D02*Y1942D01* X346Y1937D02*X351Y1942D01* X331Y1937D02*X346D01* X331Y1957D02*Y1917D01* Y1937D02*X351Y1917D01* X364Y1937D02*X379D01* X364Y1917D02*X384D01* X364Y1957D02*Y1917D01* Y1957D02*X384D01* X397D02*Y1927D01* D02*X407Y1917D01* D02*X417Y1927D01* Y1957D02*Y1927D01* X448Y1922D02*X453Y1917D01* X448Y1952D02*Y1922D01* Y1952D02*X453Y1957D01* D02*X463D01* D02*X468Y1952D01* D02*Y1922D01* X463Y1917D02*X468Y1922D01* X453Y1917D02*X463D01* X448Y1927D02*X468Y1947D01* X481Y1922D02*X486Y1917D01* X481Y1952D02*Y1922D01* Y1952D02*X486Y1957D01* D02*X496D01* D02*X501Y1952D01* D02*Y1922D01* X496Y1917D02*X501Y1922D01* X486Y1917D02*X496D01* X481Y1927D02*X501Y1947D01* X519Y1917D02*X529D01* X524Y1957D02*Y1917D01* X514Y1947D02*X524Y1957D01* G54D14*X250Y732D03* Y802D03* X1775Y1882D03* X1845D03* G54D27*X1825Y882D02*Y902D01* G54D29*X1574Y854D02*Y930D01* G54D27*X900Y932D02*Y952D01* G54D29*X649Y904D02*Y980D01* G54D27*X2025Y1557D02*Y1577D01* G54D29*X1774Y1529D02*Y1605D01* G54D14*X650Y1107D03* X720D03* X2575Y982D03* X2645D03* G54D27*X2500Y832D02*Y812D01* G54D29*X2751Y860D02*Y784D01* G54D14*X1575Y1057D03* X1645D03* G54D27*X2225Y782D02*X2205D01* G54D29*X2253Y531D02*X2177D01* G54D27*X1225Y1707D02*Y1687D01* G54D29*X1476Y1735D02*Y1659D01* G54D14*X475Y1107D03* Y1177D03* X2650Y1132D03* Y1062D03* X2500Y982D03* X2430D03* X2000Y907D03* Y977D03* X2200Y1307D03* X2130D03* X2250Y1182D03* X2180D03* X2000Y1057D03* X1930D03* G54D32*X2075Y1107D02*X2129D01* G54D34*X2075Y1057D02*X2129D01* X2075Y1007D02*X2129D01* X2075Y957D02*X2129D01* X2295D02*X2349D01* X2295Y1007D02*X2349D01* X2295Y1057D02*X2349D01* X2295Y1107D02*X2349D01* G54D14*X2425Y1132D03* X2495D03* X2425Y1057D03* X2495D03* X2425Y1207D03* X2495D03* X1150Y1382D03* Y1312D03* X1225Y1307D03* Y1377D03* X1350Y1407D03* Y1337D03* G54D32*X1225Y1182D02*X1279D01* G54D34*X1225Y1132D02*X1279D01* X1225Y1082D02*X1279D01* X1225Y1032D02*X1279D01* X1445D02*X1499D01* X1445Y1082D02*X1499D01* X1445Y1132D02*X1499D01* X1445Y1182D02*X1499D01* G54D14*X475Y957D03* Y1027D03* X1575Y1132D03* X1645D03* X1575Y1207D03* X1645D03* X1300Y1532D03* X1370D03* X1150D03* X1220D03* X1575Y1282D03* Y1352D03* X1325Y1257D03* X1395D03* X1150Y1232D03* Y1162D03* G54D27*X975Y1232D02*X995D01* G54D29*X947Y1483D02*X1023D01* G54D17*X1775Y1757D03* G54D20*X1875D03* G54D23*X3000Y982D03* X2900Y1082D03* Y882D03* X3100Y1082D03* Y882D03* X250Y1032D03* X150Y1132D03* Y932D03* X350Y1132D03* Y932D03* G54D17*X475Y732D03* G54D20*X375D03* X1175Y1032D03* X1250Y982D03* X1350Y1032D03* X1700Y1132D03* Y1207D03* X850Y1482D03* X950Y1582D03* X1025D03* X1150Y1457D03* X2075Y882D03* X2175Y957D03* X2550Y1057D03* Y1132D03* X1775Y1432D03* X1675Y1507D03* Y1607D03* X1700Y1882D03* X1575Y1732D03* Y1657D03* X1475Y1557D03* Y1832D03* X2000Y842D03* X2085Y532D03* X2345D03* X2165Y437D03* X2255D03* X475Y882D03* X2650Y1207D03* D02* M02* pcb2gcode-1.1.4-git20120902/testing/gerbv_example/dan/top_sr.gbx000066400000000000000000000257161202063157500240310ustar00rootroot00000000000000G04 Title: (unknown), layergroup #2 * G04 Creator: pcb 1.6.3 * G04 CreationDate: Sat Jun 1 04:16:29 2002 UTC * G04 For: dan * G04 Format: Gerber/RS-274X * G04 PCB-Dimensions: 3359 2107 * G04 PCB-Coordinate-Origin: lower left * G04 Color: R0 G0 B0 * * %FSLAX23Y23*% %MOIN*% %SRX2Y3I4.000J3.000*% %ADD11C,0.035*% %ADD12C,0.010*% %ADD13C,0.025*% %ADD14R,0.040X0.040*% %ADD15R,0.070X0.070*% %ADD16C,0.008*% %ADD17R,0.060X0.060*% %ADD18R,0.090X0.090*% %AMTHERM1*7,0,0,0.090,0.060,0.015,45*% %ADD19THERM1*% %ADD20C,0.060*% %ADD21C,0.090*% %ADD22C,0.090X0.060*% %ADD23C,0.100*% %ADD24C,0.130*% %ADD25C,0.130X0.100*% %AMTHERM2*7,0,0,0.130,0.100,0.015,45*% %ADD26THERM2*% %ADD27R,0.150X0.150*% %ADD28R,0.180X0.180*% %ADD29R,0.095X0.095*% %ADD30R,0.125X0.125*% %ADD31C,0.030*% %ADD32C,0.026*% %ADD33C,0.056*% %ADD34R,0.026X0.026*% %ADD35R,0.056X0.056*% %AMTHERM3*7,0,0,0.090,0.060,0.015,45*% %ADD36THERM3*% %IPPOS*% G01* %LNcomponent*% %LPD*% G04 LayerGroup: 2 * G04 Layer: "component" (4) * G54D11*Y1132D02*Y1207D01* G54D12*X1470Y1377D02*X1450Y1397D01* X1470Y1337D02*Y1377D01* X1490Y1317D02*X1470Y1337D01* X1505Y1317D02*X1490D01* X1610D02*X1505D01* X1615Y1312D02*X1610Y1317D01* X1620Y1307D02*X1615Y1312D01* X2130Y1307D02*X1620D01* X1360Y1402D02*X1355Y1407D01* X1445Y1402D02*X1360D01* X1450Y1397D02*X1445Y1402D01* G54D13*X1150Y1307D02*X1225D01* X1375Y1832D02*X1350Y1857D01* X1225Y1382D02*Y1532D01* X1375D02*Y1832D01* X1150Y1457D02*Y1532D01* X1350Y1482D02*X1300Y1532D01* X1350Y1407D02*Y1482D01* X475Y957D02*Y882D01* X1645Y1207D02*X1700D01* X1850Y1957D02*Y1882D01* X1825Y1982D02*X1850Y1957D01* X1675Y1982D02*X1825D01* X1625Y1932D02*X1675Y1982D01* X1600Y1907D02*X1625Y1932D01* X1400Y1907D02*X1600D01* X1350Y1857D02*X1400Y1907D01* X1000Y1857D02*X1350D01* X875Y1732D02*X1000Y1857D01* X825Y1732D02*X875D01* X800Y1707D02*X825Y1732D01* X800Y1607D02*Y1707D01* X700Y1507D02*X800Y1607D01* X700Y1457D02*Y1507D01* X475Y1232D02*X700Y1457D01* X475Y1182D02*Y1232D01* X1225Y1532D02*Y1682D01* Y1532D02*X1300D01* X2025Y1382D02*Y1557D01* X2000Y1357D02*X2025Y1382D01* X1150D02*Y1457D01* X2025Y1732D02*Y1557D01* X2000Y1757D02*X2025Y1732D01* X1875Y1757D02*X2000D01* X1850Y1782D02*X1875Y1757D01* X1850Y1882D02*Y1782D01* X2255Y527D02*X2250Y532D01* X2255Y437D02*Y527D01* X2165Y522D02*X2170Y527D01* X2165Y437D02*Y522D01* X2085Y532D02*X2180D01* X2000Y842D02*Y907D01* X2345Y532D02*X2255D01* X2075Y882D02*Y957D01* X2100D02*X2175D01* X2500Y1057D02*X2550D01* X2500Y1132D02*X2550D01* X1775Y1507D02*Y1432D01* X1675Y1507D02*X1775D01* X1675Y1607D02*X1775D01* Y1882D02*X1700D01* X1475Y1657D02*Y1557D01* X1575Y1657D02*X1475D01* Y1732D02*X1575D01* X1475Y1832D02*Y1732D01* X1150Y1282D02*Y1307D01* X1650Y1132D02*X1700D01* X1250Y1032D02*X1350D01* X850Y1482D02*X950D01* X1025Y1582D02*Y1482D01* X950Y1582D02*Y1482D01* X1250Y1032D02*X1175D01* X1250D02*Y982D01* G54D12*X2230Y802D02*X2225Y797D01* X2230Y977D02*Y802D01* X2215Y992D02*X2230Y977D01* X2215Y1007D02*Y992D01* Y1007D02*X2105D01* X2215Y1242D02*Y1007D01* X2200Y1257D02*X2215Y1242D01* X2200Y1307D02*Y1257D01* G54D13*X375Y732D02*X250D01* X1320Y1157D02*Y1257D01* X1300Y1137D02*X1320Y1157D01* X1250Y1137D02*X1300D01* G54D12*X1340Y1087D02*X1250D01* X1360Y1107D02*X1340Y1087D01* X1360Y1297D02*Y1107D01* X1350Y1307D02*X1360Y1297D01* X1350Y1337D02*Y1307D01* G54D13*X2650Y982D02*Y1057D01* X2500Y832D02*Y982D01* X2450Y1557D02*X2025D01* X2500Y1507D02*X2450Y1557D01* X2500Y1207D02*Y1507D01* X2750Y832D02*Y982D01* X2650D02*X3000D01* X2575D02*X2500D01* X2325Y1007D02*X2275D01* X2025D02*X2000Y982D01* X2100Y1007D02*X2025D01* X2375D02*X2325D01* X2400Y982D02*X2375Y1007D01* X2425Y982D02*X2400D01* X2425Y1132D02*Y1207D01* Y1057D02*Y1132D01* X2325Y1057D02*X2425D01* X2000Y1132D02*Y1057D01* X2050Y1182D02*X2000Y1132D01* X2175Y1182D02*X2050D01* X2250Y1032D02*Y1182D01* X2275Y1007D02*X2250Y1032D01* X1650Y1057D02*X1925D01* X2000D02*X2100D01* X1825Y907D02*Y1057D01* X1575Y1132D02*Y1207D01* X1475Y1132D02*X1575D01* Y1057D02*Y907D01* X1500Y1082D02*X1475D01* X1525Y1057D02*X1500Y1082D01* X1575Y1057D02*X1525D01* X1575Y1207D02*Y1282D01* X1175Y1132D02*X1150Y1157D01* X1250Y1132D02*X1175D01* X1575Y1357D02*X2000D01* X1150Y1232D02*Y1282D01* Y1232D02*X1000D01* D02*X975Y1257D01* X1125Y1082D02*X1250D01* X1100Y1057D02*X1125Y1082D01* X1100Y982D02*Y1057D01* X1075Y957D02*X1100Y982D01* X900Y957D02*X1075D01* X800Y1107D02*X725D01* X825Y1082D02*X800Y1107D01* X875Y1082D02*X825D01* X900Y1057D02*X875Y1082D01* X900Y932D02*Y1057D01* X1400Y1107D02*Y1257D01* X1425Y1082D02*X1400Y1107D01* X1475Y1082D02*X1425D01* X250Y807D02*Y1032D01* X575Y932D02*X650D01* X550Y957D02*X575Y932D01* X550Y1007D02*Y957D01* X525Y1032D02*X550Y1007D01* X475Y1032D02*X525D01* X475D02*Y1107D01* X250Y1032D02*X475D01* X650Y932D02*Y1107D01* G04 Text: TERM * G54D16*X350Y607D02*X370D01* X360D02*Y567D01* X383Y587D02*X398D01* X383Y567D02*X403D01* X383Y607D02*Y567D01* Y607D02*X403D01* X416D02*X436D01* D02*X441Y602D01* D02*Y592D01* X436Y587D02*X441Y592D01* X421Y587D02*X436D01* X421Y607D02*Y567D01* Y587D02*X441Y567D01* X454Y607D02*Y567D01* Y607D02*X469Y592D01* D02*X484Y607D01* D02*Y567D01* G04 Text: OUT * X2900Y1252D02*Y1222D01* Y1252D02*X2905Y1257D01* D02*X2915D01* D02*X2920Y1252D01* D02*Y1222D01* X2915Y1217D02*X2920Y1222D01* X2905Y1217D02*X2915D01* X2900Y1222D02*X2905Y1217D01* X2933Y1257D02*Y1222D01* D02*X2938Y1217D01* D02*X2948D01* D02*X2953Y1222D01* Y1257D02*Y1222D01* X2966Y1257D02*X2986D01* X2976D02*Y1217D01* G04 Text: IN * X200Y1307D02*X210D01* X205D02*Y1267D01* X200D02*X210D01* X223Y1307D02*Y1267D01* Y1307D02*Y1302D01* D02*X248Y1277D01* Y1307D02*Y1267D01* G04 Text: +9V * X2000Y1837D02*X2020D01* X2010Y1847D02*Y1827D01* X2033Y1817D02*X2053Y1837D01* Y1852D02*Y1837D01* X2048Y1857D02*X2053Y1852D01* X2038Y1857D02*X2048D01* X2033Y1852D02*X2038Y1857D01* X2033Y1852D02*Y1842D01* D02*X2038Y1837D01* D02*X2053D01* X2066Y1857D02*Y1827D01* D02*X2076Y1817D01* D02*X2086Y1827D01* Y1857D02*Y1827D01* G04 Text: 2002-05-31 * X100Y1852D02*X105Y1857D01* D02*X120D01* D02*X125Y1852D01* D02*Y1842D01* X100Y1817D02*X125Y1842D01* X100Y1817D02*X125D01* X138Y1822D02*X143Y1817D01* X138Y1852D02*Y1822D01* Y1852D02*X143Y1857D01* D02*X153D01* D02*X158Y1852D01* D02*Y1822D01* X153Y1817D02*X158Y1822D01* X143Y1817D02*X153D01* X138Y1827D02*X158Y1847D01* X171Y1822D02*X176Y1817D01* X171Y1852D02*Y1822D01* Y1852D02*X176Y1857D01* D02*X186D01* D02*X191Y1852D01* D02*Y1822D01* X186Y1817D02*X191Y1822D01* X176Y1817D02*X186D01* X171Y1827D02*X191Y1847D01* X204Y1852D02*X209Y1857D01* D02*X224D01* D02*X229Y1852D01* D02*Y1842D01* X204Y1817D02*X229Y1842D01* X204Y1817D02*X229D01* X242Y1837D02*X262D01* X275Y1822D02*X280Y1817D01* X275Y1852D02*Y1822D01* Y1852D02*X280Y1857D01* D02*X290D01* D02*X295Y1852D01* D02*Y1822D01* X290Y1817D02*X295Y1822D01* X280Y1817D02*X290D01* X275Y1827D02*X295Y1847D01* X308Y1857D02*X328D01* X308D02*Y1837D01* D02*X313Y1842D01* D02*X323D01* D02*X328Y1837D01* D02*Y1822D01* X323Y1817D02*X328Y1822D01* X313Y1817D02*X323D01* X308Y1822D02*X313Y1817D01* X341Y1837D02*X361D01* X374Y1852D02*X379Y1857D01* D02*X389D01* D02*X394Y1852D01* D02*Y1822D01* X389Y1817D02*X394Y1822D01* X379Y1817D02*X389D01* X374Y1822D02*X379Y1817D01* Y1837D02*X394D01* X412Y1817D02*X422D01* X417Y1857D02*Y1817D01* X407Y1847D02*X417Y1857D01* G04 Text: DRM011 REV 001 * X105Y1957D02*Y1917D01* X120Y1957D02*X125Y1952D01* D02*Y1922D01* X120Y1917D02*X125Y1922D01* X100Y1917D02*X120D01* X100Y1957D02*X120D01* X138D02*X158D01* D02*X163Y1952D01* D02*Y1942D01* X158Y1937D02*X163Y1942D01* X143Y1937D02*X158D01* X143Y1957D02*Y1917D01* Y1937D02*X163Y1917D01* X176Y1957D02*Y1917D01* Y1957D02*X191Y1942D01* D02*X206Y1957D01* D02*Y1917D01* X219Y1922D02*X224Y1917D01* X219Y1952D02*Y1922D01* Y1952D02*X224Y1957D01* D02*X234D01* D02*X239Y1952D01* D02*Y1922D01* X234Y1917D02*X239Y1922D01* X224Y1917D02*X234D01* X219Y1927D02*X239Y1947D01* X257Y1917D02*X267D01* X262Y1957D02*Y1917D01* X252Y1947D02*X262Y1957D01* X285Y1917D02*X295D01* X290Y1957D02*Y1917D01* X280Y1947D02*X290Y1957D01* X326D02*X346D01* D02*X351Y1952D01* D02*Y1942D01* X346Y1937D02*X351Y1942D01* X331Y1937D02*X346D01* X331Y1957D02*Y1917D01* Y1937D02*X351Y1917D01* X364Y1937D02*X379D01* X364Y1917D02*X384D01* X364Y1957D02*Y1917D01* Y1957D02*X384D01* X397D02*Y1927D01* D02*X407Y1917D01* D02*X417Y1927D01* Y1957D02*Y1927D01* X448Y1922D02*X453Y1917D01* X448Y1952D02*Y1922D01* Y1952D02*X453Y1957D01* D02*X463D01* D02*X468Y1952D01* D02*Y1922D01* X463Y1917D02*X468Y1922D01* X453Y1917D02*X463D01* X448Y1927D02*X468Y1947D01* X481Y1922D02*X486Y1917D01* X481Y1952D02*Y1922D01* Y1952D02*X486Y1957D01* D02*X496D01* D02*X501Y1952D01* D02*Y1922D01* X496Y1917D02*X501Y1922D01* X486Y1917D02*X496D01* X481Y1927D02*X501Y1947D01* X519Y1917D02*X529D01* X524Y1957D02*Y1917D01* X514Y1947D02*X524Y1957D01* G54D14*X250Y732D03* Y802D03* X1775Y1882D03* X1845D03* G54D27*X1825Y882D02*Y902D01* G54D29*X1574Y854D02*Y930D01* G54D27*X900Y932D02*Y952D01* G54D29*X649Y904D02*Y980D01* G54D27*X2025Y1557D02*Y1577D01* G54D29*X1774Y1529D02*Y1605D01* G54D14*X650Y1107D03* X720D03* X2575Y982D03* X2645D03* G54D27*X2500Y832D02*Y812D01* G54D29*X2751Y860D02*Y784D01* G54D14*X1575Y1057D03* X1645D03* G54D27*X2225Y782D02*X2205D01* G54D29*X2253Y531D02*X2177D01* G54D27*X1225Y1707D02*Y1687D01* G54D29*X1476Y1735D02*Y1659D01* G54D14*X475Y1107D03* Y1177D03* X2650Y1132D03* Y1062D03* X2500Y982D03* X2430D03* X2000Y907D03* Y977D03* X2200Y1307D03* X2130D03* X2250Y1182D03* X2180D03* X2000Y1057D03* X1930D03* G54D32*X2075Y1107D02*X2129D01* G54D34*X2075Y1057D02*X2129D01* X2075Y1007D02*X2129D01* X2075Y957D02*X2129D01* X2295D02*X2349D01* X2295Y1007D02*X2349D01* X2295Y1057D02*X2349D01* X2295Y1107D02*X2349D01* G54D14*X2425Y1132D03* X2495D03* X2425Y1057D03* X2495D03* X2425Y1207D03* X2495D03* X1150Y1382D03* Y1312D03* X1225Y1307D03* Y1377D03* X1350Y1407D03* Y1337D03* G54D32*X1225Y1182D02*X1279D01* G54D34*X1225Y1132D02*X1279D01* X1225Y1082D02*X1279D01* X1225Y1032D02*X1279D01* X1445D02*X1499D01* X1445Y1082D02*X1499D01* X1445Y1132D02*X1499D01* X1445Y1182D02*X1499D01* G54D14*X475Y957D03* Y1027D03* X1575Y1132D03* X1645D03* X1575Y1207D03* X1645D03* X1300Y1532D03* X1370D03* X1150D03* X1220D03* X1575Y1282D03* Y1352D03* X1325Y1257D03* X1395D03* X1150Y1232D03* Y1162D03* G54D27*X975Y1232D02*X995D01* G54D29*X947Y1483D02*X1023D01* G54D17*X1775Y1757D03* G54D20*X1875D03* G54D23*X3000Y982D03* X2900Y1082D03* Y882D03* X3100Y1082D03* Y882D03* X250Y1032D03* X150Y1132D03* Y932D03* X350Y1132D03* Y932D03* G54D17*X475Y732D03* G54D20*X375D03* X1175Y1032D03* X1250Y982D03* X1350Y1032D03* X1700Y1132D03* Y1207D03* X850Y1482D03* X950Y1582D03* X1025D03* X1150Y1457D03* X2075Y882D03* X2175Y957D03* X2550Y1057D03* Y1132D03* X1775Y1432D03* X1675Y1507D03* Y1607D03* X1700Y1882D03* X1575Y1732D03* Y1657D03* X1475Y1557D03* Y1832D03* X2000Y842D03* X2085Y532D03* X2345D03* X2165Y437D03* X2255D03* X475Y882D03* X2650Y1207D03* D02* M02* pcb2gcode-1.1.4-git20120902/testing/gerbv_example/eaglecad1/000077500000000000000000000000001202063157500230525ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/eaglecad1/millproject000066400000000000000000000001521202063157500253170ustar00rootroot00000000000000dpi=1000 back=top-cop.gbx offset=0.010 zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 zchange=1.0 pcb2gcode-1.1.4-git20120902/testing/gerbv_example/eaglecad1/top-cop.gbx000066400000000000000000000507471202063157500251520ustar00rootroot00000000000000G04 This is an RS-274x file exported by * G04 gerbv version 2.5.0 * G04 More information is available about gerbv at * G04 http://gerbv.gpleda.org/ * G04 --End of header info--* %MOIN*% %FSLAX23Y23*% %IPPOS*% G04 --Define apertures--* %ADD10C,0.0060*% %ADD11C,0.1500*% %ADD12O,0.0780X0.1560*% %ADD13O,0.0980X0.0490*% %AMMACRO14* 5,1,8,0.000000,0.000000,0.064943,22.500000* % %ADD14MACRO14*% %AMMACRO15* 5,1,8,0.000000,0.000000,0.059531,22.500000* % %ADD15MACRO15*% %AMMACRO16* 5,1,8,0.000000,0.000000,0.068191,22.500000* % %ADD16MACRO16*% %AMMACRO17* 5,1,8,0.000000,0.000000,0.108780,22.500000* % %ADD17MACRO17*% %ADD18O,0.0600X0.1200*% %ADD19O,0.1005X0.2010*% %ADD20O,0.1560X0.0780*% %ADD21O,0.1200X0.0600*% %ADD22C,0.0500*% %ADD23C,0.0140*% %ADD24C,0.0160*% %ADD25C,0.0660*% %ADD26R,0.0450X0.0450*% %ADD27C,0.0010*% G04 --Start main section--* G54D10* G01X03726Y00910D02* G01X03662Y00910D01* G01X03662Y00888D02* G01X03662Y00931D01* G01X03694Y00953D02* G01X03684Y00963D01* G01X03684Y00963D02* G01X03684Y00985D01* G01X03684Y00985D02* G01X03694Y00995D01* G01X03694Y00995D02* G01X03716Y00995D01* G01X03716Y00995D02* G01X03726Y00985D01* G01X03726Y00985D02* G01X03726Y00963D01* G01X03726Y00963D02* G01X03716Y00953D01* G01X03716Y00953D02* G01X03694Y00953D01* G01X03684Y01017D02* G01X03684Y01049D01* G01X03684Y01049D02* G01X03694Y01060D01* G01X03694Y01060D02* G01X03716Y01060D01* G01X03716Y01060D02* G01X03726Y01049D01* G01X03726Y01049D02* G01X03726Y01017D01* G01X03748Y01017D02* G01X03684Y01017D01* G54D11* G01X03479Y00235D02* G01X03179Y00235D01* G01X03179Y00235D02* G01X02879Y00235D01* G01X02879Y00235D02* G01X02429Y00235D01* G01X02429Y00235D02* G01X01979Y00235D01* G01X01979Y00235D02* G01X01679Y00235D01* G01X01679Y00235D02* G01X01379Y00235D01* G01X01379Y00235D02* G01X01079Y00235D01* G01X01079Y00235D02* G01X00779Y00235D01* G01X00779Y00235D02* G01X00579Y00235D01* G01X00579Y00235D02* G01X00279Y00485D01* G01X00279Y00485D02* G01X00279Y02385D01* G01X00279Y02385D02* G01X00279Y02685D01* G01X00279Y02685D02* G01X00629Y02935D01* G01X00629Y02935D02* G01X01129Y02935D01* G01X01129Y02935D02* G01X02429Y02935D01* G01X02429Y02935D02* G01X02429Y02735D01* G01X02229Y02735D02* G01X02179Y02285D01* G01X02179Y02285D02* G01X02229Y02285D01* G01X02229Y02285D02* G01X02479Y02285D01* G01X02629Y02735D02* G01X02629Y02935D01* G01X02629Y02935D02* G01X02429Y02935D01* G01X02629Y02935D02* G01X03329Y02935D01* G01X03329Y02935D02* G01X03329Y02735D01* G01X03329Y02735D02* G01X03529Y02735D01* G01X03729Y02985D02* G01X03729Y02990D01* G01X03729Y02990D02* G01X03730Y02994D01* G01X03730Y02994D02* G01X03731Y02999D01* G01X03731Y02999D02* G01X03733Y03003D01* G01X03733Y03003D02* G01X03734Y03007D01* G01X03734Y03007D02* G01X03737Y03011D01* G01X03737Y03011D02* G01X03739Y03015D01* G01X03739Y03015D02* G01X03742Y03019D01* G01X03742Y03019D02* G01X03745Y03022D01* G01X03745Y03022D02* G01X03749Y03025D01* G01X03749Y03025D02* G01X03752Y03027D01* G01X03752Y03027D02* G01X03756Y03030D01* G01X03756Y03030D02* G01X03760Y03032D01* G01X03760Y03032D02* G01X03765Y03033D01* G01X03765Y03033D02* G01X03769Y03034D01* G01X03769Y03034D02* G01X03774Y03035D01* G01X03774Y03035D02* G01X03778Y03035D01* G01X03778Y03035D02* G01X03783Y03035D01* G01X03783Y03035D02* G01X03787Y03035D01* G01X03787Y03035D02* G01X03792Y03034D01* G01X03792Y03034D02* G01X03796Y03032D01* G01X03796Y03032D02* G01X03800Y03031D01* G01X03800Y03031D02* G01X03804Y03029D01* G01X03804Y03029D02* G01X03808Y03026D01* G01X03808Y03026D02* G01X03812Y03023D01* G01X03812Y03023D02* G01X03815Y03020D01* G01X03815Y03020D02* G01X03818Y03017D01* G01X03818Y03017D02* G01X03821Y03013D01* G01X03821Y03013D02* G01X03823Y03009D01* G01X03823Y03009D02* G01X03825Y03005D01* G01X03825Y03005D02* G01X03827Y03001D01* G01X03827Y03001D02* G01X03828Y02997D01* G01X03828Y02997D02* G01X03829Y02992D01* G01X03829Y02992D02* G01X03829Y02988D01* G01X03829Y02988D02* G01X03829Y02983D01* G01X03829Y02983D02* G01X03829Y02979D01* G01X03829Y02979D02* G01X03828Y02974D01* G01X03828Y02974D02* G01X03827Y02970D01* G01X03827Y02970D02* G01X03825Y02965D01* G01X03825Y02965D02* G01X03823Y02961D01* G01X03823Y02961D02* G01X03821Y02957D01* G01X03821Y02957D02* G01X03818Y02954D01* G01X03818Y02954D02* G01X03815Y02950D01* G01X03815Y02950D02* G01X03812Y02947D01* G01X03812Y02947D02* G01X03808Y02945D01* G01X03808Y02945D02* G01X03804Y02942D01* G01X03804Y02942D02* G01X03800Y02940D01* G01X03800Y02940D02* G01X03796Y02938D01* G01X03796Y02938D02* G01X03792Y02937D01* G01X03792Y02937D02* G01X03787Y02936D01* G01X03787Y02936D02* G01X03783Y02935D01* G01X03783Y02935D02* G01X03778Y02935D01* G01X03778Y02935D02* G01X03774Y02936D01* G01X03774Y02936D02* G01X03769Y02936D01* G01X03769Y02936D02* G01X03765Y02938D01* G01X03765Y02938D02* G01X03760Y02939D01* G01X03760Y02939D02* G01X03756Y02941D01* G01X03756Y02941D02* G01X03752Y02943D01* G01X03752Y02943D02* G01X03749Y02946D01* G01X03749Y02946D02* G01X03745Y02949D01* G01X03745Y02949D02* G01X03742Y02952D01* G01X03742Y02952D02* G01X03739Y02956D01* G01X03739Y02956D02* G01X03737Y02959D01* G01X03737Y02959D02* G01X03734Y02963D01* G01X03734Y02963D02* G01X03733Y02968D01* G01X03733Y02968D02* G01X03731Y02972D01* G01X03731Y02972D02* G01X03730Y02976D01* G01X03730Y02976D02* G01X03729Y02981D01* G01X03729Y02981D02* G01X03729Y02985D01* G01X03129Y02735D02* G01X03229Y02285D01* G01X03229Y02285D02* G01X03529Y02285D01* G01X03129Y02735D02* G01X02929Y02735D01* G01X02029Y02735D02* G01X01779Y02735D01* G01X01779Y02735D02* G01X01529Y02735D01* G01X01529Y02735D02* G01X01329Y02235D01* G01X00129Y02985D02* G01X00129Y02990D01* G01X00129Y02990D02* G01X00130Y02994D01* G01X00130Y02994D02* G01X00131Y02999D01* G01X00131Y02999D02* G01X00133Y03003D01* G01X00133Y03003D02* G01X00134Y03007D01* G01X00134Y03007D02* G01X00137Y03011D01* G01X00137Y03011D02* G01X00139Y03015D01* G01X00139Y03015D02* G01X00142Y03019D01* G01X00142Y03019D02* G01X00145Y03022D01* G01X00145Y03022D02* G01X00149Y03025D01* G01X00149Y03025D02* G01X00152Y03027D01* G01X00152Y03027D02* G01X00156Y03030D01* G01X00156Y03030D02* G01X00160Y03032D01* G01X00160Y03032D02* G01X00165Y03033D01* G01X00165Y03033D02* G01X00169Y03034D01* G01X00169Y03034D02* G01X00174Y03035D01* G01X00174Y03035D02* G01X00178Y03035D01* G01X00178Y03035D02* G01X00183Y03035D01* G01X00183Y03035D02* G01X00187Y03035D01* G01X00187Y03035D02* G01X00192Y03034D01* G01X00192Y03034D02* G01X00196Y03032D01* G01X00196Y03032D02* G01X00200Y03031D01* G01X00200Y03031D02* G01X00204Y03029D01* G01X00204Y03029D02* G01X00208Y03026D01* G01X00208Y03026D02* G01X00212Y03023D01* G01X00212Y03023D02* G01X00215Y03020D01* G01X00215Y03020D02* G01X00218Y03017D01* G01X00218Y03017D02* G01X00221Y03013D01* G01X00221Y03013D02* G01X00223Y03009D01* G01X00223Y03009D02* G01X00225Y03005D01* G01X00225Y03005D02* G01X00227Y03001D01* G01X00227Y03001D02* G01X00228Y02997D01* G01X00228Y02997D02* G01X00229Y02992D01* G01X00229Y02992D02* G01X00229Y02988D01* G01X00229Y02988D02* G01X00229Y02983D01* G01X00229Y02983D02* G01X00229Y02979D01* G01X00229Y02979D02* G01X00228Y02974D01* G01X00228Y02974D02* G01X00227Y02970D01* G01X00227Y02970D02* G01X00225Y02965D01* G01X00225Y02965D02* G01X00223Y02961D01* G01X00223Y02961D02* G01X00221Y02957D01* G01X00221Y02957D02* G01X00218Y02954D01* G01X00218Y02954D02* G01X00215Y02950D01* G01X00215Y02950D02* G01X00212Y02947D01* G01X00212Y02947D02* G01X00208Y02945D01* G01X00208Y02945D02* G01X00204Y02942D01* G01X00204Y02942D02* G01X00200Y02940D01* G01X00200Y02940D02* G01X00196Y02938D01* G01X00196Y02938D02* G01X00192Y02937D01* G01X00192Y02937D02* G01X00187Y02936D01* G01X00187Y02936D02* G01X00183Y02935D01* G01X00183Y02935D02* G01X00178Y02935D01* G01X00178Y02935D02* G01X00174Y02936D01* G01X00174Y02936D02* G01X00169Y02936D01* G01X00169Y02936D02* G01X00165Y02938D01* G01X00165Y02938D02* G01X00160Y02939D01* G01X00160Y02939D02* G01X00156Y02941D01* G01X00156Y02941D02* G01X00152Y02943D01* G01X00152Y02943D02* G01X00149Y02946D01* G01X00149Y02946D02* G01X00145Y02949D01* G01X00145Y02949D02* G01X00142Y02952D01* G01X00142Y02952D02* G01X00139Y02956D01* G01X00139Y02956D02* G01X00137Y02959D01* G01X00137Y02959D02* G01X00134Y02963D01* G01X00134Y02963D02* G01X00133Y02968D01* G01X00133Y02968D02* G01X00131Y02972D01* G01X00131Y02972D02* G01X00130Y02976D01* G01X00130Y02976D02* G01X00129Y02981D01* G01X00129Y02981D02* G01X00129Y02985D01* G01X00129Y00185D02* G01X00129Y00190D01* G01X00129Y00190D02* G01X00130Y00194D01* G01X00130Y00194D02* G01X00131Y00199D01* G01X00131Y00199D02* G01X00133Y00203D01* G01X00133Y00203D02* G01X00134Y00207D01* G01X00134Y00207D02* G01X00137Y00211D01* G01X00137Y00211D02* G01X00139Y00215D01* G01X00139Y00215D02* G01X00142Y00219D01* G01X00142Y00219D02* G01X00145Y00222D01* G01X00145Y00222D02* G01X00149Y00225D01* G01X00149Y00225D02* G01X00152Y00227D01* G01X00152Y00227D02* G01X00156Y00230D01* G01X00156Y00230D02* G01X00160Y00232D01* G01X00160Y00232D02* G01X00165Y00233D01* G01X00165Y00233D02* G01X00169Y00234D01* G01X00169Y00234D02* G01X00174Y00235D01* G01X00174Y00235D02* G01X00178Y00235D01* G01X00178Y00235D02* G01X00183Y00235D01* G01X00183Y00235D02* G01X00187Y00235D01* G01X00187Y00235D02* G01X00192Y00234D01* G01X00192Y00234D02* G01X00196Y00232D01* G01X00196Y00232D02* G01X00200Y00231D01* G01X00200Y00231D02* G01X00204Y00229D01* G01X00204Y00229D02* G01X00208Y00226D01* G01X00208Y00226D02* G01X00212Y00223D01* G01X00212Y00223D02* G01X00215Y00220D01* G01X00215Y00220D02* G01X00218Y00217D01* G01X00218Y00217D02* G01X00221Y00213D01* G01X00221Y00213D02* G01X00223Y00209D01* G01X00223Y00209D02* G01X00225Y00205D01* G01X00225Y00205D02* G01X00227Y00201D01* G01X00227Y00201D02* G01X00228Y00197D01* G01X00228Y00197D02* G01X00229Y00192D01* G01X00229Y00192D02* G01X00229Y00188D01* G01X00229Y00188D02* G01X00229Y00183D01* G01X00229Y00183D02* G01X00229Y00179D01* G01X00229Y00179D02* G01X00228Y00174D01* G01X00228Y00174D02* G01X00227Y00170D01* G01X00227Y00170D02* G01X00225Y00165D01* G01X00225Y00165D02* G01X00223Y00161D01* G01X00223Y00161D02* G01X00221Y00157D01* G01X00221Y00157D02* G01X00218Y00154D01* G01X00218Y00154D02* G01X00215Y00150D01* G01X00215Y00150D02* G01X00212Y00147D01* G01X00212Y00147D02* G01X00208Y00145D01* G01X00208Y00145D02* G01X00204Y00142D01* G01X00204Y00142D02* G01X00200Y00140D01* G01X00200Y00140D02* G01X00196Y00138D01* G01X00196Y00138D02* G01X00192Y00137D01* G01X00192Y00137D02* G01X00187Y00136D01* G01X00187Y00136D02* G01X00183Y00135D01* G01X00183Y00135D02* G01X00178Y00135D01* G01X00178Y00135D02* G01X00174Y00136D01* G01X00174Y00136D02* G01X00169Y00136D01* G01X00169Y00136D02* G01X00165Y00138D01* G01X00165Y00138D02* G01X00160Y00139D01* G01X00160Y00139D02* G01X00156Y00141D01* G01X00156Y00141D02* G01X00152Y00143D01* G01X00152Y00143D02* G01X00149Y00146D01* G01X00149Y00146D02* G01X00145Y00149D01* G01X00145Y00149D02* G01X00142Y00152D01* G01X00142Y00152D02* G01X00139Y00156D01* G01X00139Y00156D02* G01X00137Y00159D01* G01X00137Y00159D02* G01X00134Y00163D01* G01X00134Y00163D02* G01X00133Y00168D01* G01X00133Y00168D02* G01X00131Y00172D01* G01X00131Y00172D02* G01X00130Y00176D01* G01X00130Y00176D02* G01X00129Y00181D01* G01X00129Y00181D02* G01X00129Y00185D01* G01X03729Y00185D02* G01X03729Y00190D01* G01X03729Y00190D02* G01X03730Y00194D01* G01X03730Y00194D02* G01X03731Y00199D01* G01X03731Y00199D02* G01X03733Y00203D01* G01X03733Y00203D02* G01X03734Y00207D01* G01X03734Y00207D02* G01X03737Y00211D01* G01X03737Y00211D02* G01X03739Y00215D01* G01X03739Y00215D02* G01X03742Y00219D01* G01X03742Y00219D02* G01X03745Y00222D01* G01X03745Y00222D02* G01X03749Y00225D01* G01X03749Y00225D02* G01X03752Y00227D01* G01X03752Y00227D02* G01X03756Y00230D01* G01X03756Y00230D02* G01X03760Y00232D01* G01X03760Y00232D02* G01X03765Y00233D01* G01X03765Y00233D02* G01X03769Y00234D01* G01X03769Y00234D02* G01X03774Y00235D01* G01X03774Y00235D02* G01X03778Y00235D01* G01X03778Y00235D02* G01X03783Y00235D01* G01X03783Y00235D02* G01X03787Y00235D01* G01X03787Y00235D02* G01X03792Y00234D01* G01X03792Y00234D02* G01X03796Y00232D01* G01X03796Y00232D02* G01X03800Y00231D01* G01X03800Y00231D02* G01X03804Y00229D01* G01X03804Y00229D02* G01X03808Y00226D01* G01X03808Y00226D02* G01X03812Y00223D01* G01X03812Y00223D02* G01X03815Y00220D01* G01X03815Y00220D02* G01X03818Y00217D01* G01X03818Y00217D02* G01X03821Y00213D01* G01X03821Y00213D02* G01X03823Y00209D01* G01X03823Y00209D02* G01X03825Y00205D01* G01X03825Y00205D02* G01X03827Y00201D01* G01X03827Y00201D02* G01X03828Y00197D01* G01X03828Y00197D02* G01X03829Y00192D01* G01X03829Y00192D02* G01X03829Y00188D01* G01X03829Y00188D02* G01X03829Y00183D01* G01X03829Y00183D02* G01X03829Y00179D01* G01X03829Y00179D02* G01X03828Y00174D01* G01X03828Y00174D02* G01X03827Y00170D01* G01X03827Y00170D02* G01X03825Y00165D01* G01X03825Y00165D02* G01X03823Y00161D01* G01X03823Y00161D02* G01X03821Y00157D01* G01X03821Y00157D02* G01X03818Y00154D01* G01X03818Y00154D02* G01X03815Y00150D01* G01X03815Y00150D02* G01X03812Y00147D01* G01X03812Y00147D02* G01X03808Y00145D01* G01X03808Y00145D02* G01X03804Y00142D01* G01X03804Y00142D02* G01X03800Y00140D01* G01X03800Y00140D02* G01X03796Y00138D01* G01X03796Y00138D02* G01X03792Y00137D01* G01X03792Y00137D02* G01X03787Y00136D01* G01X03787Y00136D02* G01X03783Y00135D01* G01X03783Y00135D02* G01X03778Y00135D01* G01X03778Y00135D02* G01X03774Y00136D01* G01X03774Y00136D02* G01X03769Y00136D01* G01X03769Y00136D02* G01X03765Y00138D01* G01X03765Y00138D02* G01X03760Y00139D01* G01X03760Y00139D02* G01X03756Y00141D01* G01X03756Y00141D02* G01X03752Y00143D01* G01X03752Y00143D02* G01X03749Y00146D01* G01X03749Y00146D02* G01X03745Y00149D01* G01X03745Y00149D02* G01X03742Y00152D01* G01X03742Y00152D02* G01X03739Y00156D01* G01X03739Y00156D02* G01X03737Y00159D01* G01X03737Y00159D02* G01X03734Y00163D01* G01X03734Y00163D02* G01X03733Y00168D01* G01X03733Y00168D02* G01X03731Y00172D01* G01X03731Y00172D02* G01X03730Y00176D01* G01X03730Y00176D02* G01X03729Y00181D01* G01X03729Y00181D02* G01X03729Y00185D01* G54D12* G01X03529Y02735D03* G01X03329Y02735D03* G01X03129Y02735D03* G01X02929Y02735D03* G01X02629Y02735D03* G01X02429Y02735D03* G01X02229Y02735D03* G01X02029Y02735D03* G54D13* G01X01129Y02785D03* G01X01129Y02685D03* G01X01129Y02585D03* G01X01129Y02485D03* G01X00829Y02485D03* G01X00829Y02585D03* G01X00829Y02685D03* G01X00829Y02785D03* G54D14* G01X00729Y02235D03* G01X01329Y02235D03* G54D15* G01X01279Y02385D03* G01X01279Y02785D03* G01X00679Y02785D03* G01X00679Y02385D03* G01X00879Y01335D03* G01X00879Y01235D03* G01X00879Y01085D03* G01X00879Y00985D03* G01X01279Y00985D03* G01X01279Y01085D03* G01X01279Y01235D03* G01X01279Y01335D03* G01X02629Y01335D03* G01X02629Y01235D03* G01X02629Y01085D03* G01X02629Y00985D03* G01X03029Y00985D03* G01X03029Y01085D03* G01X03029Y01235D03* G01X03029Y01335D03* G54D16* G01X01779Y02735D03* G01X01779Y02935D03* G01X01529Y02935D03* G01X01529Y02735D03* G54D17* G01X01434Y01970D03* G01X01624Y01970D03* G01X01624Y01785D03* G01X01434Y01785D03* G01X01434Y01600D03* G01X01624Y01600D03* G01X02184Y01600D03* G01X02374Y01600D03* G01X02374Y01785D03* G01X02184Y01785D03* G01X02184Y01970D03* G01X02374Y01970D03* G01X03334Y01970D03* G01X03524Y01970D03* G01X03524Y01785D03* G01X03334Y01785D03* G01X03334Y01600D03* G01X03524Y01600D03* G01X00674Y01600D03* G01X00484Y01600D03* G01X00484Y01785D03* G01X00674Y01785D03* G01X00674Y01970D03* G01X00484Y01970D03* G54D18* G01X00479Y01235D03* G01X00679Y01235D03* G01X00679Y01035D03* G01X00479Y01035D03* G01X01429Y01035D03* G01X01629Y01035D03* G01X01629Y01235D03* G01X01429Y01235D03* G01X01979Y00735D03* G01X02079Y00735D03* G01X02179Y00735D03* G01X02429Y00735D03* G01X02529Y00735D03* G01X02629Y00735D03* G01X02379Y01035D03* G01X02379Y01235D03* G01X02129Y01235D03* G01X02129Y01035D03* G01X02079Y00435D03* G01X02179Y00435D03* G01X01979Y00435D03* G01X02429Y00435D03* G01X02529Y00435D03* G01X02629Y00435D03* G01X03329Y01035D03* G01X03529Y01035D03* G01X03529Y01235D03* G01X03329Y01235D03* G01X03479Y00735D03* G01X03579Y00735D03* G01X03679Y00735D03* G01X03679Y00435D03* G01X03579Y00435D03* G01X03479Y00435D03* G54D19* G01X03549Y02285D03* G01X03249Y02285D03* G01X02499Y02285D03* G01X02199Y02285D03* G54D20* G01X01929Y02335D03* G01X01929Y02435D03* G01X01929Y02235D03* G54D21* G01X01079Y01935D03* G01X01079Y01835D03* G01X01079Y01735D03* G01X01079Y01635D03* G01X01079Y01535D03* G01X00429Y02185D03* G01X00429Y02285D03* G01X00429Y02385D03* G01X00429Y02485D03* G01X00429Y02585D03* G01X00479Y00735D03* G01X00479Y00635D03* G01X00479Y00535D03* G01X00779Y00535D03* G01X00779Y00635D03* G01X00779Y00735D03* G01X01079Y00735D03* G01X01079Y00635D03* G01X01079Y00535D03* G01X01079Y00435D03* G01X01379Y00435D03* G01X01379Y00535D03* G01X01379Y00635D03* G01X01379Y00735D03* G01X01679Y00635D03* G01X01679Y00535D03* G01X01679Y00435D03* G01X02879Y00435D03* G01X02879Y00535D03* G01X02879Y00635D03* G01X02879Y00735D03* G01X03179Y00735D03* G01X03179Y00635D03* G01X03179Y00535D03* G01X03179Y00435D03* G01X02879Y01535D03* G01X02879Y01635D03* G01X02879Y01735D03* G01X02879Y01835D03* G01X02879Y01935D03* G54D22* G01X02879Y01935D02* G01X02779Y02085D01* G01X02779Y02085D02* G01X01079Y02085D01* G01X01079Y02085D02* G01X01079Y01935D01* G01X01079Y02085D02* G01X01079Y02485D01* G01X01079Y02485D02* G01X01029Y02535D01* G01X01029Y02535D02* G01X01029Y02735D01* G01X01029Y02735D02* G01X01079Y02785D01* G01X01079Y02785D02* G01X01129Y02785D01* G01X01129Y02785D02* G01X01129Y02935D01* G01X00429Y02385D02* G01X00279Y02385D01* G01X00429Y02285D02* G01X00529Y02285D01* G01X00529Y02285D02* G01X00829Y02035D01* G01X00679Y01785D02* G01X00829Y01685D01* G01X00829Y01685D02* G01X00829Y01485D01* G01X00829Y01485D02* G01X00679Y01335D01* G01X00679Y01335D02* G01X00679Y01235D01* G01X00779Y01285D02* G01X00779Y01085D01* G01X00479Y01235D02* G01X00579Y01435D01* G01X00579Y01435D02* G01X00579Y01685D01* G01X00579Y01685D02* G01X00479Y01785D01* G01X00479Y01785D02* G01X00484Y01785D01* G01X00674Y01785D02* G01X00679Y01785D01* G01X01429Y01785D02* G01X01434Y01785D01* G01X01429Y01785D02* G01X01529Y01685D01* G01X01529Y01685D02* G01X01529Y01435D01* G01X01529Y01435D02* G01X01429Y01235D01* G01X01629Y01235D02* G01X01729Y01335D01* G01X01729Y01335D02* G01X01729Y01735D01* G01X01729Y01735D02* G01X01624Y01785D01* G01X02179Y01785D02* G01X02184Y01785D01* G01X02179Y01785D02* G01X02279Y01685D01* G01X02279Y01685D02* G01X02279Y01435D01* G01X02279Y01435D02* G01X02129Y01235D01* G01X02379Y01235D02* G01X02529Y01335D01* G01X02529Y01335D02* G01X02529Y01685D01* G01X02529Y01685D02* G01X02379Y01785D01* G01X02379Y01785D02* G01X02374Y01785D01* G01X03229Y01635D02* G01X03229Y01335D01* G01X03229Y01335D02* G01X03329Y01235D01* G01X03429Y01335D02* G01X03429Y01685D01* G01X03429Y01685D02* G01X03529Y01735D01* G01X03329Y01735D02* G01X03229Y01635D01* G01X03429Y01335D02* G01X03529Y01235D01* G01X03529Y01035D02* G01X03679Y00735D01* G01X03679Y00735D02* G01X03679Y00435D01* G01X03479Y00235D02* G01X03479Y00735D01* G01X03179Y00735D02* G01X03179Y00635D01* G01X03179Y00735D02* G01X03529Y01035D01* G01X03329Y01035D02* G01X03029Y00985D01* G01X03029Y00985D02* G01X02879Y00735D01* G01X02879Y00735D02* G01X02629Y00735D01* G01X02629Y00735D02* G01X02629Y00435D01* G01X02879Y00535D02* G01X02879Y00235D01* G01X03179Y00235D02* G01X03179Y00535D01* G01X02879Y00635D02* G01X02879Y00735D01* G01X02629Y00735D02* G01X02629Y00835D01* G01X02629Y00835D02* G01X01329Y00835D01* G01X01279Y00985D02* G01X01079Y00735D01* G01X01079Y00535D02* G01X01079Y00235D01* G01X01379Y00235D02* G01X01379Y00535D01* G01X01679Y00435D02* G01X01679Y00235D01* G01X01979Y00235D02* G01X01979Y00735D01* G01X02429Y00735D02* G01X02429Y00235D01* G01X01429Y01035D02* G01X01279Y00985D01* G01X00779Y00535D02* G01X00779Y00235D01* G01X00479Y00335D02* G01X00479Y00535D01* G54D23* G01X00479Y00735D02* G01X00879Y01085D01* G01X00879Y00985D02* G01X00979Y01035D01* G01X00979Y01035D02* G01X00979Y01685D01* G01X00979Y01685D02* G01X01079Y01735D01* G01X01079Y01835D02* G01X00929Y01735D01* G01X00929Y01735D02* G01X00929Y01285D01* G01X00929Y01285D02* G01X00879Y01235D01* G01X01079Y01385D02* G01X01079Y01535D01* G01X01079Y01385D02* G01X01279Y01335D01* G01X02629Y01085D02* G01X02779Y01235D01* G01X02779Y01235D02* G01X02779Y01785D01* G01X02779Y01785D02* G01X02829Y01835D01* G01X02829Y01835D02* G01X02879Y01835D01* G01X02879Y01635D02* G01X02929Y01635D01* G01X02929Y01635D02* G01X03029Y01535D01* G01X03029Y01535D02* G01X03029Y01335D01* G01X03029Y01235D02* G01X02879Y01335D01* G01X02879Y01335D02* G01X02879Y01535D01* G01X03029Y01085D02* G01X03429Y01135D01* G01X03429Y01135D02* G01X03529Y01035D01* G01X01129Y02485D02* G01X01079Y02485D01* G01X00829Y02485D02* G01X00579Y02485D01* G01X00579Y02485D02* G01X00479Y02585D01* G01X00479Y02585D02* G01X00429Y02585D01* G54D24* G01X00679Y02785D02* G01X00779Y02685D01* G01X00779Y02685D02* G01X00829Y02685D01* G01X01129Y02685D02* G01X01179Y02685D01* G01X01179Y02685D02* G01X01279Y02785D01* G01X01279Y02385D02* G01X01329Y02235D01* G01X00729Y02235D02* G01X00679Y02385D01* G01X03334Y01785D02* G01X03329Y01735D01* G01X03529Y01735D02* G01X03524Y01785D01* G54D25* G01X02229Y02285D02* G01X01929Y02235D01* G01X01929Y02335D02* G01X01779Y02335D01* G01X01779Y02335D02* G01X01779Y02735D01* G01X01929Y02435D02* G01X02229Y02435D01* G54D26* G01X00829Y02035D03* G01X00779Y01285D03* G01X00779Y01085D03* G01X01329Y00835D03* M02* pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/000077500000000000000000000000001202063157500220735ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/README.txt000066400000000000000000000003751202063157500235760ustar00rootroot00000000000000This is a design from Joachim Jansen (EKF Elektronik GmbH Industrial Computers & Information Technology) who kindly sent this files to debug our design. Don't try to build it; it is broken and will only serve as a great example on gerber files. $Id$ pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/drill0.exc000066400000000000000000001026331202063157500237670ustar00rootroot00000000000000G90 M72 M48 T0C0.006 T1C0.012 T3C0.020 T4C0.024 T5C0.028 T6C0.031 T7C0.035 T8C0.039 T9C0.043 T10C0.047 T14C0.063 T16C0.071 T18C0.079 T19C0.083 T20C0.087 T21C0.091 T23C0.098 T25C0.110 T27C0.126 % G90 M72 M48 % T5 X69724Y10689 X43740 X23268 T4 X55450Y34065 X56450 X55450Y34565 X56450 X55450Y35065 X56450 X55450Y35565 X56450 X55450Y36065 X56450 X55450Y36565 X56450 X55450Y37065 X56450 X55450Y37565 X56450 X55450Y38065 X56450 X55450Y38565 X56450 X55450Y39065 X56450 X55450Y39565 X56450 X55450Y40065 X56450 X55450Y40565 X56450 X55450Y41065 X56450 T3 X19764Y12795 Y12303 Y11811 T5 X18339Y14209 Y15209 X18858Y38248 Y37264 X19843Y38248 Y37264 T20 X39400Y46400 X23589 T7 X21792Y45160 X20808Y46440 X19205Y34587 X20205Y34087 X19205Y33587 X20205Y33087 X19205Y32587 X20205Y32087 X19205Y31587 X20205Y31087 T14 X17906Y35886 Y29783 T8 X15106Y35264 Y34264 Y31406 Y30406 T4 X77402Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 X76614Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 X75827Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 X75039Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 X74252Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 X73465Y31260 Y32047 Y32835 Y33622 Y34409 Y35197 Y35984 Y36772 Y37559 Y38346 Y39134 Y39921 Y40709 Y41496 Y42283 Y43071 Y43858 Y44646 Y45433 Y46220 Y47008 Y47795 T5 X70827Y39803 Y41772 X68858Y37874 X66890 T25 X16406Y12165 T7 X50189Y13386 X49189 X48189 X47189 X46189 X45189 X44189 X43189 T8 X18138Y43661 Y42677 Y41890 Y40906 T23 X17071Y44870 Y39697 T4 X77402Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 X76614Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 X75827Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 X75039Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 X74252Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 X73465Y11575 Y12362 Y13150 Y13937 Y14724 Y15512 Y16299 Y17087 Y17874 Y18661 Y19449 Y20236 Y21024 Y21811 Y22598 Y23386 Y24173 Y24961 Y25748 Y26535 Y27323 Y28110 Y28898 Y29685 Y30472 T7 X43700Y39850 Y38850 Y37850 X21378Y39488 Y40488 T5 X47350Y46445 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X46850Y45945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X46350Y45445 X47350 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X46850Y44945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X46350Y44445 X47350 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X46850Y43945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X46350Y43445 X47350 X48350 X62350 X63350 X64350 X46850Y42945 X47850 X48850 X61850 X62850 X63850 X46350Y42445 X47350 X48350 X62350 X63350 X64350 X46850Y41945 X47850 X48850 X61850 X62850 X63850 X46350Y41445 X47350 X48350 X62350 X63350 X64350 X46850Y40945 X47850 X48850 X61850 X62850 X63850 X46350Y40445 X47350 X48350 X62350 X63350 X64350 X46850Y39945 X47850 X48850 X61850 X62850 X63850 X46350Y39445 X47350 X48350 X62350 X63350 X64350 X46850Y38945 X47850 X48850 X61850 X62850 X63850 X46350Y38445 X47350 X48350 X62350 X63350 X64350 X46850Y37945 X47850 X48850 X61850 X62850 X63850 X46350Y37445 X47350 X48350 X62350 X63350 X64350 X46850Y36945 X47850 X48850 X61850 X62850 X63850 X46350Y36445 X47350 X48350 X62350 X63350 X64350 X46850Y35945 X47850 X48850 X61850 X62850 X63850 X46350Y35445 X47350 X48350 X62350 X63350 X64350 X46850Y34945 X47850 X48850 X61850 X62850 X63850 X46350Y34445 X47350 X48350 X62350 X63350 X64350 X46850Y33945 X47850 X48850 X61850 X62850 X63850 X46350Y33445 X47350 X48350 X62350 X63350 X64350 X46850Y32945 X47850 X48850 X61850 X62850 X63850 X46350Y32445 X47350 X48350 X62350 X63350 X64350 X46850Y31945 X47850 X48850 X61850 X62850 X63850 X46350Y31445 X47350 X48350 X62350 X63350 X64350 X46850Y30945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X46350Y30445 X47350 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X46850Y29945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X46350Y29445 X47350 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X46850Y28945 X47850 X48850 X49850 X50850 X51850 X52850 X53850 X54850 X55850 X56850 X57850 X58850 X59850 X60850 X61850 X62850 X63850 X47350Y28445 X48350 X49350 X50350 X51350 X52350 X53350 X54350 X55350 X56350 X57350 X58350 X59350 X60350 X61350 X62350 X63350 X64350 X16063Y16693 Y17480 X16850Y16693 Y17480 X17638Y16693 Y17480 X18425Y16693 Y17480 X19213Y16693 Y17480 X15276Y16299 Y17874 T18 Y17087 T6 X17303Y27323 Y26142 X16516Y27323 Y26142 X15728Y27323 Y26142 X17303Y22598 Y21417 X16516Y22598 Y21417 X15728Y22598 Y21417 T5 X41400Y28000 X43320 X57520Y25433 X55551 T25 X16406Y47205 T7 X18543Y47795 X19543 T5 X70827Y35945 Y33976 X65827Y25433 X63858 X61654 X59685 T1 X32350Y29050 X21310Y30100 X33600Y28470 X71040Y13521 X25370Y14270 X32780Y12390 X70890Y12380 X29470Y35850 X68250Y14860 X30200Y26360 X72578Y28822 X72670Y26179 X32760Y26840 X70510Y27220 X71090Y24540 X59210Y17900 X40790Y26880 X69250Y23860 X71040Y13001 Y27944 X68250Y24400 X71190Y19880 X41260Y38480 X43040Y31960 X26010Y24270 X56200Y19600 X16460Y18170 X21880Y12430 X31620Y36410 X43050Y30460 X40100Y29080 X40960Y29030 X30430Y34940 X37250Y22470 X54100Y12890 X40690Y29170 X23960Y25880 X40580Y21610 X29050Y34400 X43880Y15630 X33500Y33870 X59750Y15360 X72578Y14491 X27350Y17520 X21180Y34830 X25640Y18160 X69250Y16860 X27450Y35060 X60210Y18900 X25180Y18410 X64210Y14360 X23120Y25070 X25300Y30470 X34210Y26400 X71040Y30621 X24670Y16120 X71190Y26227 X29310Y12430 X62750Y13900 X30290Y17350 X71090Y25100 X24690Y16610 X43650Y34150 X32020Y42130 X32790Y26390 X23150Y14130 X70250Y14400 X46820Y15720 X31230Y30460 X30070Y34950 X35910Y37960 X18780Y18480 X70250Y15860 X28750Y28340 X57171Y21280 X43030Y36650 X39180Y20920 X31960Y34870 X30270Y17800 X71040Y30101 X44010Y22030 X65710Y13400 X71190Y39101 Y18943 X68250Y13400 X71190Y27684 X17730Y25470 X64750Y14360 X26280Y33870 X27110Y12370 X36480Y35410 X29720Y18800 X70250Y14860 X61200Y16640 X71040Y23053 X26000Y26580 X39250Y19470 X66710Y13860 X71190Y22793 X33220Y48490 X36120Y46160 X67250Y24400 X60370Y10660 X29850Y30390 X69250Y15860 X31980Y38370 X63750Y13360 X30030Y39450 X28230Y17260 X32460Y12380 X36070Y15650 X38300Y19380 X29490Y39010 X34250Y37980 X29650Y34920 X54644Y23240 X22730Y35470 X50330Y12360 X39410Y36230 X56811Y21280 X68710Y15400 X65710Y13860 X72740Y12340 X29190Y18830 X28550Y37580 X59740Y40105 X24610Y26370 X34260Y28270 X66250Y14860 X59750Y19900 X35600Y44460 X39550Y35580 X34910Y33400 X32430Y42380 X72670Y20352 X27060Y37730 X40370Y40680 X68710Y14400 X57630Y34985 X27100Y33040 X57900Y17450 X35900Y34400 X31460Y32860 X36750Y19350 X26380Y37700 X67710Y23400 X28230Y20870 X71190Y21336 X52180Y36995 X59210Y16900 X34040Y12410 X29270Y18240 X71040Y33534 X18250Y25400 X43100Y12350 X26930Y23870 X43250Y15630 X38260Y20350 X23540Y31140 X35900Y33410 X71190Y18423 X29940Y35310 X32770Y18380 X70740Y27440 X32500Y46460 X24720Y35070 X36140Y25240 X34430Y32860 X32880Y37190 X29620Y46270 X36370Y46650 X71040Y32077 X59750Y21360 X65150Y11450 X32480Y34860 X49240Y22010 X39950Y36050 X46040Y21590 X42940Y15630 X36740Y27330 X24110Y28850 X30050Y39950 X45680Y36690 X60670Y36735 X28150Y45310 X72670Y18899 X69250Y17860 X66250Y13400 X72670Y13305 X27420Y31880 X30840Y17940 X34280Y26900 X59210Y19900 X70250Y17400 X66560Y42200 X39960Y30930 X37520Y12410 X69710Y14400 X36280Y29670 X30250Y41300 X36920Y34900 X25140Y42650 X30970Y34850 X20400Y45830 X70970Y34590 X71040Y45188 X31300Y18000 X28220Y17800 X48040Y20140 X71040Y17227 X46145Y20140 X28760Y18310 X58790Y36895 X43020Y32650 X31760Y24860 X69710Y13400 X30410Y26870 X37400Y36070 X41260Y31970 X24090Y19910 X43400Y12330 X37700Y19400 X35480Y40850 X28060Y33130 X28740Y17270 X41840Y12370 X71190Y44407 X33940Y28860 X36960Y32860 X24730Y28730 Y14620 X55930Y19600 X71040Y33014 X31510Y16670 X71040Y16290 X38060Y36130 X23110Y33890 X39870Y17810 X69710Y15400 X60750Y22360 X34910Y34400 X35910Y34970 X35450Y33860 X34980Y32860 X60210Y15360 X68710Y14860 X30980Y30290 X24280Y24820 X27860Y31580 X59210Y18900 X60210Y16900 X70250Y23860 X43350Y33560 X21270Y20830 X26720Y32260 X36980Y33960 X29520Y39960 X28760Y20850 X22120Y22490 X24550Y25930 X71190Y31297 X72670Y31773 Y39053 X56050Y18620 X48350Y20140 X60210Y16360 X27870Y31150 X33930Y33430 X28220Y37790 X71190Y21857 Y27163 X39790Y38300 X67710Y23860 X66250Y24400 X59210Y19360 X24810Y24820 X25630Y16250 X64951Y15940 X62750Y14360 X29710Y25850 X59420Y36765 X32770Y16480 X43250Y26910 X33410Y12420 X31740Y32310 X24580Y23110 X34230Y32050 X63750Y14360 X25610Y30530 X32440Y38940 X54981Y19600 X24400Y20240 X72670Y40513 X27460Y33100 X29940Y32860 X20860Y22520 X67250Y23400 X36950Y33410 X26660Y33490 X61210Y14900 X25000Y28990 X63210Y14900 X35120Y32050 X60750Y15360 X59750Y20360 X24700Y31140 X25700Y28670 X60210Y19900 X29220Y26820 X60750Y17360 X31440Y33400 X26710Y23110 X71190Y33274 X64750Y13360 X32090Y36220 X71040Y15770 X38210Y18820 X71040Y23573 X52840Y34745 X36470Y34410 X59750Y19360 X30620Y27860 X32930Y33390 X37480Y34860 X60210Y22360 X17770Y37446 X34460Y33860 X25470Y31910 X32530Y16290 X60210Y19360 X59210Y18360 X72670Y24726 X42310Y15600 X34510Y28450 X34400Y34840 X26720Y30690 X28740Y19330 X60750Y21360 X26710Y22480 X63590Y15410 X30670Y26430 X68710Y19400 X23140Y14620 X27430Y31510 X32880Y34420 X37920Y34450 X19990Y22220 X37480Y33920 X30300Y28780 X30470Y36400 X36410Y40910 X31120Y46730 X26180Y14350 X59750Y17360 X68250Y23400 X28730Y19830 X38160Y44900 X23540Y31530 X31970Y33860 X38200Y36840 X18940Y22500 X66710Y23860 X59210Y22360 X18090Y37760 X35410Y33400 X23120Y32720 X30270Y18240 X32190Y27820 X31090Y41650 X71190Y37124 X27120Y46230 X22010Y19160 X31220Y26420 X26720Y32690 X24710Y31540 X29540Y36430 X43310Y32780 X24580Y23450 X25250Y39380 X51730Y25660 X69710Y14860 X27420Y32260 X22740Y31530 X31400Y34420 X25890Y31940 X27450Y30740 X32050Y15820 X71040Y20140 X33720Y12680 X33610Y46710 X37470Y33400 X33510Y33430 X26170Y30670 X59210Y15360 X72670Y41967 X37450Y32850 X28820Y37790 X30510Y34430 X29230Y19870 X30450Y38380 X64210Y13360 X71190Y32754 X29470Y29280 X60750Y18360 X72670Y27639 X23760Y30640 X72670Y34687 X69367Y12310 X23150Y11930 X32290Y16040 X65740Y43650 X26700Y22800 X31610Y24600 X70250Y18860 X40370Y40270 X67250Y22860 X16920Y18260 X71200Y24820 X71190Y24250 X32860Y39390 X34980Y12340 X69250Y16400 X70250Y24400 X30830Y18920 X64210Y13900 X70970Y35130 X71040Y43731 X27320Y37500 X30970Y38380 X35710Y23420 X35250Y26970 X28750Y26360 X70250Y19400 X25110Y43450 X49295Y15652 X35230Y37650 X24810Y37760 X30570Y22970 X70250Y15400 X71040Y35430 X29250Y27350 X44350Y12330 X71430Y41260 X30800Y25830 X23290Y24050 X24700Y17120 X70250Y16860 X41360Y15600 X25580Y12140 X71040Y38841 X22810Y26600 X26670Y34300 X33790Y26330 X41680Y15610 X32910Y28820 X30600Y28550 X71040Y37384 X34410Y14230 X29960Y35850 X71180Y40850 X23260Y12770 X31760Y25160 X31500Y25010 X55970Y19160 X31920Y28520 X26720Y31910 X33500Y16840 X31210Y28690 X43690Y32180 X58570Y17450 X31960Y32960 X24270Y26390 X29690Y41080 X55220Y19160 X37030Y35530 X26500Y14140 X27090Y35470 X33240Y26270 X30070Y28410 X50490Y14470 X59360Y34475 X71190Y44928 X23970Y39550 X27430Y31090 X41200Y12370 X21860Y12830 X33350Y25860 X27870Y46690 X29770Y19860 X24940Y26390 X38740Y20350 X35470Y40400 X71190Y17487 X67250Y14860 X36230Y26350 X72578Y15121 X34230Y16970 X70940Y39270 X68250Y23860 X23350Y39630 X34160Y45380 X20840Y23090 X29390Y36690 X61820Y27870 X36960Y39380 X27740Y12400 X59210Y17360 X68500Y12310 X71190Y25706 X31130Y32420 X59750Y15900 X26910Y24620 X26290Y31520 Y31140 X34690Y32050 X58030Y23240 X71190Y43471 X23070Y39340 X69250Y17400 X72670Y30313 X28120Y46110 X38670Y12350 X69710Y17400 X68710Y23860 X70250Y21400 X71130Y34870 X35420Y35540 X72670Y44880 X32290Y26820 X31840Y18430 X35000Y33830 X38790Y39300 X29920Y37400 X69710Y15860 X26730Y23420 X68710Y16400 X24330Y32310 X62360Y13400 X72578Y29131 X72670Y36140 Y21813 X28130Y45680 X37700Y18880 X71040Y27424 Y26487 X27460Y34280 X32020Y32170 X60210Y22900 X21660Y20820 X40080Y17590 X71190Y20400 X71180Y12190 X34410Y33440 X38160Y35840 X31120Y41990 X38510Y14160 X71410Y35440 X26040Y23930 X72578Y28501 X58250Y17450 X70250Y18400 X59750Y18900 X72670Y15986 X30920Y32200 X34250Y27360 X66060Y12310 X67710Y24400 X30950Y36840 X31460Y38950 X72578Y14800 X37350Y38960 X31260Y26870 X28250Y27840 X39980Y34650 X68250Y22860 X71190Y15510 X35940Y32860 X70250Y20400 X34420Y34420 X29540Y40460 X67710Y13860 X71200Y34280 X35910Y35890 X72670Y33226 X32020Y41650 X72578Y14170 X69710Y17860 X71040Y19203 X23500Y26170 X43560Y15630 X32900Y33900 X68710Y17400 X71170Y42440 X71190Y36440 X35870Y46420 X36430Y33870 X68230Y16930 X71040Y44668 X71190Y38580 X38540Y15590 X23270Y18300 X33100Y12420 X70250Y16400 X29230Y21340 X33540Y34420 X36440Y32860 X19310Y45880 X29730Y17260 X29770Y20860 X71190Y16966 X27420Y12360 X72670Y17439 X43340Y33860 X59210Y15900 X71190Y42120 X27090Y33890 X25120Y35470 X38720Y19930 X71040Y41120 X72670Y37600 X37960Y39120 X18680Y23480 X58810Y34425 X30550Y39460 X32780Y29610 X27710Y20320 X35220Y15640 X46460Y20140 X32760Y16820 X28930Y46670 X29450Y40890 X34870Y45620 X33870Y34890 X35880Y36970 X35460Y39970 X71040Y18683 X34760Y28280 X35310Y27840 X60210Y18360 X27770Y17800 X41990Y15610 X71040Y21597 X20270Y19150 X37670Y20920 X25840Y37730 X69250Y13400 X31030Y28450 X71040Y25967 X67250Y13400 X71190Y16030 X20260Y28410 X71150Y41410 X23140Y13120 X36620Y46290 X35730Y24360 X28180Y34770 X37670Y19940 X25320Y37760 X70250Y23400 X29720Y17800 X33800Y27300 X60210Y14900 X25960Y12880 X39440Y38160 X33810Y17890 X63210Y13900 X29270Y17240 X33960Y34420 X40040Y31220 X24440Y25300 X24710Y15120 X34720Y14200 X59210Y14900 Y16360 X23600Y39340 X22730Y39620 X52860Y35465 X39960Y30440 X66710Y23400 X63210Y14360 X34380Y45610 X31750Y27260 X35300Y27370 X72670Y23266 X24410Y29030 X34750Y26450 X37910Y34010 X28680Y12380 X24490Y24410 X70900Y12070 X39800Y37870 X55251Y19600 X24710Y17620 X26290Y31920 X55300Y18620 X25550Y37420 X58640Y12690 X32460Y38150 X66710Y13400 X38550Y44570 X32870Y32930 X32770Y17950 X28710Y39520 X22770Y22490 X30530Y30310 X71190Y29840 X35370Y45950 X48740Y15720 X35530Y15660 X30550Y39950 X44910Y18710 X32450Y33900 X32670Y37880 X61260Y17910 X27700Y19800 X30270Y18800 X33970Y32800 X24760Y12100 X27450Y33890 X42660Y38520 X28290Y28590 X24590Y23780 X70250Y20860 X70830Y45600 X71190Y13261 X59750Y22360 X32770Y27330 X59750Y14360 X32310Y22390 X24720Y13120 X39240Y20350 X25090Y37190 X22230Y44250 X35450Y34400 X70885Y11296 X36980Y34410 X29510Y37420 X31300Y21840 X72670Y43427 X26740Y37430 X35910Y35480 X59210Y21900 X68710Y21400 X24780Y24220 X21810Y25920 X41510Y12370 X71040Y22117 X21190Y34310 X26720Y35060 X37120Y46380 X27640Y37210 X35950Y33840 X35970Y40430 X24680Y15620 X59210Y20360 X71040Y37904 X38170Y20920 X27100Y33470 X71190Y13782 X67710Y14400 X70250Y17860 X71100Y46810 X36460Y33410 X22190Y25920 X68710Y23400 X25030Y23440 X28210Y19820 X43590Y20140 X60210Y21900 X26150Y37420 X32780Y28390 X69250Y14400 X71190Y42950 X39380Y37710 X60750Y20360 X60210Y17360 X24460Y19610 X43730Y12330 X58580Y33255 X25870Y31520 X37430Y34400 X59210Y21360 X26620Y46660 X35060Y39910 X18320Y27710 X34350Y12410 X39650Y18020 X61130Y18360 X71260Y36790 X59750Y21900 X41050Y13160 X33670Y29190 X70250Y22860 X68250Y14400 X26670Y33880 X35800Y15800 X60750Y19360 X71040Y20660 X67250Y13860 X25220Y28570 X29750Y28350 X30610Y32190 X71040Y40580 X59210Y22900 X27610Y46230 X34860Y37910 X71150Y40300 X24470Y25640 X70250Y19860 X25550Y29120 X30470Y36840 X28990Y34710 X26310Y35100 X30120Y46270 X71040Y17747 X59210Y23360 X46860Y12690 X58760Y15900 X56451Y21280 X63750Y13900 X71190Y23313 X37930Y37180 X36980Y40480 X71190Y30361 X36470Y36400 X23110Y31140 X28050Y32290 X71040Y31557 X71190Y37644 X31050Y39460 X64210Y14900 X71040Y43211 X24710Y14120 X48690Y13870 X32450Y32920 X25990Y26940 X52620Y11460 X23560Y33880 X59750Y13900 X42990Y29180 X42960Y34940 X33940Y36700 X67040Y42820 X72440Y47640 X52840Y41885 X68710Y20860 X59360Y20800 X19030Y23120 X38750Y44240 X53780Y32585 X24350Y32650 X69910Y45920 X25140Y33450 X24680Y30480 X25140Y32360 X23565Y34657 X37990Y41340 X63750Y22900 X40660Y28160 X32860Y46590 X54700Y41525 X67200Y29910 X38170Y21930 X34180Y21420 X20510Y17360 X39240Y22600 X21780Y27860 X36480Y34850 X27780Y18870 X62960Y26340 X32260Y20400 X61750Y22900 X68987Y36206 X49070Y47170 X24630Y27900 X23860Y22430 X62400Y25600 X52150Y26050 X21680Y14660 X60250Y38105 X58800Y42245 X47715Y15637 X19500Y42220 X26580Y41190 X34330Y19430 X35770Y21410 X43800Y32700 X34130Y30350 X60190Y36645 X67260Y24730 X47047Y23496 X34130Y24670 X38760Y18930 X24540Y36380 X37980Y37720 X26720Y31110 X71188Y46337 X68849Y25640 X67710Y24750 X30930Y37470 X60750Y15900 X59280Y39545 X67710Y14860 X72578Y29452 X37990Y40060 X23970Y29820 X30920Y36400 X68000Y48500 X69100Y40050 X64500Y26200 X34220Y22880 X43190Y47800 X28830Y44650 X59750Y27690 X41260Y31370 X41916Y23390 X24950Y22840 X59790Y34725 X26990Y26710 X59480Y35655 X71890Y28890 X67220Y28770 X25980Y26230 X56180Y32315 X23810Y24740 X27330Y36570 X27360Y40100 X33470Y39430 X47010Y28060 X44666Y23536 X69250Y20860 X24380Y33070 X51880Y34785 X19910Y27800 X49980Y39995 X67810Y25650 X60750Y19900 X64750Y23360 X38040Y12350 X19260Y38960 X22800Y20950 X47003Y21080 X49250Y27690 X23270Y20960 X42806Y21080 X50180Y14460 X39380Y31100 X32150Y12350 X32060Y37200 X24850Y36260 X39930Y35460 X57680Y33005 X66560Y48490 X56584Y12655 X20180Y40450 X57300Y41875 X29020Y43010 X42341Y23536 X56597Y13802 X32510Y40890 X68710Y18860 X69587Y11617 X62400Y25200 X43540Y34860 X20610Y41420 X38910Y29200 X65760Y39430 X24380Y33440 X49050Y19050 X63700Y24800 X45020Y12380 X69390Y26980 X50440Y17400 X61351Y20768 X40100Y14460 X60210Y21360 X27140Y32680 X20800Y24280 X52160Y36435 X25500Y35480 X58316Y22228 X60750Y16900 X30869Y48442 X54010Y21280 X33440Y36020 X28980Y35050 X19700Y13980 X17380Y25070 X59430Y41305 X25080Y41170 X39970Y32520 X69760Y43230 X28920Y36280 X20930Y18340 X24720Y32630 X25560Y35040 X54370Y21280 X27780Y35790 X38770Y30390 X59470Y33005 X17810Y19180 X50880Y34335 X31260Y18870 X60750Y20900 X50910Y33225 X69500Y48880 X63750Y23900 X42233Y21080 X29300Y39290 X24353Y33870 X60500Y24800 X68500Y34710 X61750Y23360 X42410Y31120 X46870Y12350 X34160Y22440 X59470Y32585 X28120Y32710 X49480Y24480 X27070Y20120 X44666Y22291 X53490Y36505 X26290Y32270 X69710Y16860 X28720Y27320 X34660Y22440 X63310Y16540 X32680Y23420 X19350Y46470 X20300Y22220 X20870Y25850 X62400Y24800 X61231Y34200 X52530Y17718 X23510Y26800 X39970Y33230 X72670Y11852 X56000Y47210 X29940Y12330 X33680Y21420 X29100Y16710 X67600Y28770 X52040Y12130 X24330Y35070 X62800Y24800 X45947Y23496 X20150Y14670 X29550Y32100 X55420Y32585 X42210Y16250 X59460Y37765 X24970Y27900 X41220Y33180 X60280Y12160 X49920Y34785 X50490Y33225 X27670Y16790 X63220Y47800 X23910Y33910 X23050Y23560 X45947Y22252 X49980Y39095 X69587Y11296 X66720Y25730 X44192Y22291 X38680Y31120 X43770Y35090 X58760Y41505 X60990Y31540 X27640Y14410 X34720Y21880 X60220Y34705 X58316Y22560 X66440Y36810 X38750Y41870 X23180Y35780 X67000Y48500 X21020Y28960 X24450Y29800 X34450Y36700 X33450Y36720 X30250Y21350 X69250Y13860 X33260Y30350 X41080Y40720 X50910Y35575 X63200Y25600 X60570Y32965 X51090Y40905 X67190Y30300 X41930Y47800 X29730Y18380 X45590Y40500 X45473Y22252 X31330Y37440 X19900Y23350 X62140Y21090 X54930Y22560 X65710Y14400 X41220Y35310 X33630Y37940 X32360Y46730 X43790Y34420 X25510Y35820 X60750Y14900 X18520Y44730 X53650Y21890 X22360Y27880 X35550Y14080 X49389Y23536 X36670Y19930 X68730Y45570 X66130Y47180 X71900Y14110 X30250Y20360 X46390Y12450 X66710Y14860 X20130Y13320 X30260Y21840 X37440Y11900 X25150Y34620 X59750Y16900 X69550Y47170 X45140Y11210 X44318Y26880 X70490Y48500 X65707Y32700 X43770Y31420 X48000Y23650 X65700Y32300 X52550Y18300 X53900Y42265 X33720Y12340 X34220Y21880 X29369Y48442 X68650Y29900 X22130Y21840 X41720Y26880 X69710Y18400 X25870Y34290 X18610Y26250 X45930Y12330 X29060Y45320 X30640Y25440 X70420Y47180 X50910Y36525 X56251Y22228 X19010Y25500 X65910Y37690 X38170Y25430 X38720Y41380 X29290Y46570 X66560Y48890 X30930Y25350 X66230Y16940 X58550Y19100 X61000Y25600 X66207Y30300 X59750Y17900 X68157Y32700 X69060Y42170 X42816Y23536 X29400Y44790 X34930Y40430 X68987Y36806 X68000Y46430 X53150Y21890 X28960Y48470 X26640Y34680 X66230Y17440 X25900Y33510 X68710Y17860 X33850Y16360 X67610Y29550 X66720Y27020 X27880Y27840 X55304Y13802 X33920Y36040 X42513Y21080 X32270Y19830 X42400Y31660 X24350Y34640 X66910Y36490 X38750Y31690 X33930Y33860 X67000Y47180 X36210Y17890 X43760Y30570 X66277Y12070 X56290Y42335 X30890Y12340 X43590Y31690 X24680Y13620 X22800Y22120 X36270Y24110 X36330Y24930 X18540Y18760 X26290Y34300 X68987Y37406 X36230Y18310 X17880Y28200 X20320Y21830 X68710Y19860 X22600Y29650 X35520Y24590 X60750Y16360 X60210Y15900 X51240Y21280 X57360Y12630 X68520Y37410 X44200Y14460 X67500Y48500 X71270Y47640 X36930Y39930 X37940Y38460 X26840Y43040 X69710Y13860 X67350Y36490 X57036Y21890 X52530Y16970 X33720Y22880 X20130Y20940 X33680Y23780 X31320Y27280 X28990Y34100 X28760Y22840 X25850Y29790 X67257Y32700 X24720Y33450 X28730Y45320 X27250Y44340 X57580Y18750 X62750Y22900 X48003Y21080 X43810Y33420 X66710Y29910 X35330Y25390 X50010Y12340 X21870Y17120 X45600Y43870 X32630Y48480 X52200Y18650 X32470Y33400 X23565Y35025 X52530Y16222 X30100Y14430 X36320Y24390 X61000Y24800 X45590Y29500 X36970Y44160 X70600Y32300 X60500Y25600 X28010Y38910 X31920Y33400 X40890Y12340 X19060Y23500 X35830Y19430 X26730Y31470 X39940Y12340 X34800Y43080 X28750Y27850 X69250Y19400 X56304Y12655 X69710Y21400 X23320Y21840 X53690Y41885 X27040Y25550 X29740Y26860 X60720Y39545 X38990Y36080 X26360Y29780 X71348Y29063 X23910Y34280 X66440Y36490 X68987Y36506 X69710Y24400 X63410Y11410 X69700Y29900 X32210Y25300 X60750Y17900 X29970Y40440 X31190Y29690 X35620Y26880 X51620Y21280 X24790Y22480 X31480Y34850 X66440Y36190 X62210Y13900 X21190Y43590 X62750Y14900 X52520Y32625 X25880Y32720 X25370Y46750 X21870Y16620 X24720Y34237 X31590Y31380 X41210Y26880 X29010Y35370 X31480Y25330 X30890Y34430 X18640Y46480 X19730Y20940 X28700Y38920 X21870Y17620 X40010Y33830 X58700Y17950 X68240Y20390 X31620Y46760 X69030Y47180 X42520Y19750 X32750Y17350 X23900Y34680 X41050Y14450 X33660Y22440 X26100Y37090 X37170Y17430 X38210Y14450 X38410Y41860 X25030Y23140 X60210Y20900 X38170Y23480 X41220Y34670 X68710Y24400 X29210Y20320 X18250Y19200 X20917Y47673 X66900Y36810 X52865Y22560 X33830Y18930 X50490Y36525 X27570Y27840 X26830Y42280 X41220Y32400 X64100Y24800 X68500Y48880 X46430Y22227 X68294Y16162 X16980Y17880 X27480Y32680 X32720Y22880 X52400Y22550 X33710Y31390 X58550Y18750 X51050Y41645 X43556Y26880 X65250Y11880 X69700Y28650 X47710Y21080 X67757Y31450 X30480Y45380 X33790Y26850 X44192Y23536 X34180Y23420 X70180Y25690 X27430Y38920 X26470Y11890 X68500Y42130 X51880Y38035 X36450Y37970 X60210Y13360 X52865Y22228 X23540Y32310 X66707Y32700 X63629Y26340 X52865Y22890 X23330Y36370 X33220Y22880 X28370Y12370 X24353Y34237 X65710Y14860 X60500Y25200 X22020Y28900 X52110Y12770 X58300Y17950 X59210Y13360 X19290Y19290 X68370Y25650 X58700Y18400 X61351Y20334 X25140Y33870 X23120Y34690 X68294Y15728 X51750Y33515 X24800Y12618 X61452Y12160 X66250Y14400 X16770Y20250 X36590Y31910 X69710Y23860 X53600Y19100 X19980Y22920 X63750Y14900 X25990Y25340 X47723Y22227 X30670Y23430 X53918Y12630 X33900Y15790 X30369Y48442 X20910Y12450 X24710Y34630 X18520Y45100 X36270Y18930 X32510Y36210 X60750Y23360 X69200Y31050 X34830Y19430 X57536Y23210 X70000Y47180 X31950Y38960 X28040Y40130 X56536Y21890 X64500Y25000 X30510Y16660 X28960Y36580 X70613Y31850 X36010Y31540 X51750Y32075 X21890Y13450 X24180Y26810 X32240Y21090 X31730Y17850 X34450Y37190 X49863Y22291 X46340Y24940 X39170Y16930 X56251Y22560 X59210Y13900 X22780Y34630 X23770Y20610 X30090Y34430 X21870Y15120 X25870Y34670 X21640Y11570 X33880Y14380 X67250Y23860 X68290Y12070 X28750Y21340 X23565Y34237 X53050Y38195 X67250Y31050 X24720Y32295 X38190Y29200 X29869Y48442 X31990Y48470 X66250Y13860 X52500Y47210 X21240Y42180 X70490Y48880 X34720Y22880 X23900Y31930 X66207Y29900 X29770Y27320 X41806Y21080 X67500Y48880 X59750Y14900 X41526Y22227 X34619Y48442 X30620Y46760 X66277Y11770 X42460Y12350 X68520Y37100 X54600Y33535 X25050Y20910 X58500Y34445 X26120Y36510 X66207Y32700 X21870Y15620 X67410Y37370 X24820Y25310 X44040Y12330 X25460Y30790 X69250Y15400 X67230Y39810 X18510Y45480 X70000Y48500 X36780Y45670 X40210Y22437 X60750Y21900 X33180Y23420 X66130Y46430 X59710Y43600 X30480Y44983 X52550Y18650 X35295Y12340 X67763Y31850 X69587Y12005 X34410Y36040 X55420Y33005 X69250Y18400 X25140Y33083 X69250Y18860 X19020Y24130 X25230Y16440 X25500Y33900 X45590Y33050 X25550Y15890 X67810Y26930 X57900Y17950 X68290Y11473 X60370Y31500 X52910Y34045 X59750Y23900 X59000Y35965 X34680Y23420 X65710Y22860 X67000Y46430 X38240Y17360 X69700Y30300 X67620 X56877Y13802 X28750Y17850 X27270Y44650 X56536Y23210 X68650Y30300 X48600Y14460 X41960Y39510 X28530Y14430 X69200Y32300 X70607Y32700 X55730Y18620 X51850Y18650 X30470Y37400 X43800Y35920 X53600Y18650 X51420Y39095 X57834Y12630 X30210Y19310 X30500Y43280 X32660Y22440 X39740Y29180 X61000Y25200 X32760Y30330 X25040Y23990 X23630Y25890 X67757Y32700 X23910Y33110 X51500Y18650 X34720Y26020 X66707Y30300 X69343Y25640 X58150Y34445 X42526Y22227 X32680Y21420 X24130Y20930 X56920Y32315 X57700Y33895 X22760Y33110 X21040Y28180 X28710Y43020 X53918Y11386 X25910Y32270 X58380Y38470 X71860Y14650 X71360Y14070 X51420Y39995 X23900Y35070 X26300Y32710 X68520Y36500 X30750Y17350 X44993Y17400 X67520Y41890 X43903Y16250 X67260Y25670 X56290Y41955 X47500Y13989 X38640Y32350 X57580Y19100 X19500Y41560 X67610Y29910 X66200Y32300 X36750Y42210 X33720Y21880 X21483Y47727 X25920Y35050 X48600Y19050 X38670Y17430 X26290Y34680 X20910Y17560 X18600Y26570 X62788Y16100 X34190Y18280 X35440Y21370 X59210Y23900 X23560Y32650 X70600Y31050 X50870Y21280 X68987Y37106 X33160Y22440 X19040Y24450 X23040Y23110 X67260Y26940 X53150Y23210 X64586Y22310 X46723Y22227 X46430Y21080 X34920Y29780 X33310Y46700 X45590Y37000 X17290Y37060 X60540Y33595 X23910Y33450 X72670Y46340 X37630Y48480 X70520Y26920 X34890Y17380 X59780Y35815 X41260Y31670 X30960Y35850 X33420Y37190 X67750Y31050 X58270Y31285 X51850Y18300 X37670Y27270 X70250Y13400 X67750Y32300 X28230Y26340 X33180Y21420 X30030Y31630 X25140Y34237 X54500Y26050 X60210Y14360 X69250Y22860 X35920Y32320 X69250Y14860 X21880Y18120 X48450Y12330 X57290Y42325 X42950Y35630 X64750Y14900 X21540Y22110 X70000Y48880 X54150Y23210 X38470Y30390 X21170Y35180 X20360Y38870 X59750Y20900 X65020Y22310 X24860Y26810 X53444Y11386 X60160Y41325 X28190Y35370 X45770Y47170 X59750Y23360 X25490Y31140 X27610Y26810 X50650Y12340 X39320Y28110 X49389Y22291 X37510Y40480 X18770Y19150 X64400Y47800 X41470Y23390 X52750Y27690 X68520Y36800 X61875Y11410 X37670Y21930 X64905Y12300 X59210Y14360 X34680Y21420 X31369Y48442 X59750Y13360 X51500Y18300 X57834Y11386 X59750Y18360 X66120Y48500 X23850Y21870 X52910Y42305 X67500Y47180 X63370Y12300 X61750Y14900 X38660Y20920 X53650Y23210 X36330Y21430 X50490Y35575 X30710Y19310 X28190Y35070 X64750Y22900 X43890Y28350 X67250Y32300 X70607Y31450 X29340Y42310 X36250Y25970 X57036Y23210 X66910Y36180 X71890Y28433 X69000Y48500 X41806Y22227 X61500Y24800 X20200Y46190 X20390Y27900 X60210Y13900 X38430Y44220 X43550Y29180 X60210Y17900 X55877Y12655 X16890Y23810 X62800Y25200 X39090Y39330 X65700Y31050 X45855Y24942 X26980Y27840 X19020Y20920 X40810Y41870 X66710Y22860 X22240Y30440 X52700Y19100 X26030Y24720 X57680Y32585 X61210Y13360 X23960Y36380 X72930Y31320 X66200Y31050 X23910Y32650 X23565Y33450 X24700Y35450 X22610Y28940 X69500Y48500 X28530Y48490 X31450Y38380 X64500Y25400 X56251Y22890 X41220Y33850 X71890Y29520 X42970Y34280 X39090Y36580 X59440Y41855 X54150Y21890 X33950Y37190 X21190Y36410 X67710Y22860 X60210Y20360 X66230Y15940 X64500Y25800 X39200Y34150 X63210Y22900 X47040Y14460 X37880Y31280 X28220Y31990 X38050Y45290 X66700Y31050 X68510Y36206 X68650Y28650 X23910Y31150 X28750Y28850 X63200Y25200 X25010Y22250 X59750Y38105 X46573Y23496 X69250Y24400 X36330Y19430 X54930Y22228 X36330Y20930 X69250Y22400 X68000Y48880 X25560Y34250 X34040Y19860 X67360Y36180 X32970Y40950 X56877Y12655 X42806Y22227 X69207Y32700 X41233Y21080 X38550Y33670 X19370Y21560 X57360Y11386 X66120Y48880 X68240Y20712 X67340Y36810 X66570Y47180 X62210Y22900 X68150Y31050 X59750Y24360 X66570Y46430 X21880Y16120 X30670Y24430 X67610Y29170 X46350Y19050 X56304Y13802 X25890Y33080 X34100Y48480 X35050Y38960 X68500Y46430 X42233Y22227 X52400Y22200 X37670Y18430 X21900Y30090 X50810Y14390 X67530Y17750 X68500Y48500 X19020Y24840 X22250Y24270 X54930Y22890 X41513Y21080 X60790Y37325 X23370Y13620 X67000Y48880 X31050Y14460 X69920Y44330 X52060Y42305 X61950Y24800 X24720Y33870 X26250Y18620 X68540Y42720 X29230Y22330 X66710Y28760 X24720Y33083 X59500Y47210 X56250Y27690 X23030Y21800 X30340Y46570 X49920Y38035 X45473Y23496 X57536Y21890 X70250Y21860 X59410Y42355 X23740Y20950 X27030Y25220 X52400Y22900 X65000Y25400 X35480Y35870 X30670Y24930 X49863Y23536 X33220Y21880 X61310Y33650 X53490Y37500 X32820Y36220 X17840Y27780 X27180Y29790 X55584Y12655 X28610Y16690 X29210Y27790 X25810Y42270 X35830Y25390 X29920Y36400 X55304Y12655 X29980Y36840 X34820Y25390 X31730Y19830 X55877Y13802 X66700Y32300 X30470Y35850 X55597Y13802 X28240Y26850 X31850Y35960 X34780Y24300 X34340Y19900 X31210Y19380 X69710Y16400 X68370Y26950 X32310Y14460 X36670Y23430 X28250Y19340 X35330Y19430 X29270Y17840 X32660Y25320 X34330Y25370 X21300Y16790 X36880Y30270 X48003Y22227 X48150Y19050 X47250 X46800 X47710Y20140 X26080Y41180 X68290Y11770 X47430Y21080 X47933Y13989 X56450Y26050 X56000 X22650Y19150 X49450Y19050 X47550Y23650 X20140Y46510 X66210Y28750 X53444Y12630 X30670Y23930 X47430Y22227 X47700Y19050 X26890Y40630 X68849Y26958 X54730Y21280 X31770Y19370 X32320Y25920 X38270Y38440 X31910Y39490 X32930Y34860 X63200Y24800 X40210Y23390 X68500Y47180 X68000 X52520Y33365 X35960Y38960 X68710Y15860 X35450Y34850 X21190Y33640 X60750Y18900 X30730Y19840 X46710Y21080 X50090Y24340 X53780Y33005 X38120Y19930 X62800Y25600 X47003Y22227 X34990Y20300 X42630Y14460 X38310Y41340 X19780Y15620 X23565Y33083 X22720Y36310 X22770Y33490 X39810Y31760 X25800Y43110 X68150Y32300 X39070Y30410 X45140Y14450 X38310Y40060 X51410Y15100 X60750Y14360 X66590Y26580 X67250Y14400 X58316Y22890 X27860Y48480 X25560Y34640 X52200Y18300 X18960Y22190 X27060Y34670 X68710Y16860 Y21860 X59750Y22900 X69000Y48880 X20930Y26760 X41233Y22227 X66277Y11473 X56900Y26050 X42470Y28690 X21870Y13810 X64750Y24360 X65710Y24400 X67500Y46430 X46090Y14450 X40656Y22437 X70250Y13860 X40656Y23390 X32720Y21880 X58772Y16616 M30 pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/l3.grb000066400000000000000000004064551202063157500231230ustar00rootroot00000000000000%FSLAX13Y13*% %ADD010C,0.004*% %ADD011C,0.006*% %ADD012C,0.008*% %ADD013C,0.010*% %ADD014C,0.012*% %ADD015C,0.014*% %ADD016C,0.016X0.006*% %ADD017C,0.018*% %ADD018C,0.020*% %ADD019C,0.024*% %ADD020C,0.028*% %ADD021C,0.031*% %ADD022C,0.035*% %ADD023C,0.039*% %ADD024C,0.047*% %ADD025C,0.051*% %ADD026C,0.055*% %ADD027C,0.059*% %ADD028C,0.063*% %ADD029C,0.067*% %ADD030C,0.071*% %ADD030C,0.071*% %ADD031C,0.075*% %ADD032C,0.079*% %ADD033C,0.083*% %ADD034C,0.087*% %ADD035C,0.098*% %ADD036C,0.118*% %ADD037C,0.138*% %ADD038C,0.157*% %ADD039C,0.177*% %ADD040C,0.205*% %ADD041C,0.015*% %ADD042C,0.018*% %ADD043C,0.020*% %ADD044C,0.024X0.012*% %ADD045C,0.028*% %ADD046C,0.031*% %ADD047C,0.035*% %ADD048C,0.039*% %ADD049C,0.043X0.028*% %ADD050C,0.047*% %ADD051C,0.051*% %ADD052C,0.055*% %ADD053C,0.059*% %ADD054C,0.063*% %ADD055C,0.067*% %ADD056C,0.071*% %ADD057C,0.075*% %ADD058C,0.079*% %ADD059C,0.083*% %ADD060C,0.087*% %ADD061C,0.098*% %ADD062C,0.102*% %ADD063C,0.110*% %ADD064C,0.118*% %ADD065C,0.138*% %ADD066C,0.157*% %ADD067C,0.177*% %ADD068C,0.205*% %ADD069C,0.221*% %ADD070C,0.004*% %ADD071R,0.024X0.024*% %ADD072R,0.028X0.028*% %ADD073R,0.031X0.031*% %ADD074R,0.035*% %ADD075R,0.039X0.039*% %ADD076R,0.043X0.043X0.028*% %ADD077R,0.047X0.047*% %ADD078R,0.051X0.051*% %ADD079R,0.055X0.055*% %ADD080R,0.059X0.059*% %ADD081R,0.063X0.063*% %ADD082R,0.067X0.067*% %ADD083R,0.071X0.071*% %ADD084R,0.075X0.075*% %ADD085R,0.079X0.079*% %ADD086R,0.083X0.083*% %ADD087R,0.087X0.087*% %ADD088R,0.098X0.098*% %ADD089R,0.102X0.102*% %ADD090R,0.110X0.110*% %ADD091R,0.118X0.118*% %ADD092R,0.138X0.138*% %ADD093R,0.157X0.157*% %ADD094R,0.177X0.177*% %ADD095R,0.205X0.205*% %ADD096R,0.221X0.221*% %ADD097R,0.256X0.256*% %ADD098R,0.315X0.315*% %ADD099R,0.394X0.394*% %ADD090R,0.110X0.110*% %ADD100R,0.018X0.018*% %ADD101R,0.020X0.020*% %ADD110C,0.005*% %ADD120C,0.022*% %ADD125R,0.03260.326*% %ADD126R,0.362X0.362*% %ADD135C,0.095*% %ADD169C,0.237*% %ADD188R,0.095X0.095*% %ADD300C,0.019*% %ADD302R,0.019X0.019*% %ADD306C,0.032*% %ADD308R,0.032X0.032*% %ADD309C,0.041*% %ADD315C,0.045*% %ADD317R,0.045X0.045*% %ADD318C,0.090*% %ADD319C,0.090*% %ADD320R,0.090X0.090*% %ADD322C,0.094*% %ADD325C,0.114*% %ADD326R,0.114X0.114*% %ADD328C,0.122*% %ADD329R,0.122X0.122*% %ADD331C,0.126*% %ADD334C,0.130*% %ADD337C,0.142*% %ADD338R,0.142X0.142*% %ADD340C,0.161*% %ADD346C,0.209*% %ADD352C,0.241*% %ADD356C,0.260*% %ADD357C,0.350*% %ADD359R,0.350X0.350*% %ADD362R,0.354X0.354*% %ADD367C,0.014*% %ADD360C,0.354*% %ADD364C,0.012*% %ADD370C,0.016*% %ADD380R,0.219X0.219*% %ADD381C,0.036*% %ADD382C,0.036*% %ADD383R,0.036X0.036*% %ADD384C,0.009*% %ADD385C,0.009*% %ADD386R,0.009X0.009*% %ADD387C,0.040*% %ADD388C,0.040*% %ADD389R,0.040X0.040*% D012* X1200Y5462D02* X1500Y5162D01* X1800Y5462D01* X1500Y5762D01* X1200Y5462D01* X1075D02* X1925D01* X1850Y4937D02* X1500D01* Y4543D01* X1814Y4268D02* X2369D01* X2654Y4355D02* X3502D01* X3509Y5370D02* X3545D01* X3509Y5415D02* X3536D01* X3545Y5406D01* Y5370D01* Y5397D02* X3509D01* X3501Y5388D01* Y5379D01* X3509Y5370D01* X3429Y5343D02* Y5415D01* X3465D01* X3474Y5406D01* Y5379D01* X3465Y5370D01* X3429D01* X3412D02* Y5406D01* X3403Y5415D01* X3394D01* X3385Y5370D02* Y5406D01* X3394Y5415D02* X3385Y5406D01* X3376Y5415D01* X3367D01* X3358Y5406D01* Y5415D02* Y5370D01* X3269Y5432D02* X3261Y5441D01* X3225D01* X3216Y5432D01* Y5379D01* X3225Y5370D01* X3261D01* X3269Y5379D01* X3296Y5370D02* X3287Y5379D01* Y5406D01* X3296Y5415D01* X3323D01* X3332Y5406D01* Y5379D01* X3323Y5370D01* X3296D01* X3616Y5379D02* X3607Y5370D01* X3581D01* X3572Y5379D01* Y5406D01* X3581Y5415D01* X3607D01* X3616Y5406D01* X3643Y5415D02* X3678D01* X3661Y5441D02* Y5379D01* X3669Y5370D01* X3678D01* X3687Y5379D01* X3714Y5370D02* Y5441D01* X3758D01* X3767Y5432D01* Y5415D01* X3758Y5406D01* X3714D01* X3838Y5379D02* X3829Y5370D01* X3794D01* X3785Y5379D01* Y5432D01* X3794Y5441D01* X3829D01* X3838Y5432D01* X3856Y5441D02* X3909D01* X3883D02* Y5370D01* X3856D02* X3909D01* X4123Y5432D02* X4114Y5441D01* X4078D01* X4069Y5432D01* Y5379D01* X4078Y5370D01* X4114D01* X4123Y5379D01* X4194D02* X4185Y5370D01* X4149D01* X4141Y5379D01* Y5432D01* X4149Y5441D01* X4185D01* X4194Y5432D01* X4221Y5406D02* X4212Y5415D01* Y5432D01* X4221Y5441D01* X4256D01* X4265Y5432D01* Y5415D01* X4256Y5406D01* X4265Y5397D01* Y5379D01* X4256Y5370D01* X4221D01* X4212Y5379D01* Y5397D01* X4221Y5406D01* X4256D01* X4283D02* X4336D01* X4354D02* X4398D01* X4407Y5397D02* Y5379D01* X4398Y5370D01* X4354D01* Y5441D01* X4398D01* X4407Y5432D01* Y5415D01* X4398Y5406D01* X4407Y5397D01* X4425Y5441D02* Y5370D01* X4478D01* X4505D02* X4496Y5379D01* Y5441D01* X4505Y5370D02* X4541D01* X4549Y5379D01* Y5441D01* X4567D02* X4621D01* X4647D02* X4638Y5432D01* Y5415D01* X4603Y5406D02* X4567D01* Y5441D02* Y5370D01* X4621D01* X4638Y5379D02* X4647Y5370D01* X4683D01* X4692Y5379D01* Y5397D01* X4683Y5406D01* X4647D01* X4638Y5415D01* X4647Y5441D02* X4683D01* X4692Y5432D01* X4994Y5370D02* Y5441D01* X5038D01* X5047Y5432D01* Y5415D01* X5038Y5406D01* X4994D01* X5021D02* X5047Y5370D01* X5065Y5379D02* X5074Y5370D01* X5065Y5388D02* X5101D01* X5109Y5397D01* Y5370D02* X5074D01* X5065Y5379D02* Y5406D01* X5074Y5415D01* X5101D01* X5109Y5406D01* Y5397D01* X5136Y5415D02* X5163Y5370D01* X5189Y5415D01* X5234Y5388D02* X5243Y5379D01* X5234Y5370D01* X5225Y5379D01* X5234Y5388D01* X5287Y5370D02* X5278Y5379D01* Y5432D01* X5287Y5441D01* X5323D01* X5332Y5432D01* Y5379D01* X5323Y5370D01* X5287D01* X5278D02* X5332Y5441D01* X5563Y5406D02* X5616D01* X5791Y5370D02* X5845D01* X5862D02* Y5415D01* Y5406D02* X5871Y5415D01* X5898D01* X5907Y5406D01* Y5370D01* X5818D02* Y5441D01* X5845D02* X5791D01* X5934Y5370D02* Y5415D01* Y5406D02* X5942Y5415D01* X5969D01* X5978Y5406D01* Y5370D01* X6005Y5388D02* X6040D01* X6049Y5397D01* Y5406D01* X6040Y5415D01* X6014D01* X6005Y5406D01* Y5379D01* X6014Y5370D01* X6049D01* X6076D02* Y5415D01* Y5406D02* X6085Y5415D01* X6111D01* X6120Y5406D01* X6218Y5432D02* X6227Y5441D01* X6262D01* X6271Y5432D01* Y5415D01* X6262Y5406D01* X6218Y5379D01* Y5370D01* X6271D01* X6396D02* X6378Y5397D01* Y5415D01* X6396Y5441D01* X6431D02* Y5370D01* X6485D01* X6502Y5379D02* X6511Y5370D01* X6547D01* X6556Y5379D01* Y5397D01* X6538Y5406D01* X6520D01* X6502Y5432D02* X6511Y5441D01* X6547D01* X6556Y5432D01* Y5415D01* X6538Y5406D01* X6591Y5370D02* X6609Y5397D01* Y5415D01* X6591Y5441D01* X7449Y1000D02* X7740D01* X7799Y1059D01* Y1350D02* Y1197D01* Y1059D01* X7899Y1000D02* X8749D01* X8700D02* Y4937D01* X8750D02* X7900D01* X7799Y5037D02* Y5887D01* Y5762D02* X8099Y5462D01* X7799Y5162D01* X7499Y5462D01* X7799Y5262D02* X7999Y5462D01* X7799Y5662D01* X7599Y5462D01* X7799Y5262D01* X7449Y4937D02* X7740D01* X7799Y4878D01* Y4760D01* Y4587D01* X8324Y4737D02* X8124Y4937D01* X8324Y5137D01* X8524Y4937D01* X8324Y4737D01* Y4637D02* X8024Y4937D01* X8324Y5237D01* X8624Y4937D01* X8324Y4637D01* Y4512D02* Y5362D01* X8224Y5462D02* X7374D01* X7499D02* X7799Y5762D01* Y5850D02* X1500D01* Y5887D02* Y5037D01* Y4543D02* X1441D01* Y4465D01* Y1472D02* Y1394D01* X1500D01* Y1000D01* X1850D01* X1793Y894D02* X1784Y886D01* Y859D01* X1731Y850D02* X1749D01* X1740D02* Y921D01* X1731D01* X1651Y850D02* X1687D01* Y886D01* X1678Y894D01* X1651D01* X1616Y886D02* X1607Y894D01* X1580D01* X1571Y886D01* Y859D01* X1580Y850D01* X1607D01* X1616Y859D01* X1651Y850D02* X1642Y859D01* Y868D01* X1651Y877D01* X1687D01* X1793Y894D02* X1820D01* X1829Y886D01* Y877D01* X1820Y868D01* X1784D01* Y859D02* X1793Y850D01* X1829D01* X1544Y886D02* X1536Y894D01* X1509D01* X1500Y886D01* X1509Y877D01* X1536D01* X1544Y868D01* Y859D01* X1536Y850D01* X1509D01* X1500Y859D01* X1936Y877D02* X1980D01* X1936Y894D02* X1980D01* X2078Y903D02* X2096Y921D01* Y850D01* X2122D02* X2069D01* X2167Y868D02* X2176Y859D01* X2167Y850D01* X2158Y859D01* X2167Y868D01* X2211Y859D02* Y912D01* X2220Y921D01* X2256D01* X2264Y912D01* Y859D01* X2256Y850D01* X2220D01* X2211Y859D01* Y850D02* X2264Y921D01* X2336D02* X2282Y850D01* X2291D02* X2327D01* X2336Y859D01* Y912D01* X2327Y921D01* X2291D01* X2282Y912D01* Y859D01* X2291Y850D01* X8324Y900D02* X8424Y1000D01* X8324Y1100D01* X8224Y1000D01* X8324Y900D01* Y1200D02* X8124Y1000D01* X8324Y800D01* X8524Y1000D01* X8324Y1200D01* Y1300D02* X8024Y1000D01* X8324Y700D01* X8624Y1000D01* X8324Y1300D01* Y1425D02* Y575D01* D010* X7579Y823D02* X7620D01* X7644D02* X7740D01* Y904D01* Y832D02* Y904D01* Y928D02* Y1000D01* X7799Y1059D02* X7871D01* X7895D02* X7984D01* Y1134D01* X7895Y1059D02* X7967D01* X7895Y4878D02* X7988D01* Y4772D01* Y4782D02* Y4878D01* X7967D02* X7895D01* X7871D02* X7799D01* X7740Y4937D02* Y5009D01* Y5033D02* Y5071D01* X7692D01* X7668D02* X7597D01* X7668D02* X7575D01* D011* X2147Y5797D02* X2107D01* Y5744D01* X2133Y5771D02* X2107D01* X2093Y5797D02* X2067Y5777D01* X2053Y5771D01* X2093Y5744D02* X2067Y5777D01* X2053Y5797D02* Y5744D01* X2040D02* X2000D01* Y5771D02* X2027D01* X2040Y5797D02* X2000D01* Y5744D01* X2033Y5707D02* X2000D01* Y5654D01* Y5681D02* X2033D01* X2040Y5687D01* Y5701D01* X2033Y5707D01* X2053D02* Y5654D01* Y5681D02* X2060Y5687D01* X2080D01* X2087Y5681D01* Y5654D01* X2120D02* X2133D01* X2127D02* Y5687D01* X2120D01* X2127Y5694D02* Y5701D01* X2120D01* Y5694D01* X2127D01* X2173Y5707D02* X2180D01* Y5654D01* X2187D02* X2173D01* X2160Y5611D02* X2167Y5617D01* X2193D01* X2200Y5611D01* Y5597D02* X2193Y5591D01* X2167D01* X2160Y5597D01* Y5611D01* X2147Y5617D02* X2107D01* Y5597D01* X2093Y5591D02* X2053D01* X2033Y5611D02* X2027Y5617D01* X2000D01* Y5564D01* X2027D01* X2033Y5571D01* X2040Y5584D01* Y5597D01* X2033Y5611D01* X2140Y5384D02* X2107Y5417D01* X2140D02* X2107Y5384D01* X2087Y5404D02* X2060D01* X2053Y5397D01* Y5391D01* X2027Y5411D02* X2000D01* Y5437D02* Y5384D01* Y5437D02* X2040D01* X2060Y5417D02* X2080D01* X2087Y5411D01* Y5384D01* X2060D01* X2053Y5391D01* Y5481D02* Y5501D01* X2060Y5507D01* X2080D01* X2087Y5501D01* Y5494D01* X2080Y5487D01* X2053D01* X2000Y5527D02* X2040D01* X2020D02* Y5474D01* X2053Y5481D02* X2060Y5474D01* X2087D01* X2120D02* X2133D01* X2127D02* Y5527D01* X2120D01* X2107Y5571D02* X2113Y5564D01* X2140D01* X2147Y5571D01* Y5591D01* X2140Y5597D01* X2107D01* X2160Y5571D02* X2167Y5564D01* X2193D01* X2200Y5571D01* Y5611D01* X2247Y5617D02* X2220D01* X2213Y5611D01* Y5571D01* X2220Y5564D01* X2180Y5474D02* X2173Y5481D01* X2180Y5487D01* X2187Y5481D01* X2180Y5474D01* X2267D02* X2307Y5527D01* X2300D02* X2307Y5521D01* Y5481D01* X2300Y5474D01* X2273D01* X2267Y5481D01* Y5521D01* X2273Y5527D01* X2300D01* X2320Y5521D02* X2327Y5527D01* X2353D01* X2360Y5521D01* Y5507D01* X2353Y5501D01* X2320Y5481D01* Y5474D01* X2360D01* X2373Y5481D02* X2380Y5474D01* X2407D01* X2413Y5481D01* Y5494D01* X2400Y5501D01* X2387D01* X2400D02* X2413Y5507D01* Y5521D01* X2407Y5527D01* X2380D01* X2373Y5521D01* X2360Y5617D02* X2320D01* Y5597D01* X2353D01* X2360Y5591D01* Y5571D01* X2353Y5564D01* X2327D01* X2320Y5571D01* X2307Y5611D02* X2300Y5617D01* X2273D01* X2267Y5611D01* Y5571D01* X2273Y5564D01* X2300D01* X2307Y5571D01* Y5584D01* X2300Y5591D01* X2273D01* X2267Y5584D01* X2247Y5617D02* X2253Y5611D01* Y5571D01* X2247Y5564D01* X2220D01* X2213D02* X2253Y5617D01* X2267Y5634D02* Y5687D01* X2293D01* X2300Y5681D01* Y5661D01* X2293Y5654D01* X2267D01* X2227D02* X2240D01* X2233D02* Y5687D01* X2227D01* X2233Y5701D02* Y5694D01* X2227D01* Y5701D01* X2233D01* X2213Y5771D02* X2240D01* X2253Y5744D02* X2213D01* Y5797D01* X2253D01* X2280D02* X2287D01* Y5744D01* X2293D02* X2280D01* X2320Y5751D02* Y5771D01* X2327Y5777D01* X2347D01* X2353Y5771D01* Y5764D01* X2373Y5797D02* Y5744D01* Y5757D02* X2400Y5777D01* X2407Y5744D02* X2373Y5757D01* X2353Y5764D02* X2347Y5757D01* X2320D01* Y5751D02* X2327Y5744D01* X2353D01* X2347Y5687D02* X2353Y5681D01* Y5661D01* X2347Y5654D01* X2320D01* Y5634D02* Y5687D01* X2347D01* X2373Y5681D02* X2413D01* X2427D02* X2460D01* X2467Y5687D01* Y5701D01* X2460Y5707D01* X2427D01* Y5654D01* X2447Y5681D02* X2467Y5654D01* X2480Y5661D02* X2487Y5654D01* X2480Y5667D02* X2507D01* X2513Y5674D01* Y5681D01* X2507Y5687D01* X2487D01* X2480Y5681D01* Y5661D01* X2487Y5654D02* X2513D01* X2547D02* X2560D01* X2553D02* Y5687D01* X2547D01* Y5694D02* Y5701D01* X2553D01* Y5694D01* X2547D01* X2587Y5661D02* X2593Y5654D01* X2613D01* X2620Y5661D01* Y5667D01* X2613Y5674D01* X2593D01* X2587Y5681D01* X2593Y5687D01* X2613D01* X2620Y5681D01* X2640D02* X2680D01* X2693Y5687D02* Y5701D01* X2700Y5707D01* X2727D01* X2733Y5701D01* X2607Y5591D02* X2613Y5597D01* X2620D01* X2627Y5591D01* Y5564D01* X2607D02* Y5591D01* X2600Y5597D01* X2593D01* X2587Y5591D01* Y5597D02* Y5564D01* X2573D02* Y5591D01* X2567Y5597D01* X2560D01* X2553Y5564D02* Y5591D01* X2560Y5597D02* X2553Y5591D01* X2547Y5597D01* X2540D01* X2533Y5591D01* Y5597D02* Y5564D01* X2513Y5584D02* X2487D01* X2480Y5577D01* Y5571D02* X2487Y5564D01* X2513D01* Y5591D01* X2507Y5597D01* X2487D01* X2467Y5617D02* Y5564D01* X2480Y5571D02* Y5577D01* X2467Y5591D02* X2427D01* Y5617D02* Y5564D01* X2433Y5501D02* X2427Y5494D01* Y5481D01* X2433Y5474D01* X2460D01* X2467Y5481D01* Y5494D01* X2460Y5501D01* X2433D01* X2427Y5507D01* Y5521D01* X2433Y5527D01* X2460D01* X2467Y5521D01* Y5507D01* X2460Y5501D01* X2487Y5514D02* X2500Y5527D01* Y5474D01* X2480D02* X2520D01* X2533D02* X2573Y5527D01* X2587Y5494D02* X2593Y5501D01* X2620D01* X2627Y5494D01* Y5481D01* X2620Y5474D01* X2593D01* X2587Y5481D01* Y5521D01* X2593Y5527D01* X2620D01* X2627Y5521D01* X2647Y5501D02* X2640Y5494D01* Y5481D01* X2647Y5474D01* X2673D01* X2680Y5481D01* Y5494D01* X2673Y5501D01* X2680Y5507D01* Y5521D01* X2673Y5527D01* X2647D01* X2640Y5521D01* Y5507D01* X2647Y5501D01* X2673D01* X2693Y5481D02* X2700Y5474D01* X2727D01* X2733Y5481D01* Y5521D01* X2727Y5527D01* X2700D01* X2693Y5521D01* Y5507D01* X2700Y5501D01* X2727D01* X2733Y5507D01* X2747Y5474D02* X2787Y5527D01* Y5521D02* Y5481D01* X2780Y5474D01* X2753D01* X2747Y5481D01* Y5521D01* X2753Y5527D01* X2780D01* X2787Y5521D01* X2800Y5501D02* X2840D01* X2853Y5481D02* Y5521D01* X2860Y5527D01* X2887D01* X2993Y5654D02* Y5707D01* X3000Y5681D02* X2960D01* Y5707D01* Y5744D02* Y5797D01* Y5771D02* X3000D01* Y5797D02* Y5744D01* X2893D02* Y5771D01* X2887Y5777D01* X2907D02* X2933D01* X2940Y5771D01* Y5751D01* X2933Y5744D01* X2907D01* Y5797D01* X2887Y5777D02* X2880D01* X2873Y5771D01* X2867Y5777D02* X2860D01* X2853D02* Y5744D01* X2873D02* Y5771D01* X2867Y5777D01* X2860D02* X2853Y5771D01* X2840Y5791D02* X2833Y5797D01* X2807D01* X2800Y5791D01* Y5751D01* X2807Y5744D01* X2833D01* X2840Y5751D01* Y5764D01* X2827D01* X2873Y5667D02* X2867Y5661D01* X2873Y5654D01* X2880Y5661D01* X2873Y5667D01* X2833Y5681D02* X2827Y5687D01* X2807D01* X2800Y5681D01* Y5687D02* Y5654D01* X2780Y5661D02* X2773Y5654D01* X2767D01* X2760Y5661D01* Y5707D01* X2773Y5687D02* X2747D01* X2727Y5681D02* X2733Y5674D01* Y5661D01* X2727Y5654D01* X2693Y5661D02* X2700Y5654D01* X2727D01* Y5681D02* X2700D01* X2693Y5687D01* Y5757D02* X2727Y5744D01* X2720Y5777D02* X2693Y5757D01* Y5744D02* Y5797D01* X2660Y5784D02* Y5791D01* X2653D01* Y5784D01* X2660D01* X2653Y5777D02* X2660D01* Y5744D01* X2667D02* X2653D01* X2620D02* Y5771D01* X2613Y5777D01* X2593D02* X2587Y5771D01* Y5744D02* Y5777D01* X2593D02* X2613D01* X2560D02* X2540D01* X2533Y5771D01* Y5751D01* X2540Y5744D01* X2560D01* X2567Y5751D01* Y5771D01* X2560Y5777D01* X2513Y5771D02* X2507Y5777D01* X2487D01* X2480Y5771D01* Y5777D02* Y5744D01* X2460Y5751D02* X2453Y5744D01* X2447D01* X2440Y5751D01* Y5797D01* X2427Y5777D02* X2453D01* X2853Y5391D02* X2860Y5384D01* X2887D01* X2893Y5391D01* Y5431D01* X2887Y5437D01* X2860D01* X2853Y5431D01* Y5417D01* Y5474D02* X2893Y5527D01* X2887D02* X2893Y5521D01* Y5481D01* X2887Y5474D01* X2860D01* X2853Y5481D01* X2947Y5437D02* X2907Y5384D01* Y5391D02* X2913Y5384D01* X2940D01* X2947Y5391D01* Y5431D01* X2940Y5437D01* X2913D01* X2907Y5431D01* Y5391D01* X2893Y5417D02* X2887Y5411D01* X2860D01* X2853Y5417D01* X2840Y5411D02* X2800D01* X2787Y5431D02* X2780Y5437D01* X2753D01* X2747Y5431D01* Y5391D01* X2753Y5384D01* X2780D01* X2787Y5391D01* Y5431D01* Y5437D02* X2747Y5384D01* X2733Y5417D02* X2727Y5411D01* X2700D01* X2693Y5417D01* Y5431D01* X2700Y5437D01* X2727D01* X2733Y5431D01* Y5391D01* X2727Y5384D01* X2700D01* X2693Y5391D01* X2673Y5411D02* X2680Y5417D01* Y5431D01* X2673Y5437D01* X2647D01* X2640Y5431D01* Y5417D01* X2647Y5411D01* X2673D01* X2680Y5404D01* Y5391D01* X2673Y5384D01* X2647D01* X2640Y5391D01* Y5404D01* X2647Y5411D01* X2627Y5431D02* X2620Y5437D01* X2593D01* X2587Y5431D01* Y5391D01* X2593Y5384D01* X2620D01* X2627Y5391D01* Y5404D01* X2620Y5411D01* X2593D01* X2587Y5404D01* X2573Y5437D02* X2533Y5384D01* X2520D02* X2480D01* X2500D02* Y5437D01* X2487Y5424D01* X2460Y5411D02* X2467Y5417D01* Y5431D01* X2460Y5437D01* X2433D01* X2427Y5431D01* Y5417D01* X2433Y5411D01* X2427Y5404D01* Y5391D01* X2433Y5384D01* X2460D01* X2467Y5391D01* Y5404D01* X2460Y5411D01* X2433D01* X2373Y5431D02* X2380Y5437D01* X2407D01* X2413Y5431D01* Y5417D01* X2400Y5411D01* X2387D02* X2400D01* X2413Y5404D01* Y5391D01* X2407Y5384D01* X2380D01* X2373Y5391D01* X2360Y5384D02* X2320D01* Y5391D01* X2353Y5411D01* X2360Y5417D01* Y5431D01* X2353Y5437D01* X2327D01* X2320Y5431D01* X2300Y5437D02* X2273D01* X2267Y5431D01* Y5391D01* X2273Y5384D01* X2300D01* X2307Y5391D01* Y5431D01* X2300Y5437D01* X2307D02* X2267Y5384D01* X2247Y5231D02* X2240Y5237D01* X2220D01* X2213D02* Y5204D01* X2193D02* X2167D01* X2160Y5211D01* Y5231D01* X2167Y5237D01* X2187D01* X2193Y5231D01* X2220Y5237D02* X2213Y5231D01* X2193D02* Y5224D01* X2187Y5217D01* X2160D01* X2133Y5237D02* X2107D01* X2120Y5257D02* Y5211D01* X2140D02* X2133Y5204D01* X2127D01* X2120Y5211D01* X2087Y5204D02* Y5231D01* X2080Y5237D01* X2060D01* X2053Y5231D01* Y5237D02* Y5204D01* X2040D02* X2000D01* X2020D02* Y5257D01* X2040D02* X2000D01* Y5127D02* X2027D01* X2033Y5134D01* Y5141D01* X2027Y5147D01* X2007D01* X2000Y5141D01* Y5121D01* X2007Y5114D01* X2033D01* X2053D02* Y5147D01* Y5141D02* X2060Y5147D01* X2067D01* X2073Y5141D01* X2080Y5147D01* X2073Y5141D02* Y5114D01* X2080Y5147D02* X2087D01* X2093Y5141D01* Y5114D01* X2107Y5127D02* X2113Y5134D01* X2140D01* X2113Y5147D02* X2133D01* X2140Y5141D01* Y5114D01* X2113D01* X2107Y5121D01* Y5127D01* X2173Y5114D02* X2187D01* X2180D02* Y5147D01* X2173D01* X2180Y5161D02* Y5154D01* X2173D01* Y5161D01* X2180D01* X2227Y5167D02* X2233D01* Y5114D01* X2240D02* X2227D01* X2287Y5127D02* X2293Y5121D01* X2287Y5114D01* X2280Y5121D01* X2287Y5127D01* Y5141D02* X2280Y5147D01* X2287Y5154D01* X2293Y5147D01* X2287Y5141D01* X2267Y5204D02* Y5237D01* Y5231D02* X2273Y5237D01* X2293D01* X2300Y5231D01* Y5204D01* X2320Y5217D02* X2347D01* X2353Y5224D01* Y5231D01* X2347Y5237D01* X2327D01* X2320Y5231D01* Y5211D01* X2327Y5204D01* X2353D01* X2400Y5237D02* X2373D01* X2387Y5257D02* Y5211D01* X2393Y5204D01* X2400D01* X2407Y5211D01* X2447Y5204D02* X2453Y5211D01* X2447Y5217D01* X2440Y5211D01* X2447Y5204D01* Y5244D02* X2440Y5237D01* X2447Y5231D01* X2453Y5237D01* X2447Y5244D01* X2700Y5147D02* X2693Y5141D01* Y5121D01* X2700Y5114D01* X2720D01* X2727Y5121D01* Y5141D01* X2720Y5147D01* X2700D01* X2673Y5167D02* X2653D01* X2647Y5161D01* X2660Y5141D02* X2640D01* X2647Y5161D02* Y5114D01* X2620D02* Y5141D01* X2613Y5147D01* X2593D01* X2587Y5141D01* Y5147D02* Y5114D01* X2547D02* X2560D01* X2553D02* Y5147D01* X2547D01* Y5161D02* X2553D01* Y5154D01* X2547D01* Y5161D01* X2533Y5237D02* Y5224D01* X2547Y5204D01* X2553Y5211D01* Y5224D01* Y5211D02* X2560Y5204D01* X2573Y5224D01* Y5237D01* X2587D02* Y5224D01* X2600Y5204D01* X2607Y5211D01* X2613Y5204D01* X2607Y5211D02* Y5224D01* X2613Y5204D02* X2627Y5224D01* Y5237D01* X2640D02* Y5224D01* X2653Y5204D01* X2660Y5211D01* Y5224D01* Y5211D02* X2667Y5204D01* X2680Y5224D01* Y5237D01* X2713Y5217D02* X2720Y5211D01* X2713Y5204D01* X2707Y5211D01* X2713Y5217D01* X2747D02* X2773D01* X2780Y5224D01* Y5231D01* X2773Y5237D01* X2753D01* X2747Y5231D01* Y5211D01* X2753Y5204D01* X2780D01* Y5147D02* X2767D01* Y5134D01* X2780D01* Y5154D01* X2773Y5161D01* X2760D01* X2753Y5154D01* Y5127D01* X2760Y5121D01* X2773D01* X2800Y5127D02* X2827D01* X2833Y5134D01* Y5141D01* X2827Y5147D01* X2807D01* X2800Y5141D01* Y5121D01* X2807Y5114D01* X2833D01* X2853D02* Y5167D01* X2880Y5147D02* X2853Y5127D01* X2887Y5114D01* X2913D02* Y5161D01* X2907Y5141D02* X2927D01* X2913Y5161D02* X2920Y5167D01* X2940D01* X2927Y5217D02* X2933Y5211D01* X2927Y5204D01* X2920Y5211D01* X2927Y5217D01* X2887Y5257D02* X2867D01* X2860Y5251D01* X2873Y5231D02* X2853D01* X2860Y5251D02* Y5204D01* X2833D02* X2800Y5217D01* X2827Y5237D02* X2800Y5217D01* Y5204D02* Y5257D01* X2993D02* Y5204D01* X2967D01* X2960Y5211D01* Y5231D01* X2967Y5237D01* X2993D01* X3013Y5217D02* X3040D01* X3047Y5224D01* Y5231D01* X3040Y5237D01* X3020D01* X3013Y5231D01* Y5211D01* X3020Y5204D01* X3047D01* Y5167D02* Y5114D01* X3020D01* X3013Y5121D01* Y5141D01* X3020Y5147D01* X3047D01* X2980Y5127D02* X2973Y5121D01* X2980Y5114D01* X2987Y5121D01* X2980Y5127D01* X3067D02* X3093D01* X3100Y5134D01* Y5141D01* X3093Y5147D01* X3073D01* X3067Y5141D01* Y5121D01* X3073Y5114D01* X3100D01* X3146Y3286D02* X3134Y3274D01* Y3226D01* X3086Y3178D01* X3073Y3167D02* Y3182D01* X3092Y3201D01* Y3220D01* X2994Y3248D02* X3123Y3377D01* X3156D01* X3194Y3415D01* X3369D01* X3382Y3407D02* X3406D01* X3421Y3422D01* X3396Y3442D02* X3369Y3415D01* X3382Y3407D02* X3362Y3387D01* X3350D01* X3441Y3344D02* X3415Y3318D01* X3124D01* X2977Y3171D01* Y3148D01* X2953Y3176D02* X3114Y3337D01* Y3343D01* X3136Y3365D01* X3426D01* X3447Y3386D01* X3446D01* X3442Y3442D02* Y3449D01* X3419Y3472D01* X3421Y3422D02* Y3453D01* X3409Y3465D01* X3281D01* X3259Y3443D01* X3197D01* X3146Y3392D01* X3094D01* X3009Y3307D01* X2984D01* X2912Y3235D01* Y3181D01* X2765Y3034D01* X2753Y3048D02* X2660D01* X2644Y3064D01* Y3099D01* X2629Y3114D01* X2765Y3034D02* X2617D01* X2591Y3060D01* Y3110D01* X2566Y3135D01* Y3172D01* X2547Y3191D01* X2512Y3188D02* X2536Y3212D01* X2571D01* X2589Y3194D01* X2512Y3188D02* X2473D01* X2437Y3152D01* Y3042D01* X2498Y2981D01* X2549D01* X2574Y2956D01* X2785D01* X2977Y3148D01* X2953Y3176D02* Y3159D01* X2794Y3000D01* X2520D01* X2489Y3031D01* Y3062D01* X2449Y3102D01* Y3132D01* X2471Y3154D01* X2470Y3114D02* X2501Y3083D01* Y3044D01* X2527Y3018D01* X2774D01* X2928Y3172D01* Y3214D01* X2962Y3248D01* X2994D01* X3061Y3219D02* Y3184D01* X2677Y2800D01* Y2617D01* X2729Y2565D01* Y1860D01* X2744Y1847D02* Y2577D01* X2720Y2601D01* Y2814D01* X3073Y3167D01* X3086Y3178D02* Y3148D01* X3007Y3069D01* Y3026D01* X2984Y3003D01* X2940D01* X2735Y2798D01* Y2616D01* X2760Y2591D01* Y2043D01* X2771Y2032D01* X2873Y1983D02* X2898Y2008D01* Y2206D01* X2848Y2256D01* Y2668D01* X2900Y2720D01* Y2809D01* X2875Y2834D01* X2829Y2859D02* X2851Y2837D01* Y2744D01* X2802Y2695D01* Y2598D01* X2822Y2578D01* Y2236D01* X2850Y2208D01* Y2011D01* X2821Y1982D01* X2770Y1980D02* X2797Y2007D01* Y2565D01* X2784Y2578D01* Y2704D01* X2825Y2745D01* Y2784D01* X2925Y2735D02* Y2721D01* X2896Y2692D01* Y2591D01* X2878Y2573D01* Y2318D01* X2944Y2252D01* Y2008D01* X2923Y1987D01* X2977Y1986D02* X2998Y2007D01* Y2230D01* X2900Y2328D01* Y2536D01* X2908Y2544D01* Y2668D01* X2922Y2682D01* X3020Y2636D02* Y2588D01* X3004Y2572D01* Y2424D01* X3062Y2366D01* X3088D01* X3115Y2339D01* X3241D01* X3259Y2321D01* X3503D01* X3542Y2282D01* X3849D01* X3881Y2314D01* X4708D01* X4732Y2338D01* Y2377D01* X4780Y2425D01* X4799D01* X5068Y2694D01* X5345D01* X5476Y2825D01* Y2854D01* X5451Y2879D01* Y2914D01* X5470Y2933D01* Y2961D01* X5450Y2981D01* Y3014D01* X5471Y3035D01* Y3060D01* X5446Y3085D01* Y3129D01* X5606Y3289D01* Y4111D01* X5698Y4203D01* Y4259D01* X5871Y4432D01* Y4460D01* X5799Y4532D01* Y4559D01* X5835Y4595D01* Y4644D01* X5935D02* Y4598D01* X6024Y4509D01* Y4484D01* X5998Y4458D01* Y4430D01* X5969Y4464D02* X5935Y4498D01* Y4544D01* X5969Y4464D02* Y4428D01* X5946Y4405D01* Y4321D01* X5720Y4095D01* Y3296D01* X5544Y3120D01* Y3084D01* X5570Y3058D01* Y3030D01* X5519Y3013D02* X5499Y3033D01* Y3061D01* X5525Y3087D01* Y3171D01* X5697Y3343D01* Y4106D01* X5920Y4329D01* Y4413D01* X4940Y4739D02* X4545D01* X4038Y4232D01* Y4110D01* X4058Y4090D01* Y3890D01* X4060Y3888D01* Y3284D01* X4001Y3225D01* X3982D01* X3890Y3133D01* X3851D01* X3802Y3084D01* X3420D01* X3416Y3080D01* X3275D01* X3202Y3007D01* Y2890D01* X3234Y2858D01* Y2836D01* X3298Y2772D01* Y2658D01* X3279Y2639D02* X3298Y2658D01* X3276Y2684D02* X3256Y2704D01* Y2775D01* X3209Y2822D01* X3192D01* X3166Y2848D01* Y3024D01* X3258Y3116D01* X3381D01* X3385Y3120D01* X3725D01* X3818Y3213D01* X3873D01* X3956Y3296D01* Y3353D01* X3972Y3369D01* X3941Y3401D02* X3916Y3376D01* Y3330D01* X3862Y3276D01* X3841D01* X3734Y3169D01* X3631D01* X3624Y3176D01* X3592D01* X3565Y3149D01* X3409D01* X3385Y3173D01* X3281D01* X3142Y3034D01* Y2826D01* X3229Y2739D01* Y2682D01* X3277Y2733D02* Y2773D01* X3219Y2831D01* Y2856D01* X3190Y2885D01* Y3012D01* X3270Y3092D01* X3405D01* X3409Y3096D01* X3794D01* X3844Y3146D01* X3885D01* X3898Y3159D01* Y3189D01* X4046Y3337D01* Y3869D01* X4016Y3899D01* Y4236D01* X4531Y4751D01* X4519Y4764D02* X4001Y4246D01* Y3886D01* X4031Y3856D01* Y3381D01* X4001Y3351D01* X3990D01* X3973Y3334D01* Y3289D01* X3874Y3190D01* X3816D01* X3734Y3108D01* X3394D01* X3390Y3104D01* X3265D01* X3178Y3017D01* Y2866D01* X3192Y2852D01* X3235Y2905D02* X3231Y2909D01* Y2982D01* X3255Y3006D01* X3282D01* X3300Y3024D01* Y3042D01* X3314Y3056D01* X3434D01* X3438Y3060D01* X3818D01* X3832Y3074D01* X3941D01* X3961Y3094D01* Y3130D01* X3986Y3155D01* X3993D01* X4050Y3212D01* Y3226D01* X4089Y3265D01* Y4057D01* X4087Y4059D01* Y4104D01* X4102Y4119D01* Y4243D01* X4536Y4677D01* X4590D01* X4628Y4715D01* X4854D01* X4890Y4679D01* X4956D01* X4969Y4666D01* Y4630D01* X4951Y4612D01* X4935Y4598D02* Y4544D01* X4655Y4579D02* X4621D01* X4591Y4549D01* Y4532D01* X4443Y4384D01* Y3892D01* X4393Y3842D01* X4333D01* X4245Y3754D01* Y3211D01* X4219Y3185D01* Y3087D01* X4087Y2955D01* X3807D01* X3767Y2915D01* X3607D01* X3582Y2940D01* X3358D01* X3346Y2928D01* Y2909D01* X3360Y2895D01* Y2847D01* X3394Y2886D02* X3412Y2904D01* X3564D01* X3599Y2869D01* X4112D01* X4166Y2923D01* Y2942D01* X4333Y3109D01* Y3227D01* X4358Y3252D01* Y3392D01* X4333Y3417D01* Y3582D01* X4362Y3611D01* Y3694D01* X4484Y3816D01* Y4342D01* X4623Y4481D01* X4701Y4428D02* X4667D01* X4644Y4405D01* X4629D01* X4512Y4288D01* Y3797D01* X4422Y3707D01* Y3072D01* X4351Y3001D01* X4308D01* X4149Y2842D01* X3592D01* X3554Y2880D01* X3435D01* X3405Y2850D01* Y2811D01* X3475Y2741D01* X3525Y2697D02* X3497Y2725D01* X3530Y2737D02* X3509Y2758D01* Y2792D01* X3523Y2806D01* X3542D01* X3592Y2756D01* X3695D01* X3784Y2667D01* X4194D01* X4264Y2737D01* X4359D01* X4517Y2895D01* Y3691D01* X4577Y3751D01* Y3874D01* X4604Y3901D01* Y4213D01* X4635Y4244D01* X4735Y4144D02* X4787D01* X4825Y4106D01* X4885Y4194D02* X4836D01* X4699Y4331D01* X4677Y4354D02* X4725D01* X4735Y4344D01* X4699Y4331D02* X4674D01* X4644Y4301D01* X4617D01* X4580Y4264D01* Y3944D01* X4550Y3914D01* Y3768D01* X4479Y3697D01* Y3009D01* X4197Y2727D01* X3869D01* X3805Y2791D01* X3591D01* X3552Y2830D01* X3478D01* X3476Y2828D01* X3531Y2784D02* X3687Y2628D01* X4331D01* X4580Y2877D01* Y3644D01* X4589Y3653D01* X4568Y3669D02* X4535Y3636D01* Y2882D01* X4371Y2718D01* X4275D01* X4205Y2648D01* X3759D01* X3674Y2733D01* X3615Y2558D02* X3596Y2577D01* X3412D01* X3383Y2548D01* X3308D01* X3196Y2660D01* Y2736D01* X3103Y2829D01* Y2845D01* X3121Y2869D02* X3130Y2860D01* Y2819D01* X3208Y2741D01* Y2669D01* X3312Y2565D01* X3379D01* X3437Y2623D01* X3491D01* X3521Y2593D01* X3598D01* X3619Y2572D01* X3643D01* X3658Y2587D01* X4394D01* X4622Y2815D01* Y2882D01* X4932Y3192D01* Y4192D01* X5235Y4495D01* Y4544D01* X5224Y4585D02* X5185Y4546D01* Y4494D01* X5085D02* Y4546D01* X5121Y4582D01* X5135Y4544D02* Y4596D01* X5172Y4633D01* Y4661D01* X5045Y4788D01* X4495D01* X3971Y4264D01* Y3869D01* X4001Y3839D01* Y3650D01* X3974Y3623D01* X3920Y3598D02* Y3633D01* X3934Y3647D01* Y3672D01* X3903Y3703D01* Y3834D01* X3943Y3874D01* Y3960D01* X3941Y3962D01* Y4285D01* X4469Y4813D01* X5066D01* X5235Y4644D01* X5248Y4610D02* Y4582D01* X5285Y4545D01* Y4494D01* X5385D02* X5367Y4476D01* Y4425D01* X5385Y4394D02* Y4447D01* X5421Y4483D01* Y4509D01* X5401Y4529D01* Y4562D01* X5335Y4544D02* Y4596D01* X5296Y4635D01* Y4707D01* X5164Y4839D01* X4442D01* X3911Y4308D01* Y4001D01* X3857Y3947D01* Y3914D01* X3871Y3900D01* Y3640D01* X3866Y3635D01* Y3393D01* X3876Y3383D01* Y3356D01* X3855Y3335D01* X3826D01* X3744Y3253D01* X3576D01* X3549Y3226D01* X3279D01* X3132Y3079D01* X3096D01* X3074Y3057D01* Y2881D01* X3082Y2873D01* Y2819D01* X3175Y2726D01* X3219Y2782D02* X3218Y2783D01* X3214D01* X3154Y2843D01* Y3029D01* X3272Y3147D01* X3343D01* X3357Y3161D01* X3379D01* X3408Y3132D01* X3718D01* X3843Y3257D01* X3870D01* X3935Y3322D01* Y3364D01* X3957Y3386D01* Y3518D01* X3931Y3544D01* Y3565D01* X3974Y3608D01* Y3623D01* X3878Y3622D02* Y3398D01* X3888Y3388D01* Y3349D01* X3854Y3315D01* X3830D01* X3748Y3233D01* X3626D01* X3603Y3210D01* X3556D01* X3530Y3184D01* X3409D01* X3387Y3206D01* X3278D01* X3139Y3067D01* X3109D01* X3098Y3056D01* Y3029D01* X3053Y3031D02* Y3053D01* X3135Y3135D01* Y3145D01* X3149Y3159D01* X3194D01* X3277Y3242D01* X3527D01* X3550Y3265D01* X3705D01* X3722Y3282D01* Y3294D01* X3735Y3307D01* X3775D01* X3830Y3362D01* Y3376D01* X3854Y3400D01* X3698Y3396D02* Y3393D01* X3697D01* X3682Y3408D01* X3632D01* X3613Y3427D01* Y3509D01* X3601Y3521D01* X3535D01* X3514Y3482D02* X3533Y3463D01* X3556D01* X3569Y3450D02* X3556Y3463D01* X3545Y3440D02* X3527D01* X3569Y3450D02* Y3421D01* X3581Y3409D01* X3607D01* X3629Y3387D01* X3643D01* X3545Y3386D02* X3512Y3419D01* X3479D01* X3468Y3430D01* Y3493D01* X3419Y3542D01* X3267D01* X3245Y3520D01* X3102D01* X3076Y3494D01* Y3484D01* X3062Y3470D01* X3041D01* X3030Y3459D01* Y3431D01* X3011Y3412D01* X2988D01* X2805Y3229D01* X2786Y3158D02* X2811D01* X2853Y3200D01* Y3226D01* X3049Y3422D01* X3100D01* X3116Y3438D01* Y3470D01* X3127Y3481D01* Y3497D01* X3138Y3508D01* X3256D01* X3276Y3528D01* X3415D01* X3440Y3503D01* Y3484D01* X3419Y3472D02* Y3494D01* X3402Y3511D01* X3286D01* X3271Y3496D01* Y3479D01* X3256Y3464D01* X3196D01* X3139Y3407D01* X3060D01* X2896Y3243D01* Y3191D01* X2753Y3048D01* X2745Y3074D02* X2707Y3112D01* Y3223D01* X2682Y3248D01* X2544D01* X2535Y3257D01* X2502D01* X2493Y3248D01* Y3214D01* X2480Y3201D01* X2464D01* X2424Y3161D01* Y3093D01* X2395Y3064D01* X2376D01* X2440Y2658D02* Y2717D01* X2337Y2820D01* Y2947D01* X2269Y3015D01* Y3068D01* X2213Y3124D01* Y3539D01* X2288Y3614D01* X2408D01* X2430Y3636D01* Y3645D01* X2444Y3659D01* X2468D01* X2479Y3648D01* X2568D01* X2602Y3614D01* X2627D01* X2706Y3693D01* Y3773D01* X2697Y3797D02* X2674Y3774D01* Y3743D01* X2638Y3770D02* Y3707D01* X2605Y3674D01* X2488D01* X2479Y3683D01* X2268D01* X2189Y3604D01* Y3110D01* X2245Y3054D01* Y2982D01* X2237Y2974D01* Y2953D01* X2296Y2894D01* Y2791D01* X2381Y2706D01* Y2668D01* X2401Y2648D01* X2429Y2461D02* X2418D01* X2407Y2472D01* Y2478D01* X2441Y2503D02* X2462Y2482D01* X2481D01* X2494Y2639D02* X2465Y2668D01* X2461Y2637D02* X2440Y2658D01* X2465Y2668D02* Y2723D01* X2457Y2762D02* X2496D01* X2600Y2658D01* X2599Y2694D02* X2528Y2765D01* Y2799D01* X2491Y2836D01* X2427D01* X2390Y2873D01* Y2956D01* X2321Y3025D01* Y3073D01* X2249Y3145D01* Y3170D01* X2255Y3176D01* Y3472D01* X2276Y3493D01* X2288D01* X2361Y3566D01* X2327Y3553D02* X2312D01* X2237Y3478D01* Y3137D01* X2293Y3081D01* Y3035D01* X2372Y2956D01* Y2847D01* X2457Y2762D01* X2465Y2723D02* X2354Y2834D01* Y2952D01* X2281Y3025D01* Y3075D01* X2225Y3131D01* Y3533D01* X2292Y3600D01* X2489D01* X2484Y3714D02* X2244D01* X2164Y3634D01* Y2967D01* X2226Y2905D01* Y2881D01* X2257Y2850D01* Y2756D01* X2315Y2698D01* Y2668D01* X2337Y2646D01* X2352D01* X2378Y2620D01* Y2606D01* X2396Y2588D01* X2455Y2593D02* Y2594D01* X2437Y2612D01* X2424D01* X2401Y2648D02* Y2635D01* X2424Y2612D01* X2427Y2639D02* X2397Y2669D01* Y2725D01* X2317Y2805D01* Y2943D01* X2257Y3003D01* Y3060D01* X2201Y3116D01* Y3591D01* X2272Y3662D01* X2419D01* X2428Y3671D01* X2474D01* X2483Y3662D01* X2571D01* X2603Y3630D01* X2624D01* X2674Y3680D01* Y3743D01* X2480Y3485D02* X2424D01* X2412Y3473D01* Y3101D01* X2396Y3085D01* X2366D01* X2355Y3074D01* Y3055D01* X2376Y3034D01* X2422D01* X2508Y2948D01* X2552D01* X2643Y2857D01* Y2432D01* X2604Y2393D01* X2601Y2427D02* X2625Y2451D01* Y2719D01* X2545Y2799D01* Y2873D01* X2527Y2891D01* Y2906D01* X2501Y2932D01* X2459D01* X2419Y2972D01* Y2991D01* X2403Y3007D01* X2380D01* X2333Y3054D01* Y3513D01* X2349Y3529D01* X2450D01* X2472Y3507D01* X2480Y3485D02* X2512Y3517D01* Y3547D01* X2490Y3580D02* X2528Y3618D01* X2562D01* X2601Y3579D01* X2687D01* X2764Y3656D01* Y3721D01* X2799Y3686D01* X2918D01* X2939Y3707D01* X3135D01* X3194Y3648D01* X3291D01* X3289Y3673D02* X3318Y3644D01* X3502D01* X3542Y3622D02* X3467Y3697D01* X3261D01* X3190Y3768D01* X2946D01* X2890Y3712D01* X2822D01* X2737Y3797D01* X2697D01* X2828Y3724D02* X2738Y3814D01* X2682D01* X2638Y3770D01* X2615Y3742D02* X2609D01* X2553Y3686D01* X2493D01* X2480Y3699D01* X2256D01* X2177Y3620D01* Y3056D01* X2211Y3022D01* Y2946D01* X2238Y2919D01* Y2887D01* X2277Y2848D01* Y2776D01* X2327Y2726D01* Y2673D01* X2342Y2658D01* X2359D01* X2425Y2592D01* Y2549D01* X2444Y2530D01* X2441Y2503D02* X2427D01* X2391Y2539D01* X2381D01* X2303Y2617D01* Y2669D01* X2206Y2766D01* Y2848D01* X2181Y2873D01* Y2922D01* X2152Y2951D01* Y3024D01* X2142Y3034D01* Y3322D01* X2152Y3332D01* Y3651D01* X2230Y3729D01* X2273Y3962D02* Y3932D01* X2293Y3912D01* X2455D01* X2516Y3973D01* X2669D01* X2763Y4067D01* X3061D01* X3107Y4021D01* Y4064D02* X3523D01* X3547Y4040D01* X3546Y3997D02* X3522Y4021D01* X3506Y3991D02* X3093D01* X3066Y4018D01* X2870D01* X2790Y3938D01* X2525D01* X2532Y3776D02* X2511Y3755D01* X2481Y3776D02* X2198D01* X2215Y3742D02* X2140Y3667D01* Y3350D01* X2123Y3333D01* Y3035D01* X2108Y3020D01* Y2961D01* X2154Y2915D01* Y2743D01* X2385Y2512D01* X2398D01* X2428Y2482D01* X2429Y2461D02* X2449Y2441D01* X2478Y2422D02* X2480Y2420D01* X2431D01* X2407Y2444D01* X2378D01* X2356Y2466D01* Y2496D01* X2081Y2771D01* Y3659D01* X2198Y3776D01* X1984Y3825D02* X2066Y3743D01* Y3059D01* X2060Y3053D01* Y2662D01* X2153Y2569D01* Y2345D01* X2248Y2250D01* Y2162D01* X2304Y2106D01* Y2057D01* X2475Y1886D01* Y1816D01* X2563Y1728D01* Y1625D01* X2680Y1592D02* X2618Y1530D01* Y1435D01* X2471Y1412D02* X2603Y1544D01* Y2314D01* X2676Y2387D01* X2693D01* X3381Y1789D02* X3360Y1810D01* X3320D01* X3312Y1805D01* X3311Y1796D01* X3319Y1790D01* X3320D01* X3350D01* X3381Y1759D01* Y1687D01* X3453Y1615D01* Y1578D01* X3491Y1540D01* X3560D01* X3561D01* X3569Y1534D01* X3568Y1525D01* X3560Y1520D01* X3500D01* X3492Y1515D01* X3491Y1506D01* X3499Y1500D01* X3500D02* X3531D01* X3731Y1300D01* X3802D01* X3867Y1235D01* X4105Y1316D02* Y1381D01* X4008Y1478D01* Y1759D01* X3987Y1781D02* Y1401D01* X4151Y1237D01* X4160Y1213D02* X4079D01* X3940Y1352D01* Y1588D01* X3722Y1806D01* Y1966D01* X3750Y1994D01* X3767D01* X3770Y1940D02* X3793Y1917D01* X3886D01* X3896Y1907D01* X4013D01* X4102Y1818D01* Y1564D01* X4136Y1530D01* X4237D01* X4241Y1510D02* X4130D01* X4083Y1557D01* X4136Y1560D02* X4147Y1571D01* Y1803D01* X4168Y1812D02* Y1561D01* X4199D02* Y1811D01* X4030Y1980D01* X3885D01* X3872Y1993D01* X3812Y1961D02* X3761D01* X3749Y1949D01* Y1876D01* X3761Y1864D01* X3807D01* X3833Y1838D01* X3919D01* X3926Y1845D01* X3895Y2268D02* X3922Y2295D01* X4731D01* X4777Y2341D01* Y2384D01* X4798Y2405D01* X4827D01* X5101Y2679D01* X5353D01* X5496Y2822D01* Y2857D01* X5518Y2879D01* Y2915D01* X5500Y2933D01* Y2965D01* X5519Y2984D01* Y3013D01* X5570Y3030D02* X5548Y3008D01* Y2984D01* X5571Y2961D01* Y2933D01* X5549Y2911D01* Y2883D01* X5573Y2859D01* Y2830D01* X5405Y2662D01* X5129D01* X4739Y2272D01* X3992D01* X3946Y2226D01* X3525D01* X3485Y2266D01* X3057D01* X2971Y2352D01* Y2585D01* X3080Y2583D02* X3072D01* X3043Y2554D01* Y2534D01* X3056Y2521D01* X3075D01* X3103Y2493D01* Y2434D01* X3138Y2399D01* X3390D01* X3395Y2394D01* X3519D01* X3543Y2370D01* X3575D01* X3623Y2322D01* X3705D01* X3781Y2398D01* X4650D01* X4996Y2744D01* X5213D01* X5297Y2828D01* Y2858D01* X5325Y2886D01* Y2907D01* X5299Y2933D01* Y2960D01* X5323Y2984D01* Y3010D01* X5297Y3036D01* Y3058D01* X5326Y3087D01* Y3170D01* X5404Y3248D01* Y4051D01* X5491Y4138D01* Y4171D01* X5645Y4325D01* Y4399D01* X5671Y4425D01* Y4460D01* X5646Y4485D01* Y4533D01* X5635Y4544D01* X5603Y4462D02* Y4427D01* X5622Y4408D01* Y4337D01* X5327Y4042D01* Y3307D01* X5243Y3223D01* Y3085D01* X5274Y3054D01* Y3038D01* X5248Y3012D01* Y2982D01* X5271Y2959D01* Y2931D01* X5250Y2910D01* Y2880D01* X5271Y2859D01* Y2825D01* X5209Y2763D01* X4975D01* X4633Y2421D01* X3769D01* X3713Y2365D01* X3605D01* X3578Y2392D01* X3552D01* X3535Y2409D01* X3445D01* X3440Y2414D01* X3140D01* X3115Y2439D01* Y2606D01* X3122Y2613D01* Y2642D01* X3176Y2516D02* X3189Y2503D01* X3361D01* X3419Y2561D01* X3592D01* X3608Y2545D01* X3626D01* X3649Y2522D01* X3833D01* X3848Y2537D01* X4478D01* X5023Y3082D01* Y4184D01* X5369Y4530D01* Y4561D01* X5348Y4582D01* Y4631D01* X5335Y4644D01* X5401Y4562D02* X5472Y4633D01* X5435Y4644D02* X5228Y4851D01* X4428D01* X3896Y4319D01* Y4032D01* X3842Y3978D01* Y3872D01* X3854Y3860D01* Y3400D01* X3941Y3401D02* Y3430D01* X3919Y3452D01* Y3571D01* X3962Y3614D01* Y3693D01* X3917Y3738D01* Y3820D01* X3956Y3859D01* Y4275D01* X4481Y4800D01* X5058D01* X5185Y4673D01* Y4647D01* X5224Y4608D01* Y4585D01* X5248Y4610D02* X5272Y4634D01* Y4655D01* X5101Y4826D01* X4456D01* X3926Y4296D01* Y3952D01* X3931Y3947D01* Y3889D01* X3888Y3846D01* Y3632D01* X3878Y3622D01* X3920Y3598D02* X3898Y3576D01* Y3405D01* X3900Y3403D01* Y3339D01* X3853Y3292D01* X3832D01* X3752Y3212D01* X3627D01* X3608Y3193D01* X3572D01* X3545Y3166D01* X3409D01* X3388Y3187D01* X3276D01* X3135Y3046D01* X3123D01* X3367Y2919D02* X3376Y2928D01* X3576D01* X3605Y2899D01* X3918D01* X3958Y2939D01* X4100D01* X4262Y3101D01* Y3736D01* X4354Y3828D01* X4401D01* X4456Y3883D01* Y4365D01* X4470Y4354D02* X4621Y4505D01* X4644D01* X4671Y4532D01* X4701D01* X4703Y4563D02* X4671D01* X4655Y4579D01* X4635Y4544D02* X4456Y4365D01* X4470Y4354D02* Y3826D01* X4325Y3681D01* Y3612D01* X4318Y3605D01* Y3400D01* X4280Y3362D01* Y3089D01* X4123Y2932D01* Y2899D01* X4106Y2882D01* X3604D01* X3570Y2916D01* X3394D01* X3373Y2895D01* Y2876D01* X3381Y2868D01* Y2797D01* X3425Y2753D01* Y2736D01* X3380Y2730D02* Y2772D01* X3369Y2783D01* Y2807D01* X3339Y2837D01* Y2899D01* X3334Y2904D01* Y2934D01* X3352Y2952D01* X3589D01* X3609Y2932D01* X3749D01* X3786Y2969D01* X4073D01* X4207Y3103D01* Y3205D01* X4225Y3223D01* Y3776D01* X4075Y3891D02* Y3274D01* X4001Y3200D01* X3974D01* X3917Y3143D01* Y3129D01* X3874Y3086D01* X3822D01* X3808Y3072D01* X3432D01* X3428Y3068D01* X3280D01* X3218Y3006D01* Y2923D01* X3214Y2919D01* Y2895D01* X3246Y2863D01* Y2841D01* X3314Y2773D01* Y2663D01* X3324Y2653D01* Y2627D01* X3335Y2586D02* X3345Y2596D01* Y2652D01* X3333Y2664D01* Y2777D01* X3303Y2807D01* Y2845D01* X3288Y2860D01* X3282D01* X3270Y2872D01* Y2938D01* X3257Y2951D01* Y2970D01* X3269Y2982D01* X3313D01* X3331Y3000D01* X3432D01* X3468Y3036D01* X3638D01* X3669Y3005D01* X3703D01* X3715Y3017D01* X3934D01* X3985Y3068D01* X4002D01* X4092Y3158D01* Y3201D01* X4109Y3218D01* X4134D01* X4147Y3231D01* Y3877D01* X4141Y3883D01* Y4091D01* X4133Y4099D01* Y4225D01* X4549Y4641D01* X4590D01* X4640Y4691D01* X4842D01* X4935Y4598D01* X5023Y4609D02* X4994Y4638D01* Y4665D01* X4968Y4691D01* X4897D01* X4835Y4644D02* X4800D01* X4776Y4629D02* X4756Y4609D01* X4714D01* X4751Y4579D02* X4786Y4544D01* X4835D01* X4623Y4481D02* X4653D01* X4690Y4444D01* X4735D01* X4701Y4428D02* X4785Y4344D01* Y4294D01* X4735Y4244D02* X4686D01* X4650Y4280D01* X4623D01* X4592Y4249D01* Y3923D01* X4563Y3894D01* Y3760D01* X4498Y3695D01* Y2902D01* X4350Y2754D01* X4254D01* X4210Y2710D01* X3829D01* X3765Y2774D01* X3591D01* X3547Y2818D01* X3517D01* X3497Y2798D01* Y2725D01* X3475Y2741D02* Y2645D01* X3379Y2633D02* Y2655D01* X3357Y2677D01* Y2799D01* X3327Y2829D01* Y2893D01* X3322Y2898D01* Y2939D01* X3347Y2964D01* X3448D01* X3483Y2999D01* X3514D01* X3548Y2965D01* X3598D01* X3617Y2946D01* X3734D01* X3769Y2981D01* X3752Y2993D02* X3736Y2977D01* X3649D01* X3633Y2993D01* X3540D01* X3522Y3011D01* X3477D01* X3442Y2976D01* X3342D01* X3309Y2943D01* Y2894D01* X3315Y2888D01* Y2819D01* X3345Y2789D01* Y2670D01* X3358Y2657D01* Y2623D01* X3371Y2610D01* X3391D01* X3421Y2640D01* X3428Y2690D02* X3449Y2711D01* Y2748D01* X3393Y2804D01* Y2855D01* X3430Y2892D01* X3559D01* X3595Y2856D01* X4125D01* X4289Y3020D01* X4315D01* X4341Y3046D01* Y3071D01* X4402Y3132D01* Y3710D01* X4498Y3806D01* Y4295D01* X4594Y4391D01* X4635Y4444D02* X4594Y4403D01* Y4391D01* X4624Y4379D02* X4526Y4281D01* Y3790D01* X4441Y3705D01* Y3063D01* X4358Y2980D01* X4328D01* X4203Y2855D01* Y2781D01* X4179Y2757D01* X3944D01* X3876Y2825D01* X3591D01* X3548Y2868D01* X3440D01* X3426Y2854D01* Y2827D01* X3451Y2845D02* X3455Y2849D01* X3550D01* X3591Y2808D01* X3839D01* X3904Y2743D01* X4188D01* X4327Y2882D01* Y2922D01* X4459Y3054D01* Y3699D01* X4538Y3778D01* Y4063D01* X4554Y4079D01* Y4263D01* X4635Y4344D01* X4624Y4379D02* X4652D01* X4677Y4354D01* X4885Y4294D02* Y4348D01* X4701Y4532D01* X4703Y4563D02* X4719Y4579D01* X4751D01* X4735Y4644D02* X4631D01* X4585Y4598D01* X4569D01* X4555Y4624D02* X4591D01* X4646Y4679D01* X4765D01* X4800Y4644D01* X4776Y4629D02* X4801D01* X4871Y4559D01* Y4532D01* X4848Y4509D01* Y4483D01* X4885Y4446D01* Y4394D01* X4985D02* Y4446D01* X4950Y4481D01* Y4511D01* X4971Y4532D01* X4985Y4494D02* Y4545D01* X5023Y4583D01* Y4609D01* X5035Y4644D02* X4940Y4739D01* X4897Y4691D02* X4861Y4727D01* X4621D01* X4589Y4695D01* X4527D01* X4060Y4228D01* Y4116D01* X4073Y4103D01* Y3893D01* X4075Y3891D01* X4225Y3776D02* X4317Y3868D01* Y3899D01* X4341Y3923D01* X4404D01* X4430Y3949D01* Y4406D01* X4618Y4594D01* X4685D01* X4714Y4609D02* X4693Y4630D01* X4636D01* X4416Y4410D01* Y3955D01* X4396Y3935D01* X4315D01* X4206Y3826D01* Y3237D01* X4192Y3223D01* Y3115D01* X4058Y2981D01* X3769D01* X3752Y2993D02* X4042D01* X4179Y3130D01* Y3238D01* X4186Y3245D01* Y3870D01* X4403Y4087D01* Y4432D01* X4569Y4598D01* X4555Y4624D02* X4149Y4218D01* Y4104D01* X4153Y4100D01* Y3948D01* X4167Y3934D01* Y3145D01* X4135Y3113D01* X4104D01* X3996Y3005D01* X3734D01* X3721Y2992D01* X3657D01* X3626Y3023D01* X3472D01* X3437Y2988D01* X3337D01* X3291Y2942D01* Y2882D01* X3278Y2839D02* X3258Y2859D01* Y2918D01* X3245Y2931D01* Y2976D01* X3263Y2994D01* X3307D01* X3325Y3012D01* X3427D01* X3463Y3048D01* X3826D01* X3840Y3062D01* X3949D01* X3973Y3086D01* Y3121D01* X3995Y3143D01* X4011D01* X4066Y3198D01* Y3217D01* X4101Y3252D01* Y3924D01* X4129Y3952D01* Y4083D01* X4117Y4095D01* Y4233D01* X4542Y4658D01* X4588D01* X4633Y4703D01* X4848D01* X4907Y4644D01* X4935D01* X4951Y4612D02* Y4581D01* X4971Y4561D01* Y4532D01* X5035Y4544D02* Y4596D01* X5074Y4635D01* Y4659D01* X4982Y4751D01* X4531D01* X4519Y4764D02* X4993D01* X5094Y4663D01* Y4638D01* X5121Y4611D01* Y4582D02* Y4611D01* X5135Y4644D02* X5003Y4776D01* X4508D01* X3986Y4254D01* Y3880D01* X4016Y3850D01* Y3534D01* X3972Y3490D01* Y3369D01* X4589Y3653D02* Y3850D01* X4785Y4046D01* X4802Y4060D02* X4825Y4083D01* Y4106D01* X4785Y4094D02* Y4046D01* X4802Y4060D02* Y4030D01* X4822Y4010D01* Y3982D01* X4601Y3761D01* Y2826D01* X4385Y2610D01* X3648D01* X3623Y2635D01* X3615Y2558D02* X3666D01* X3673Y2565D01* X4406D01* X4959Y3118D01* X5048Y3083D02* X5075Y3056D01* Y3035D01* X4627Y2587D01* X4581D01* X4614Y2560D02* X4644D01* X4897Y2813D01* X4954D01* X5131Y2990D01* Y3002D01* X5099Y3034D01* Y3060D01* X5133Y3094D01* Y3842D01* X5202Y3911D01* Y4071D01* X5439Y4308D01* Y4396D01* X5185Y4394D02* X4959Y4168D01* Y3118D01* X5048Y3083D02* Y3124D01* X5113Y3189D01* Y4032D01* X5147Y4066D01* Y4205D01* X5367Y4425D01* X5439Y4396D02* X5472Y4429D01* Y4458D01* X5435Y4495D01* Y4544D01* X5500Y4532D02* X5522Y4510D01* Y4481D01* X5499Y4458D01* Y4434D01* X5516Y4417D01* Y4298D01* X5226Y4008D01* Y3897D01* X5153Y3824D01* Y3130D01* X5149Y3126D01* Y3082D01* X5172Y3059D01* Y3034D01* X5148Y3010D01* Y2982D01* X5173Y2957D01* Y2934D01* X5040Y2801D01* X4926D01* X4640Y2515D01* X4624D01* X4835Y2014D02* X4838Y2011D01* Y1381D01* X4746Y1448D02* Y1914D01* X4646Y2014D01* X4660Y2158D02* X4778D01* X4963Y2343D01* Y2362D01* X4989Y2388D01* X4995D01* X5173Y2566D01* X5181Y2643D02* X5416D01* X5597Y2824D01* Y2857D01* X5622Y2882D01* Y2910D01* X5599Y2933D01* X5423Y2909D02* X5398Y2934D01* Y2961D01* X5421Y2984D01* Y3010D01* X5400Y3031D01* Y3066D01* X5427Y3093D01* Y3221D01* X5584Y3378D01* Y4118D01* X5670Y4204D01* Y4273D01* X5745Y4348D01* Y4405D01* X5784Y4444D01* X5835D01* X5901Y3422D02* Y3162D01* X5698Y2959D01* Y2932D01* X5720Y2910D01* Y2880D01* X5697Y2857D01* Y2754D01* X5511Y2568D01* Y2465D01* X5403Y2357D01* X5273D01* X5022Y2106D01* Y1560D01* X4977Y1515D01* Y1292D01* X5033Y1236D01* X4866Y1319D02* Y1353D01* X4838Y1381D01* X4929Y1565D02* X4985Y1621D01* Y2122D01* X5248Y2385D01* X5401D01* X5479Y2463D01* Y2593D01* X5673Y2787D01* Y2856D01* X5651Y2878D01* Y2910D01* X5671Y2930D01* Y2960D01* X5651Y2980D01* Y3011D01* X5879Y3239D01* Y3348D01* X5790Y3437D01* X5881Y3442D02* X5901Y3422D01* X5922Y3433D02* Y3083D01* X5751Y2912D01* Y2880D01* X5768Y2863D01* Y2730D01* X5669Y2631D01* Y2588D01* X5436Y2355D01* Y2310D01* X5387Y2261D01* X5356D01* X5075Y1980D01* Y1513D01* X5049Y1487D01* Y1447D01* X4866Y1319D02* X4745Y1198D01* X4596D01* X4519Y1275D01* Y1339D01* X4548Y1382D02* X4569Y1361D01* Y1304D01* X4615Y1258D01* Y1236D01* X4637Y1214D01* X4700D01* X4772Y1286D01* Y1422D01* X4746Y1448D01* X4682Y1572D02* X4602D01* X4058Y2116D01* X3256D01* X3231Y2141D01* X3122D01* X2926Y2337D01* Y2629D01* X2952Y2655D01* Y2755D01* X2975Y2778D01* Y2835D01* X3007Y2841D02* X3038D01* X3101Y2778D01* Y2622D01* X3083Y2604D01* X3071D01* X3031Y2564D01* Y2492D01* X3052Y2471D01* X3072D01* X3091Y2452D01* Y2429D01* X3139Y2381D01* X3335D01* X3359Y2357D01* X3379D01* X3402Y2380D01* X3500D01* X3570Y2310D01* X3738D01* X3803Y2375D01* X4663D01* X5016Y2728D01* X5272D01* X5377Y2833D01* Y2853D01* X5347Y2883D01* Y2910D01* X5370Y2933D01* Y2962D01* X5348Y2984D01* Y3014D01* X5371Y3037D01* Y3061D01* X5347Y3085D01* Y3164D01* X5439Y3256D01* Y4033D01* X5508Y4102D01* Y4150D01* X5721Y4363D01* Y4402D01* X5698Y4425D01* Y4464D01* X5735Y4501D01* Y4544D01* X5835D02* X5884D01* X5918Y4510D01* Y4481D01* X5899Y4462D01* Y4434D01* X5920Y4413D01* X5998Y4430D02* X6019Y4409D01* Y4353D01* X5912Y4246D01* Y4217D01* X5742Y4047D01* Y3202D01* X5601Y3061D01* Y3034D01* X5621Y3014D01* Y2981D01* X5599Y2959D01* Y2933D01* X5885Y2994D02* X5935D01* X5970Y3029D01* Y3061D01* X5951Y3080D01* Y3134D01* X5977Y3160D01* Y3440D01* X5942Y3676D02* X5925Y3659D01* Y3492D01* X5977Y3440D01* X5936Y3447D02* X5922Y3433D01* X5858Y3325D02* Y3344D01* X5763Y3439D01* Y3498D01* X5790Y3437D02* Y3715D01* X5974Y3899D01* Y4010D01* X5570Y4462D02* Y4434D01* X5534Y4398D01* Y4283D01* X5253Y4002D01* Y3390D01* X5226Y3363D01* Y3087D01* X5201Y3062D01* Y3030D01* X5220Y3011D01* Y2983D01* X5197Y2960D01* Y2934D01* X5222Y2909D01* Y2883D01* X5119Y2780D01* X4969D01* X4935Y2746D01* X4920D01* X4619Y2445D01* X3750D01* X3682Y2377D01* X3614D01* X3580Y2411D01* X3563D01* X3521Y2453D01* X3461D01* X3434Y2426D01* X3145D01* X3128Y2443D01* Y2518D01* X3127Y2519D01* Y2589D01* X3150Y2612D01* Y2663D01* X3126Y2687D01* X3062Y2786D02* Y2723D01* X3089Y2696D01* Y2631D01* X3074Y2616D01* X3066D01* X3018Y2568D01* Y2462D01* X3061Y2419D01* X3077D01* X3130Y2366D01* X3333D01* X3355Y2344D01* X3383D01* X3405Y2366D01* X3484D01* X3552Y2298D01* X3800D01* X3862Y2360D01* X4204D01* X4213Y2351D01* Y2339D01* X4220Y2332D01* X4527D01* X4532Y2327D01* X4670D01* X4683Y2340D01* Y2359D01* X5035Y2711D01* X5281D01* X5396Y2826D01* Y2854D01* X5423Y2881D01* Y2909D01* X5181Y2643D02* X4789Y2251D01* X4104D01* X4067Y2214D01* X3078D01* X2947Y2345D01* Y2629D01* X3026Y2708D01* X3050D01* X3067Y2643D02* Y2691D01* X3050Y2708D01* X3041Y2687D02* X2992Y2638D01* Y2374D01* X3044Y2322D01* X3096D01* X3109Y2309D01* X3491D01* X3532Y2268D01* X3895D01* X3925Y1947D02* X4033D01* X4168Y1812D01* X4147Y1803D02* X4025Y1925D01* X3911D01* X3898Y1938D01* X3830D01* X3812Y1961D02* X3835Y1984D01* Y2001D01* X3822Y2014D01* X3816D01* X3801Y2029D01* Y2045D01* X3812Y2056D01* X3836D01* X3857Y2035D01* X3874D01* X3826D02* Y2034D01* X3846Y2014D01* X4024D01* X4242Y1796D01* Y1571D01* X4231Y1560D01* X4267Y1571D02* Y1560D01* X4237Y1530D01* X4241Y1510D02* X4294Y1563D01* X4267Y1571D02* X4282Y1586D01* X4333D01* X4491Y1871D02* Y1989D01* X4660Y2158D01* X4604Y2159D02* X4118D01* X4092Y2185D01* X4029D01* X4011Y2167D01* X3147D01* X3130Y2184D01* X3161Y2460D02* X3375D01* X3414Y2499D01* X3570D01* X3609Y2460D01* X3684D01* X3713Y2489D01* X4543D01* X4614Y2560D01* X4581Y2587D02* X4504Y2510D01* X3695D01* X3657Y2472D01* X3622D01* X3578Y2516D01* X3403D01* X3373Y2486D01* X3176D01* X3150Y2501D02* Y2480D01* X3140Y2470D01* Y2449D01* X3151Y2438D01* X3419D01* X3462Y2481D01* X3560D01* X3606Y2435D01* Y2402D01* X3619Y2389D01* X3646D01* X3724Y2467D01* X4594D01* X4607Y2480D01* Y2498D01* X4624Y2515D01* X2326Y1277D02* X2362Y1313D01* Y1857D01* X2267Y1952D01* X1981D01* X1861Y2072D01* Y2282D01* X1842Y2301D01* Y2370D01* X1865Y2393D01* Y2567D01* X1898Y2600D01* Y3072D01* X1857Y3113D01* Y3638D01* X1777Y3718D01* Y3745D01* X1809Y3776D02* Y3718D01* X1878Y3649D01* Y3127D01* X1927Y3078D01* Y2199D01* X1906Y2178D01* Y2126D01* X2019Y2013D01* X2237D01* X2384Y1866D01* Y1253D01* X2448Y1189D01* X2497D01* X2596Y1288D02* X2497Y1189D01* X2558Y1214D02* X2669D01* X2694Y1189D01* X3690D01* X3712Y1211D01* X3790D01* X3822Y1179D01* X4416D01* X4470Y1233D01* Y1359D01* X4493Y1382D01* X4548D01* X4686Y1269D02* X4669Y1286D01* Y1430D01* X4007Y2092D01* X3918D01* X3924Y2035D02* X3902Y2057D01* X3853D01* X3841Y2069D01* X3806D01* X3767Y2092D02* X3710Y2035D01* Y1785D01* X3750Y1745D01* Y1718D01* X3920Y1548D01* X4083Y1557D02* Y1804D01* X4000Y1887D01* X3904D01* X3886Y1869D01* X3865D01* X3831Y1903D01* X3785D01* X3770Y1888D01* X3821Y1882D02* X3850Y1853D01* X3902D01* X3915Y1866D01* X3991D01* X4064Y1793D01* Y1547D01* X4121Y1490D01* X4252D01* X4325Y1563D01* X4333Y1586D02* X4356Y1563D01* X4388D02* X4312Y1639D01* Y1756D01* X3999Y2069D01* X3859D01* X3836Y2092D01* X3817D01* X3806Y2069D02* X3789Y2052D01* Y1986D01* X3776Y1973D01* X3754D01* X3736Y1955D01* Y1843D01* X3757Y1822D01* X3941D01* X3965Y1802D02* Y1393D01* X4120Y1238D01* Y1237D02* Y1238D01* X4160Y1213D02* X4184Y1237D01* X4310Y1272D02* X4046Y1536D01* Y1781D01* X3982Y1845D01* X3926D01* X3941Y1822D02* X3942Y1823D01* X3977D01* X4029Y1771D01* Y1488D01* X4288Y1229D01* Y1225D01* X4299Y1214D01* X4321D01* X4310Y1272D02* Y1235D01* X4321Y1214D02* X4340Y1233D01* X4373D02* X4341Y1201D01* X4069D01* X3920Y1350D01* Y1548D01* X3854Y1559D02* X3773Y1640D01* X3759Y1674D02* X3758Y1665D01* X3750Y1660D01* X3773Y1640D02* X3470D01* X3469D01* X3461Y1646D01* X3462Y1655D01* X3470Y1660D01* X3750D01* X3759Y1674D02* X3751Y1680D01* X3750D01* X3440D01* X3423Y1697D01* X3350Y1684D02* Y1576D01* X3498Y1428D01* X3500Y1500D02* X3499D01* X3498Y1428D02* Y1234D01* X3435Y1241D02* Y1393D01* X3414Y1414D01* Y1467D01* X3329Y1552D01* Y1743D01* X3277Y1795D01* Y1838D02* X3256Y1817D01* Y1786D01* X3316Y1726D01* Y1480D01* X3404Y1392D01* Y1241D01* X3341Y1242D02* Y1411D01* X3278Y1429D02* X3229Y1478D01* Y1604D01* X3253Y1629D02* Y1477D01* X3310Y1420D01* X3278Y1429D02* Y1239D01* X3310Y1242D02* Y1420D01* X3341Y1411D02* X3277Y1475D01* Y1648D01* X3276Y1682D02* X3301Y1657D01* Y1473D01* X3372Y1402D01* Y1268D01* X3246Y1238D02* X3210Y1274D01* Y1520D01* X3205Y1528D01* X3196Y1529D01* X3190Y1521D01* Y1520D01* Y1280D01* Y1279D01* X3184Y1271D01* X3175Y1272D01* X3170Y1280D01* Y1547D01* X3205Y1582D01* X3151Y1667D02* Y1539D01* X2931Y1319D01* Y1243D01* X2868Y1238D02* X2843Y1213D01* X2774Y1240D02* Y1244D01* X3130Y1600D01* Y1676D01* X3151Y1697D01* Y1810D01* X3184Y1843D01* X3109Y1812D02* X3083Y1838D01* Y1892D01* X3084Y1794D02* X3054Y1764D01* Y1720D01* X2821Y1487D01* Y1416D01* X2711Y1237D02* Y1266D01* X3099Y1654D01* Y1690D01* X3109Y1700D01* Y1812D01* X3130Y1800D02* Y1701D01* X3115Y1686D01* Y1625D01* X2742Y1252D01* Y1236D01* X2843Y1213D02* X2704D01* X2690Y1227D01* Y1285D01* X2821Y1416D01* X2650Y1414D02* Y1530D01* X2697Y1577D01* Y1800D01* X2744Y1847D01* X2729Y1860D02* X2680Y1811D01* Y1592D01* X2446Y1961D02* Y1988D01* X2468Y2010D01* Y2180D01* X2413Y2235D01* Y2362D01* X2312Y2463D01* Y2507D01* X2407Y2478D02* X2387Y2498D01* X2375D01* X2125Y2748D01* Y2915D01* X2095Y2945D01* Y3034D01* X2101Y3040D01* Y3314D01* X2095Y3320D01* Y3647D01* X2203Y3755D01* X2511D01* X2555Y3742D02* X2215D01* X2230Y3729D02* X2499D01* X2509Y3719D02* X2499Y3729D01* X2484Y3714D02* X2500Y3698D01* X2543D01* X2584Y3739D01* Y3773D01* X2643Y3832D01* X2738D01* X2833Y3737D01* X2876D01* X2953Y3814D01* X3202D01* X3252Y3764D01* X3477D01* X3566Y3675D01* X3663D01* X3686Y3652D01* Y3622D01* X3748Y3560D01* Y3486D01* X3727Y3498D02* X3736Y3507D01* Y3551D01* X3672Y3615D01* Y3649D01* X3588Y3697D02* X3552Y3733D01* Y3767D01* X3497Y3822D01* X3279D01* X3241Y3860D01* X2902D01* X2822Y3780D01* Y3779D01* X2828Y3724D02* X2882D01* X2947Y3789D01* X3199D01* X3236Y3752D01* X3469D01* X3558Y3663D01* X3658D01* X3672Y3649D01* X3793Y3718D02* X3773Y3698D01* Y3499D01* X3813Y3459D01* Y3423D01* X3791Y3401D01* X3741Y3367D02* X3787D01* X3825Y3405D01* Y3487D01* X3785Y3527D01* Y3679D01* X3818Y3712D01* Y3729D01* X3801Y3746D01* X3794D01* X3756Y3784D01* Y3909D01* X3730Y3935D01* Y4203D01* X4270Y4743D01* Y4790D01* X4355Y4875D01* X5397D01* X5582Y4690D01* X5689D01* X5735Y4644D02* X5689Y4690D01* X5635Y4644D02* Y4593D01* X5596Y4554D01* Y4534D01* X5620Y4510D01* Y4479D01* X5603Y4462D01* X5570D02* X5535Y4497D01* Y4544D01* X5500Y4532D02* Y4560D01* X5535Y4595D01* Y4644D02* Y4595D01* X5472Y4633D02* Y4690D01* X5299Y4863D01* X4371D01* X4291Y4783D01* Y4739D01* X3773Y4221D01* Y3827D01* X3841Y3759D01* Y3404D01* X3756Y3319D01* X3726D01* X3714Y3307D01* X3553D01* X3505Y3259D01* X3276D01* X3188Y3171D01* X3143D01* X3120Y3148D01* Y3137D01* X3031Y3048D01* Y2909D01* X3060Y2880D01* Y2855D01* X3030Y2878D02* X3019Y2889D01* Y3053D01* X3098Y3132D01* Y3143D01* X3146Y3191D01* Y3233D01* X3184Y3271D01* X3297D01* X3328Y3302D01* X3423D01* X3440Y3319D01* X3708D01* X3719Y3330D01* Y3345D01* X3741Y3367D01* X3748Y3392D02* X3720Y3420D01* X3638D01* X3625Y3433D01* Y3585D01* X3600Y3610D01* X3536D01* X3502Y3644D01* X3542Y3622D02* X3608D01* X3669Y3561D01* Y3462D01* X3647Y3440D01* Y3441D01* X3727Y3498D02* Y3476D01* X3738Y3465D01* X3772D01* X3792Y3445D01* X3743Y3440D02* X3715Y3468D01* Y3502D01* X3701Y3516D01* X3691D01* X3681Y3526D01* Y3571D01* X3610Y3642D01* X3561D01* X3463Y3740D01* X3306D01* X3286Y3720D01* Y3719D01* X3288D01* X3289Y3673D02* X3218D01* X3172Y3719D01* X2930D01* X2911Y3700D01* X2817D01* X2769Y3748D01* X2734D01* X2732Y3750D01* Y3690D01* X2639Y3597D01* X2602D01* X2564Y3635D01* X2524D01* X2489Y3600D01* X2490Y3580D02* X2354D01* X2327Y3553D01* X2361Y3566D02* X2501D01* X2540Y3605D01* X2558D01* X2616Y3547D01* X2745Y3389D02* X2911D01* X2930Y3408D01* Y3520D01* X2967Y3557D01* X3427D01* X3487Y3497D01* Y3480D01* X3527Y3440D01* X3514Y3482D02* Y3496D01* X3441Y3569D01* X3148D01* X3111Y3606D01* X2933D01* X2903Y3576D01* X2815D01* X2745Y3506D01* X2693Y3527D02* X2648D01* X2631Y3510D01* X2616Y3547D02* X2709D01* X2693Y3527D02* X2697Y3523D01* X2719D01* X2743Y3547D01* Y3576D01* X2769Y3602D01* X2911D01* X2928Y3619D01* X3174D01* X3177Y3622D01* X3209D01* X3291Y3648D02* X3310Y3629D01* X3450D01* X3516Y3563D01* Y3540D01* X3535Y3521D01* X3522Y4021D02* X3107D01* Y4064D02* X3080Y4091D01* X3025D01* X2987Y4129D01* X2792D01* X2675Y4012D01* X2506D01* X2428Y3934D01* X2360D01* X2397Y3955D02* X2495Y4053D01* X2635D01* X2736Y4154D01* X3045D01* X3063Y4178D02* X2618D01* X2532Y4092D01* X2464D01* X2335Y3963D01* X2307Y3934D02* Y3976D01* X2533Y4202D01* X3058D01* X3080Y4224D01* X3144D01* X3178Y4190D01* X3542D01* X3641Y4091D01* X3539Y4144D02* X3097D01* X3063Y4178D01* X3045Y4154D02* X3083Y4116D01* X3517D01* X3548Y4085D02* X3517Y4116D01* X3539Y4144D02* X3597Y4086D01* Y4043D01* X3696Y3938D02* X3672Y3962D01* Y4170D01* X4249Y4747D01* Y4798D01* X4339Y4888D01* X5498D01* X5577Y4809D01* X6982D01* X7110Y4681D01* X7104Y4519D02* Y4515D01* X6984Y4253D02* Y3135D01* X6921Y3072D01* Y2843D01* X6804Y2726D01* Y2361D01* X6825Y2340D01* Y2386D02* X6848Y2409D01* Y2534D01* X6858Y2544D01* Y2722D01* X7034Y2898D01* Y4251D01* X7115Y4141D02* X7124Y4150D01* X7154D01* X7164Y4140D01* Y2998D01* X6911Y2745D01* Y2544D01* X6892Y2525D01* Y2407D01* X6871Y2386D01* X6925D02* X6904Y2407D01* Y2488D01* X6961Y2545D01* Y2764D01* X7185Y2988D01* Y4229D01* X7119Y4295D01* Y4347D02* X7100D01* X7093Y4396D02* X7137D01* X7160Y4419D01* X7104Y4467D02* X7131D01* X7142Y4456D01* Y4426D01* X7160Y4419D02* Y4470D01* X7137Y4493D01* X7119D01* X7104Y4515D02* X6894Y4305D01* Y4279D01* X6857Y4242D01* X6846D01* X6807Y4203D01* Y3446D01* X6693Y3332D01* Y2439D01* X6717Y2415D01* X6733D01* X6747Y2401D01* Y2364D01* X6771Y2340D01* Y2386D02* Y2405D01* X6747Y2429D01* Y2716D01* X6886Y2855D01* Y3290D01* X6934Y3338D01* Y4251D01* X7003Y4320D01* Y4333D01* X7082Y4412D01* X7128D01* X7142Y4426D01* X7119Y4441D02* X7059D01* X6943Y4325D01* Y4298D01* X6881Y4236D01* Y3910D01* X6829Y3858D01* Y3300D01* X6837Y3292D01* Y3043D01* X6833Y3039D01* Y2861D01* X6705Y2733D01* Y2460D01* X6725Y2440D01* X6771D02* X6792Y2461D01* Y2511D01* X6760Y2543D01* Y2706D01* X6899Y2845D01* Y3116D01* X6960Y3177D01* Y4252D01* X7027Y4319D01* Y4330D01* X7093Y4396D01* X7104Y4373D02* X6984Y4253D01* X7009Y4256D02* X7100Y4347D01* X7104Y4321D02* X7034Y4251D01* X7009Y4256D02* Y3112D01* X6945Y3048D01* Y2838D01* X6816Y2709D01* Y2543D01* X6825Y2534D01* Y2440D01* X7104Y1920D02* X7130D01* X7164Y1886D01* Y1544D01* X7035Y1415D01* X7015D01* X6997Y1397D01* Y1366D01* X6971Y1340D01* X6925D02* Y1334D01* X6958Y1301D01* X7021D01* X7062Y1342D01* Y1396D01* X7202Y1536D01* Y1943D01* X7222Y1975D02* Y1533D01* X7077Y1388D01* Y1336D01* X7027Y1286D01* X6945D01* X6900Y1331D01* Y1448D01* X6914Y1462D01* X6949D01* X6971Y1440D01* X6925D02* X6948Y1417D01* Y1332D01* X6964Y1316D01* X6986D01* X6998Y1328D01* Y1348D01* X7013Y1363D01* X7035D01* X7049Y1377D01* Y1405D01* X7183Y1539D01* Y1924D01* X7222Y1975D02* X7131Y2066D01* X7104D01* Y2014D02* X7131D01* X7202Y1943D01* X7183Y1924D02* X7119Y1988D01* Y2279D02* X7140Y2258D01* Y2119D01* X7122Y2101D01* X7098D01* X7083Y2086D01* Y1609D01* X7037Y1563D01* X6994D01* X6971Y1540D01* Y1586D02* X7004Y1619D01* Y2199D01* X7047Y2242D01* Y2335D01* X7059Y2347D01* Y2384D01* X7100Y2425D01* X7119D01* Y2331D02* X7097D01* X7083Y2317D01* X7071Y2323D02* X7083Y2335D01* Y2368D01* X7106Y2391D01* X7133D01* X7152Y2410D01* Y2501D01* X7122Y2531D01* X7097D01* X7088Y2522D01* Y2475D01* X7109Y2454D01* X7120Y2482D02* X7140Y2462D01* Y2415D01* X7128Y2403D01* X7099D01* X7071Y2375D01* Y2340D01* X7059Y2328D01* X7083Y2317D02* Y2127D01* X7071Y2115D01* Y1632D01* X7025Y1586D01* Y1640D02* X7059Y1674D01* Y2144D01* X7071Y2156D01* Y2323D01* X7059Y2328D02* Y2182D01* X7046Y2169D01* Y1707D01* X7025Y1686D01* X7104Y1723D02* X7126D01* X7143Y1706D01* Y1545D01* X7111Y1513D01* X6916D01* X6898Y1495D01* Y1476D01* X6886Y1464D01* X6860D01* X6847Y1451D01* Y1362D01* X6825Y1340D01* X6925Y1640D02* X6949Y1664D01* Y1700D01* X6962Y1713D01* X6977D01* X6992Y1728D01* Y2211D01* X7004Y2223D01* Y2351D01* X7014Y2361D01* X7037D01* X7047Y2371D01* Y2499D01* X7119Y2571D01* X7069Y2595D02* Y2548D01* X7004Y2483D01* Y2370D01* X6979Y2345D01* Y2226D01* X6950Y2197D01* Y1761D01* X6971Y1740D01* X6925D02* X6904Y1761D01* Y2182D01* X6954Y2232D01* Y2338D01* X6992Y2376D01* Y2506D01* X7052Y2566D01* Y2597D01* X7104D02* X7132D01* X7140Y2605D01* Y2643D01* X7112Y2671D01* X7104Y2649D02* X7052Y2597D01* X7069Y2595D02* X7097Y2623D01* X7119D01* X7112Y2671D02* X7064D01* X6986Y2593D01* Y2532D01* X6948Y2494D01* Y2370D01* X6892Y2314D01* Y1761D01* X6871Y1740D01* X6495Y1594D02* X6448Y1547D01* Y1382D01* X6429Y1363D01* X6375Y1336D02* X6402Y1363D01* X6429D01* X6421Y1390D02* X6397Y1414D01* Y1503D01* X6359Y1541D01* X7012Y876D02* X7045Y843D01* X7072Y863D02* X7105D01* Y876D02* X7072D01* X7045D02* X7012Y843D01* Y786D02* Y759D01* X7018Y753D01* X7038D01* X7045Y759D01* X7012Y739D02* X7018Y733D01* X7038D01* X7045Y739D01* Y786D01* X7072Y773D02* X7105D01* X7072Y786D02* X7105D01* X7125Y883D02* X7138Y896D01* Y843D01* X7118D02* X7158D01* X7172Y849D02* X7178Y843D01* X7205D01* X7212Y849D01* Y869D01* X7205Y876D01* X7172D01* Y896D01* X7212D01* X7258Y869D02* X7232D01* X7225Y863D01* Y849D01* X7232Y843D01* X7258D01* X7265Y849D01* Y863D01* X7258Y869D01* X7265Y876D01* Y889D01* X7258Y896D01* X7232D01* X7225Y889D01* Y876D01* X7232Y869D01* X7225Y759D02* Y799D01* X7232Y806D01* X7258D01* X7265Y799D01* Y759D01* X7258Y753D01* X7232D01* X7225Y759D01* Y753D02* X7265Y806D01* X7298Y843D02* X7292Y849D01* X7298Y856D01* X7305Y849D01* X7298Y843D01* X7332Y849D02* X7338Y843D01* X7365D01* X7372Y849D01* Y869D01* X7365Y876D01* X7332D01* Y896D01* X7372D01* X7298Y766D02* X7305Y759D01* X7298Y753D01* X7292Y759D01* X7298Y766D01* X7332Y753D02* X7372Y806D01* X7365D02* X7372Y799D01* Y759D01* X7365Y753D01* X7338D01* X7332Y759D01* Y799D01* X7338Y806D01* X7365D01* X7385Y843D02* X7425Y896D01* X7418D02* X7425Y889D01* Y849D01* X7418Y843D01* X7392D01* X7385Y849D01* Y889D01* X7392Y896D01* X7418D01* X7518Y876D02* X7525D01* X7532Y869D01* Y843D01* X7512D02* Y869D01* X7518Y876D02* X7512Y869D01* X7505Y876D01* X7498D01* X7492Y869D01* Y876D02* Y843D01* X7458Y869D02* X7465Y876D01* X7472D01* X7478Y869D01* Y843D01* X7458D02* Y869D01* X7452Y876D01* X7445D01* X7438Y869D01* Y876D02* Y843D01* X7425Y806D02* X7385Y753D01* Y759D02* X7392Y753D01* X7418D01* X7425Y759D01* Y799D01* X7418Y806D01* X7392D01* X7385Y799D01* Y759D01* X7438Y753D02* Y786D01* Y779D02* X7445Y786D01* X7452D01* X7458Y779D01* X7465Y786D01* X7458Y779D02* Y753D01* X7465Y786D02* X7472D01* X7478Y779D01* Y753D01* X7492D02* Y786D01* Y779D02* X7498Y786D01* X7505D01* X7512Y779D01* Y753D01* X7532D02* Y779D01* X7525Y786D01* X7518D01* X7512Y779D01* X7923Y1181D02* X7957Y1214D01* X7937Y1241D02* Y1274D01* X7923D02* Y1241D01* Y1214D02* X7957Y1181D01* X8013D02* X8040D01* X8047Y1188D01* Y1208D01* X8040Y1214D01* X8060Y1181D02* X8067Y1188D01* Y1208D01* X8060Y1214D01* X8013D01* Y1241D02* Y1274D01* X8027Y1241D02* Y1274D01* X7917Y1294D02* X7903Y1308D01* X7957D01* Y1288D02* Y1328D01* Y1348D02* Y1374D01* X7950Y1381D01* X7937D01* X7930Y1374D01* Y1348D01* X7937Y1341D01* X7957Y1348D02* X7950Y1341D01* X7910D01* X7903Y1348D01* Y1374D01* X7910Y1381D01* X7957Y1394D02* X7903Y1434D01* X7910D02* X7950D01* X7957Y1428D01* Y1401D01* X7950Y1394D01* X7910D01* X7903Y1401D01* Y1428D01* X7910Y1434D01* X8007Y1401D02* X7993Y1414D01* X8047D01* Y1394D02* Y1434D01* X8040Y1461D02* X8033Y1468D01* X8040Y1474D01* X8047Y1468D01* X8040Y1461D01* Y1501D02* X8047Y1508D01* Y1534D01* X8040Y1541D01* X8020D01* X8013Y1534D01* Y1501D01* X7993D01* Y1541D01* X7957Y1534D02* X7950Y1541D01* X7910D01* X7903Y1534D01* Y1541D02* X7957Y1501D01* X7950Y1474D02* X7943Y1468D01* X7950Y1461D01* X7957Y1468D01* X7950Y1474D01* X7903Y1534D02* Y1508D01* X7910Y1501D01* X7950D01* X7957Y1508D01* Y1534D01* Y1561D02* Y1588D01* X7950Y1594D01* X7910D01* X7903Y1588D01* Y1594D02* X7957Y1554D01* X7950D02* X7957Y1561D01* X7950Y1554D02* X7910D01* X7903Y1561D01* Y1588D01* X7930Y1608D02* X7923Y1614D01* Y1621D02* X7930Y1628D01* X7923Y1634D01* X7930Y1628D02* X7957D01* Y1608D02* X7923D01* Y1614D02* Y1621D01* Y1634D02* Y1641D01* X7930Y1648D01* X7957D01* Y1661D02* X7923D01* X7930D02* X7923Y1668D01* Y1674D01* X7930Y1681D02* X7957D01* Y1701D02* X7930D01* X7923Y1694D01* Y1688D01* X7930Y1681D01* X7923Y1674D01* X8013D02* X8020Y1681D01* X8013Y1688D01* Y1694D01* X8020Y1701D01* X8047D01* Y1681D02* X8020D01* X8013Y1674D02* Y1668D01* X8020Y1661D01* X8013D02* X8047D01* Y1648D02* X8020D01* X8013Y1641D01* Y1634D01* Y1621D02* Y1614D01* Y1608D02* X8047D01* Y1628D02* X8020D01* X8013Y1634D02* X8020Y1628D01* X8013Y1621D01* Y1614D02* X8020Y1608D01* X7993Y1588D02* Y1561D01* X8000Y1554D01* X8040D01* X8047Y1561D01* Y1588D01* X8040Y1594D01* X8000D01* X7993Y1588D01* Y1594D02* X8047Y1554D01* X7661Y3047D02* X7622Y3008D01* X7326D01* X7294Y2976D01* X7256D01* X7232Y2952D01* Y2797D01* X7128Y2693D01* X7101D01* X7072Y2722D01* X7051D01* X7074Y2744D02* Y2805D01* X7213Y2944D01* Y2959D01* X7253Y2999D01* X7268D01* X7304Y3035D01* Y3052D01* X7338Y3086D01* X7357D01* X7387Y3116D01* Y3139D01* X7413Y3165D01* X7435D01* X7465Y3195D01* Y3216D01* X7492Y3243D01* X7512D01* X7544Y3275D01* Y3293D01* X7574Y3323D01* X7590D01* X7624Y3357D01* Y3404D01* X7661Y3441D01* X7937Y4269D02* Y4302D01* X7957Y4315D02* Y4355D01* Y4335D02* X7903D01* X7917Y4322D01* X7923Y4302D02* Y4269D01* Y4242D02* X7957Y4209D01* Y4242D02* X7923Y4209D01* X8013D02* X8040D01* X8047Y4215D01* Y4235D01* X8040Y4242D01* X8060Y4209D02* X8067Y4215D01* Y4235D01* X8060Y4242D01* X8013D01* Y4269D02* Y4302D01* X8027Y4269D02* Y4302D01* X8040Y4369D02* X8047Y4375D01* Y4402D01* X8040Y4409D01* X8000D01* X7993Y4402D01* Y4375D01* X8000Y4369D01* X8013D01* X8020Y4375D01* Y4402D01* X8013Y4409D01* X8000Y4422D02* X7993Y4429D01* Y4455D01* X8000Y4462D01* X8013D01* X8020Y4455D01* Y4429D01* X8013Y4422D01* X8000D01* X8020Y4429D02* X8027Y4422D01* X8040D01* X8047Y4429D01* Y4455D01* X8040Y4462D01* X8027D01* X8020Y4455D01* X8040Y4502D02* X8047Y4495D01* X8040Y4489D01* X8033Y4495D01* X8040Y4502D01* Y4529D02* X8047Y4535D01* Y4562D01* X7993Y4569D02* Y4529D01* X8013D01* Y4562D01* X8020Y4569D01* X8040D01* X8047Y4562D01* X8040Y4582D02* X8047Y4589D01* X8040Y4582D02* X8000D01* X7993Y4589D01* Y4615D01* X8000Y4622D01* X8040D01* X8047Y4615D01* Y4589D01* Y4582D02* X7993Y4622D01* X7512Y5121D02* X7518Y5128D01* X7525D01* X7532Y5121D01* Y5094D01* X7512D02* Y5121D01* X7505Y5128D01* X7498D01* X7492Y5121D01* Y5128D02* Y5094D01* X7478D02* Y5121D01* X7472Y5128D01* X7465D01* X7458Y5094D02* Y5121D01* X7465Y5128D02* X7458Y5121D01* X7452Y5128D01* X7445D01* X7438Y5121D01* Y5128D02* Y5094D01* X7418Y5058D02* X7392D01* X7385Y5051D01* Y5011D01* X7392Y5004D01* X7418D01* X7425Y5011D01* Y5051D01* X7418Y5058D01* X7425D02* X7385Y5004D01* X7438D02* Y5038D01* Y5031D02* X7445Y5038D01* X7452D01* X7458Y5031D01* Y5004D01* X7478D02* Y5031D01* X7472Y5038D01* X7465D01* X7458Y5031D01* X7492Y5004D02* Y5038D01* Y5031D02* X7498Y5038D01* X7505D01* X7512Y5031D01* X7518Y5038D01* X7512Y5031D02* Y5004D01* X7532D02* Y5031D01* X7525Y5038D01* X7518D01* X7298Y5004D02* X7292Y5011D01* X7298Y5018D01* X7305Y5011D01* X7298Y5004D01* X7332Y5011D02* Y5051D01* X7338Y5058D01* X7365D01* X7372Y5051D01* Y5011D01* X7365Y5004D01* X7338D01* X7332Y5011D01* Y5004D02* X7372Y5058D01* X7385Y5094D02* X7425Y5148D01* X7418D02* X7425Y5141D01* Y5101D01* X7418Y5094D01* X7392D01* X7385Y5101D01* Y5141D01* X7392Y5148D01* X7418D01* X7372D02* X7332D01* Y5128D01* X7365D01* X7372Y5121D01* Y5101D01* X7365Y5094D01* X7338D01* X7332Y5101D01* X7298Y5094D02* X7305Y5101D01* X7298Y5108D01* X7292Y5101D01* X7298Y5094D01* X7258Y5121D02* X7232D01* X7225Y5128D01* Y5141D01* X7232Y5148D01* X7258D01* X7265Y5141D01* Y5128D01* X7258Y5121D01* X7265Y5114D01* Y5101D01* X7258Y5094D01* X7232D01* X7225Y5101D01* Y5114D01* X7232Y5121D01* X7212Y5148D02* X7172D01* Y5128D01* X7205D01* X7212Y5121D01* Y5101D01* X7205Y5094D01* X7178D01* X7172Y5101D01* X7158Y5094D02* X7118D01* X7138D02* Y5148D01* X7125Y5134D01* X7012Y5128D02* X7045Y5094D01* X7072Y5114D02* X7105D01* Y5128D02* X7072D01* X7045D02* X7012Y5094D01* Y5038D02* Y5011D01* X7018Y5004D01* X7038D01* X7045Y5011D01* X7072Y5024D02* X7105D01* X7118Y5004D02* X7158D01* X7172Y5011D02* Y5051D01* X7178Y5058D01* X7205D01* X7212Y5051D01* Y5011D01* X7205Y5004D01* X7178D01* X7232D02* X7225Y5011D01* Y5051D01* X7232Y5058D01* X7258D01* X7265Y5051D01* Y5011D01* X7258Y5004D01* X7232D01* X7225D02* X7265Y5058D01* X7212D02* X7172Y5004D01* Y5011D02* X7178Y5004D01* X7138D02* Y5058D01* X7125Y5044D01* X7105Y5038D02* X7072D01* X7045D02* Y4991D01* X7038Y4984D01* X7018D01* X7012Y4991D01* X7910Y4409D02* X7903Y4402D01* Y4375D01* X7910Y4369D01* X7950D01* X7957Y4375D01* Y4402D01* X7950Y4409D01* X7937Y4369D02* X7930Y4375D01* Y4402D01* X7937Y4409D01* X7950D01* X7957Y4429D02* Y4455D01* X7950Y4489D02* X7943Y4495D01* X7950Y4502D01* X7957Y4495D01* X7950Y4489D01* X7957Y4455D02* X7950Y4462D01* X7910D01* X7903Y4455D01* Y4462D02* X7957Y4422D01* Y4429D02* X7950Y4422D01* X7910D01* X7903Y4429D01* Y4455D01* X7957Y4529D02* X7903Y4569D01* X7910D02* X7950D01* X7957Y4562D01* Y4535D01* X7950Y4529D01* X7910D01* X7903Y4535D01* Y4562D01* X7910Y4569D01* X7957Y4582D02* X7903Y4622D01* X7910D02* X7950D01* X7957Y4615D01* Y4589D01* X7950Y4582D01* X7910D01* X7903Y4589D01* Y4615D01* X7910Y4622D01* X7923Y4649D02* X7930Y4655D01* X7923Y4662D01* Y4669D01* X7930Y4675D01* X7957D01* Y4655D02* X7930D01* X7923Y4649D02* Y4642D01* X7930Y4635D01* X7923D02* X7957D01* X7930Y4689D02* X7923Y4695D01* Y4702D02* X7930Y4709D01* X7923Y4715D01* X7930Y4709D02* X7957D01* Y4689D02* X7923D01* Y4695D02* Y4702D01* Y4715D02* Y4722D01* X7930Y4729D01* X7957D01* X8047D02* X8020D01* X8013Y4722D01* Y4715D01* Y4702D02* X8020Y4709D01* X8013Y4715D01* X8020Y4709D02* X8047D01* X8013Y4702D02* Y4695D01* X8020Y4689D01* X8013D02* X8047D01* Y4675D02* X8020D01* X8013Y4669D01* Y4662D01* X8020Y4655D01* X8047D02* X8020D01* X8013Y4649D01* Y4642D01* X8020Y4635D01* X8013D02* X8047D01* D013* X3906Y5967D02* X3928Y5989D01* Y5900D01* X3894D02* X3961D01* X3983Y5911D02* X3994Y5900D01* X4039D01* X4050Y5911D01* Y5933D01* X4039Y5944D01* X3994D01* X3983Y5933D01* Y5911D02* Y5978D01* X3994Y5989D01* X4039D01* X4050Y5978D01* X4083Y5900D02* X4072Y5911D01* Y5978D01* X4083Y5989D01* X4128D01* X4139Y5978D01* Y5911D01* X4128Y5900D01* X4083D01* X4072D02* X4139Y5989D01* X4194Y5900D02* X4183Y5911D01* X4194Y5922D01* X4206Y5911D01* X4194Y5900D01* X4250Y5911D02* Y5978D01* X4261Y5989D01* X4306D01* X4317Y5978D01* Y5911D01* X4306Y5900D01* X4261D01* X4250Y5911D01* Y5900D02* X4317Y5989D01* X4339Y5911D02* Y5978D01* X4350Y5989D01* X4394D01* X4406Y5978D01* Y5911D01* X4394Y5900D01* X4350D01* X4339Y5911D01* Y5900D02* X4406Y5989D01* X4428Y5900D02* Y5956D01* Y5944D02* X4439Y5956D01* X4450D01* X4461Y5944D01* Y5900D01* X4494D02* Y5944D01* X4483Y5956D01* X4472D01* X4461Y5944D01* X4517Y5900D02* Y5956D01* Y5944D02* X4528Y5956D01* X4539D01* X4550Y5944D01* X4561Y5956D01* X4550Y5944D02* Y5900D01* X4583D02* Y5944D01* X4572Y5956D01* X4561D01* X4639Y5922D02* X4650Y5911D01* X4639Y5900D01* X4628Y5911D01* X4639Y5922D01* X4650Y5911D02* Y5900D01* X4639Y5878D01* X4939Y5989D02* X4872Y5900D01* Y5911D02* X4883Y5900D01* X4928D02* X4883D01* X4872Y5911D02* Y5978D01* X4817D02* Y5911D01* X4783Y5944D02* X4850D01* X4872Y5978D02* X4883Y5989D01* X4928D01* X4939Y5978D01* Y5911D01* X4928Y5900D01* X4961D02* X5028Y5989D01* X5050Y5944D02* X5117D01* X5139Y5978D02* X5150Y5989D01* X5194D01* X5206Y5978D01* X5139D02* Y5911D01* X5150Y5900D01* X5194D02* X5206Y5911D01* Y5978D01* Y5989D02* X5139Y5900D01* X5150D02* X5194D01* X5261D02* X5272Y5911D01* X5261Y5922D01* X5250Y5911D01* X5261Y5900D01* X5317Y5911D02* X5328Y5900D01* X5372D01* X5383Y5911D01* Y5933D01* X5361Y5944D01* X5339D01* X5361D02* X5383Y5956D01* Y5978D01* X5372Y5989D01* X5328D01* X5317Y5978D01* X8817Y3694D02* X8839Y3672D01* X8750D01* Y3706D02* Y3639D01* X8761Y3617D02* X8828D01* X8839Y3606D01* Y3561D01* X8828Y3550D01* X8761D01* X8750Y3561D01* Y3606D01* X8761Y3617D01* X8750D02* X8839Y3550D01* X8761Y3528D02* X8828D01* X8839Y3517D01* Y3472D01* X8828Y3461D01* X8761D01* X8750Y3472D01* Y3517D01* X8761Y3528D01* X8750D02* X8839Y3461D01* X8761Y3417D02* X8750Y3406D01* X8761Y3394D01* X8772Y3406D01* X8761Y3417D01* Y3350D02* X8828D01* X8839Y3339D01* Y3294D01* X8828Y3261D02* X8839Y3250D01* Y3206D01* X8806Y3161D02* Y3150D01* X8794Y3139D02* X8806Y3128D01* Y3117D01* X8794Y3106D01* X8750D01* Y3139D02* X8794D01* X8806Y3150D01* Y3161D02* X8794Y3172D01* X8806D02* X8750D01* Y3261D02* X8839Y3194D01* Y3206D02* X8828Y3194D01* X8761D01* X8750Y3206D01* Y3250D01* X8761Y3261D01* X8828D01* X8839Y3283D02* X8750Y3350D01* X8761D02* X8750Y3339D01* Y3294D01* X8761Y3283D01* X8828D01* X8839Y3294D01* X8806Y3061D02* X8794Y3050D01* X8750D01* Y3083D02* X8806D01* X8794D02* X8806Y3072D01* Y3061D01* X8794Y3050D02* X8806Y3039D01* Y3028D01* X8794Y3017D01* X8750D01* X8728Y2961D02* X8750Y2950D01* X8761D01* X8750Y2961D01* X8761Y2972D01* X8772Y2961D01* X8761Y2950D01* X8794Y2817D02* Y2750D01* X8828Y2783D02* X8761D01* Y2728D02* X8828D01* X8839Y2717D01* Y2661D02* X8750Y2728D01* X8761D02* X8750Y2717D01* Y2672D01* X8761Y2661D01* X8839Y2717D02* Y2672D01* X8828Y2661D01* X8761D01* X8750Y2639D02* X8839Y2572D01* X8750Y2461D02* X8839Y2394D01* Y2406D02* X8828Y2394D01* X8761D01* X8750Y2406D01* Y2450D01* X8761Y2461D01* X8794Y2550D02* Y2483D01* X8761Y2461D02* X8828D01* X8839Y2450D01* Y2406D01* X8761Y2328D02* X8772Y2339D01* X8761Y2350D01* X8750Y2339D01* X8761Y2328D01* Y2283D02* X8750Y2272D01* Y2228D01* X8761Y2217D01* X8783D01* X8794Y2239D01* Y2261D01* Y2239D02* X8806Y2217D01* X8828D01* X8839Y2228D01* Y2272D01* X8828Y2283D01* D044* X2148Y4773D02* D03* X2092Y4767D02* D03* X2014Y4651D02* D03* X2020Y4619D02* D03* X2040Y4583D02* D03* X1864Y4648D02* D03* X1935Y4647D02* D03* X1931Y4588D02* D03* X1851Y4548D02* D03* X1852Y4510D02* D03* Y4473D02* D03* X1950Y4222D02* D03* Y4156D02* D03* X2018Y4045D02* D03* X2061Y4142D02* D03* X2124Y4218D02* D03* X2119Y4359D02* D03* X2223Y4425D02* D03* X2580Y4311D02* D03* X2511Y4345D02* D03* X2514Y4265D02* D03* X2581Y4227D02* D03* X2683Y4228D02* D03* X2684Y4304D02* D03* X2725Y4434D02* D03* X2727Y4465D02* D03* X2815Y4531D02* D03* X2813Y4568D02* D03* X2812Y4611D02* D03* X2787Y4669D02* D03* X2761Y4623D02* D03* X2712D02* D03* X2662Y4666D02* D03* X2537Y4675D02* D03* X2786Y4848D02* D03* X2853Y4849D02* D03* X2896Y4847D02* D03* X2937Y4844D02* D03* X2987D02* D03* X3037D02* D03* X3087D02* D03* X3137D02* D03* X3199Y4847D02* D03* X3263Y4848D02* D03* X3322Y4849D02* D03* X3410Y4848D02* D03* X3462Y4844D02* D03* X3361Y4671D02* D03* X3331Y4670D02* D03* X3286Y4659D02* D03* X3250Y4646D02* D03* X3236Y4673D02* D03* X3162Y4676D02* D03* X3112Y4673D02* D03* X3062Y4676D02* D03* X3034Y4657D02* D03* X3048Y4538D02* D03* Y4498D02* D03* X3050Y4328D02* D03* X3112Y4199D02* D03* X3109Y4165D02* D03* X3202D02* D03* Y4213D02* D03* X3243Y4238D02* D03* X3251Y4089D02* D03* X3297Y4095D02* D03* X3347Y3943D02* D03* X3286Y3939D02* D03* X3244Y3894D02* D03* X3246Y3815D02* D03* X3267Y3788D02* D03* X3198Y3837D02* D03* X3145Y3838D02* D03* X3097D02* D03* X3045D02* D03* X3191Y3949D02* D03* X3195Y3896D02* D03* X3146Y3895D02* D03* X3105Y3946D02* D03* X3055D02* D03* Y3995D02* D03* X2930Y3929D02* D03* X2949Y3901D02* D03* X3003Y3945D02* D03* X3005Y3995D02* D03* X2997Y4044D02* D03* X2954Y4046D02* D03* X2952Y3996D02* D03* X2945Y4089D02* D03* X2969Y4108D02* D03* X3025Y4130D02* D03* X2934Y4231D02* D03* X2902Y4301D02* D03* X2871Y4302D02* D03* X2883Y4465D02* D03* X2940Y4479D02* D03* X2906Y4532D02* D03* X2873D02* D03* X2893Y4667D02* D03* X2929Y4657D02* D03* X2962Y4627D02* D03* X3012D02* D03* X2508Y4117D02* D03* X2608Y4118D02* D03* X2658Y4119D02* D03* X2689Y4063D02* D03* X2736Y4010D02* D03* X2804Y4013D02* D03* X2871Y3952D02* D03* X2870Y3892D02* D03* X2801Y3891D02* D03* X2743Y3892D02* D03* X2706Y3773D02* D03* X2732Y3750D02* D03* X2764Y3721D02* D03* X2733Y3657D02* D03* X2778Y3579D02* D03* X2819Y3537D02* D03* X2818Y3477D02* D03* X2819Y3507D02* D03* X2745Y3506D02* D03* X2709Y3547D02* D03* X2746Y3428D02* D03* X2745Y3389D02* D03* X2709D02* D03* X2710Y3347D02* D03* X2666Y3349D02* D03* X2667Y3388D02* D03* X2628Y3387D02* D03* X2629Y3430D02* D03* Y3468D02* D03* X2664D02* D03* X2667Y3430D02* D03* X2706Y3467D02* D03* X2672Y3506D02* D03* X2631Y3510D02* D03* X2556Y3504D02* D03* X2592Y3505D02* D03* X2587Y3467D02* D03* X2556Y3464D02* D03* X2515Y3462D02* D03* X2514Y3424D02* D03* Y3387D02* D03* X2550Y3390D02* D03* X2556Y3425D02* D03* X2587Y3429D02* D03* X2590Y3351D02* D03* X2589Y3308D02* D03* X2588Y3272D02* D03* X2630Y3271D02* D03* X2672Y3269D02* D03* X2714Y3268D02* D03* X2710Y3304D02* D03* X2746Y3310D02* D03* X2748Y3268D02* D03* X2742Y3226D02* D03* Y3188D02* D03* X2743Y3151D02* D03* Y3109D02* D03* X2745Y3074D02* D03* X2718Y2979D02* D03* X2636Y2978D02* D03* X2585Y2979D02* D03* X2555Y2912D02* D03* X2570Y2867D02* D03* X2698Y2784D02* D03* X2757D02* D03* X2788D02* D03* X2825D02* D03* X2975Y2835D02* D03* X3007Y2841D02* D03* X3030Y2878D02* D03* X3060Y2855D02* D03* X3062Y2786D02* D03* X3103Y2845D02* D03* X3121Y2869D02* D03* X3192Y2852D02* D03* X3235Y2905D02* D03* X3278Y2961D02* D03* Y2839D02* D03* X3291Y2882D02* D03* X3360Y2847D02* D03* X3394Y2886D02* D03* X3367Y2919D02* D03* X3426Y2827D02* D03* X3451Y2845D02* D03* X3476Y2828D02* D03* X3531Y2784D02* D03* X3530Y2737D02* D03* X3525Y2697D02* D03* X3562Y2688D02* D03* X3659Y3191D02* D03* X3601Y3154D02* D03* X3592Y3232D02* D03* X3594Y3286D02* D03* X3644D02* D03* X3696D02* D03* X3745Y3285D02* D03* X3864Y3235D02* D03* X3875Y3169D02* D03* X3981Y3176D02* D03* X4004Y3122D02* D03* X3868Y3112D02* D03* X3788Y3128D02* D03* X3688Y3027D02* D03* X3628Y2967D02* D03* X3492Y2978D02* D03* X3413Y3035D02* D03* X3326D02* D03* X3276Y3033D02* D03* X3371Y3139D02* D03* X3423Y3205D02* D03* X3469D02* D03* X3512D02* D03* X3542Y3554D02* D03* X3548Y3587D02* D03* X3591Y3589D02* D03* Y3548D02* D03* Y3497D02* D03* X3545Y3485D02* D03* Y3440D02* D03* X3590D02* D03* X3595Y3384D02* D03* X3590Y3341D02* D03* X3541Y3340D02* D03* X3545Y3386D02* D03* X3393Y3343D02* D03* X3351D02* D03* X3293Y3339D02* D03* X3247Y3340D02* D03* X3287Y3293D02* D03* X3245Y3292D02* D03* X3196Y3296D02* D03* X3146Y3286D02* D03* X3174Y3231D02* D03* X3202Y3217D02* D03* X3159Y3138D02* D03* X3119Y2969D02* D03* X3098Y3029D02* D03* X3123Y3046D02* D03* X3053Y3031D02* D03* X2985Y3039D02* D03* X2947Y2928D02* D03* X2875Y2885D02* D03* Y2834D02* D03* X2829Y2859D02* D03* X2875Y2785D02* D03* X2921Y2779D02* D03* X2925Y2735D02* D03* X2872Y2732D02* D03* X2922Y2682D02* D03* X2974Y2686D02* D03* X2977Y2732D02* D03* X3041Y2687D02* D03* X3067Y2643D02* D03* X3020Y2636D02* D03* X2971Y2585D02* D03* X2875Y2636D02* D03* X2823Y2634D02* D03* X2824Y2685D02* D03* X2761Y2681D02* D03* X2699Y2671D02* D03* X2599Y2694D02* D03* X2600Y2658D02* D03* X2598Y2623D02* D03* X2599Y2534D02* D03* X2603Y2472D02* D03* X2601Y2427D02* D03* X2604Y2393D02* D03* X2671Y2248D02* D03* X2670Y2280D02* D03* X2671Y2311D02* D03* X2673Y2342D02* D03* X2693Y2387D02* D03* X2691Y2462D02* D03* X2703Y2522D02* D03* X2704Y2555D02* D03* X2396Y2588D02* D03* X2363Y2589D02* D03* X2350Y2617D02* D03* X2351Y2680D02* D03* X2281Y2660D02* D03* X2219Y2592D02* D03* X2181D02* D03* X2087Y2585D02* D03* X2093Y2676D02* D03* X2236Y2788D02* D03* X2178Y2786D02* D03* X2202Y2890D02* D03* X2261Y2894D02* D03* X2260Y2965D02* D03* X2224Y3044D02* D03* X2190Y3009D02* D03* X2131Y3010D02* D03* X2102Y2896D02* D03* X2104Y2818D02* D03* X2026Y2841D02* D03* X2039Y2790D02* D03* X1991Y2780D02* D03* X1861Y2625D02* D03* X1860Y2657D02* D03* X1832Y2771D02* D03* X1784Y2778D02* D03* X1788Y2820D02* D03* X1689Y2381D02* D03* X1738Y2507D02* D03* X1773Y2547D02* D03* X1825Y2540D02* D03* X1901Y2550D02* D03* X1902Y2484D02* D03* X1904Y2445D02* D03* X1902Y2413D02* D03* X1868Y2348D02* D03* X1906Y2350D02* D03* X1903Y2312D02* D03* X1894Y2250D02* D03* X1896Y2219D02* D03* X1937Y2156D02* D03* X1973Y2094D02* D03* X1902Y2092D02* D03* X2013Y2094D02* D03* X2032Y2183D02* D03* X2030Y2222D02* D03* X1999D02* D03* X1998Y2292D02* D03* X1990Y2335D02* D03* X2080Y2428D02* D03* X2084Y2309D02* D03* X2086Y2252D02* D03* X2154Y2211D02* D03* X2213Y2184D02* D03* X2166Y2082D02* D03* X2127Y2083D02* D03* X2280Y2095D02* D03* X2327Y2096D02* D03* X2377Y2061D02* D03* X2374Y2095D02* D03* X2413Y2093D02* D03* X2505Y2091D02* D03* X2440Y2024D02* D03* X2409Y1991D02* D03* X2446Y1961D02* D03* X2327Y1830D02* D03* X2265Y1915D02* D03* X2201Y1916D02* D03* X2188Y1812D02* D03* X2187Y1762D02* D03* Y1712D02* D03* Y1662D02* D03* X2130Y1679D02* D03* X2051Y1736D02* D03* X2091Y1756D02* D03* X2093Y1834D02* D03* X2027Y1915D02* D03* X1929Y1929D02* D03* X1877Y1915D02* D03* X1825Y1920D02* D03* X1854Y1876D02* D03* X1878Y1848D02* D03* X1646Y1817D02* D03* X1692Y1826D02* D03* X1698Y1788D02* D03* X1781Y1918D02* D03* X1677Y2025D02* D03* X2212Y2249D02* D03* X2277D02* D03* X2280Y2212D02* D03* X2303Y2180D02* D03* X2332Y2184D02* D03* X2385Y2187D02* D03* X2386Y2243D02* D03* X2304Y2311D02* D03* X2305Y2356D02* D03* X2329Y2405D02* D03* X2225Y2427D02* D03* X2312Y2507D02* D03* X2381Y2474D02* D03* X2428Y2482D02* D03* X2449Y2441D02* D03* X2478Y2422D02* D03* X2504Y2399D02* D03* X2459Y2378D02* D03* X2458Y2345D02* D03* Y2311D02* D03* X2495Y2284D02* D03* X2503Y2314D02* D03* Y2344D02* D03* X2479Y2248D02* D03* X2501Y2225D02* D03* X2481Y2482D02* D03* X2482Y2531D02* D03* X2444Y2530D02* D03* X2447Y2564D02* D03* X2455Y2593D02* D03* X2486Y2681D02* D03* X2494Y2639D02* D03* X2461Y2637D02* D03* X2427Y2639D02* D03* X2418Y2681D02* D03* X2463Y2790D02* D03* X2497D02* D03* X2522Y2857D02* D03* X2500Y2899D02* D03* X2473Y2873D02* D03* X2441Y2903D02* D03* X2411Y2885D02* D03* X2397Y2982D02* D03* X2445Y2980D02* D03* X2468Y3048D02* D03* X2530Y3047D02* D03* X2561Y3053D02* D03* X2546Y3079D02* D03* X2549Y3114D02* D03* X2470D02* D03* X2471Y3154D02* D03* X2274Y3153D02* D03* X2311Y3114D02* D03* X2376Y3064D02* D03* X2391Y3115D02* D03* X2354Y3114D02* D03* Y3153D02* D03* X2390Y3193D02* D03* X2433Y3231D02* D03* X2435Y3265D02* D03* X2391D02* D03* X2354Y3231D02* D03* X2356Y3265D02* D03* X2312Y3272D02* D03* X2276Y3311D02* D03* X2277Y3349D02* D03* X2311Y3389D02* D03* X2356Y3388D02* D03* X2391Y3391D02* D03* Y3428D02* D03* X2357Y3424D02* D03* Y3345D02* D03* X2391D02* D03* Y3311D02* D03* X2357Y3308D02* D03* X2312Y3469D02* D03* X2278Y3463D02* D03* X2273Y3547D02* D03* X2318Y3578D02* D03* X2333Y3637D02* D03* X2272Y3631D02* D03* X2119Y3641D02* D03* X2117Y3518D02* D03* X2118Y3483D02* D03* X2119Y3431D02* D03* Y3364D02* D03* X2396Y3638D02* D03* X2454D02* D03* X2485Y3626D02* D03* X2551Y3582D02* D03* X2550Y3548D02* D03* X2512Y3547D02* D03* X2470Y3545D02* D03* X2472Y3507D02* D03* X2433D02* D03* X2390D02* D03* X2357Y3502D02* D03* Y3466D02* D03* X2390Y3468D02* D03* X2435Y3464D02* D03* X2471Y3463D02* D03* X2472Y3424D02* D03* X2435D02* D03* Y3387D02* D03* X2472D02* D03* X2514Y3308D02* D03* Y3345D02* D03* X2472D02* D03* X2438Y3344D02* D03* Y3307D02* D03* X2472Y3308D02* D03* Y3263D02* D03* Y3230D02* D03* X2514Y3236D02* D03* X2547Y3191D02* D03* X2589Y3194D02* D03* X2591Y3227D02* D03* X2629D02* D03* Y3192D02* D03* X2672Y3226D02* D03* Y3191D02* D03* X2673Y3147D02* D03* X2672Y3111D02* D03* Y3069D02* D03* X2617Y3067D02* D03* X2629Y3114D02* D03* Y3152D02* D03* X2587D02* D03* X2787Y3115D02* D03* X2786Y3158D02* D03* X2822Y3199D02* D03* X2805Y3229D02* D03* X2812Y3271D02* D03* X2806Y3313D02* D03* X2899Y3410D02* D03* X2905Y3440D02* D03* X2899Y3471D02* D03* X2898Y3505D02* D03* X2901Y3537D02* D03* X2947Y3585D02* D03* X2996D02* D03* X3047D02* D03* X3096D02* D03* X3162Y3641D02* D03* X3185Y3596D02* D03* X3209Y3622D02* D03* X3251Y3621D02* D03* X3282Y3622D02* D03* X3344Y3602D02* D03* X3392Y3604D02* D03* X3441D02* D03* X3445Y3670D02* D03* Y3719D02* D03* X3395D02* D03* X3394Y3670D02* D03* X3345Y3672D02* D03* X3342Y3719D02* D03* X3288D02* D03* X3206Y3720D02* D03* X3248Y3486D02* D03* X3293D02* D03* X3288Y3442D02* D03* X3354D02* D03* X3396D02* D03* X3387Y3489D02* D03* X3440Y3484D02* D03* X3442Y3442D02* D03* X3491Y3440D02* D03* X3500Y3383D02* D03* X3491Y3340D02* D03* X3498Y3286D02* D03* X3443D02* D03* X3397Y3280D02* D03* X3441Y3344D02* D03* X3446Y3386D02* D03* X3393D02* D03* X3350Y3387D02* D03* X3290Y3390D02* D03* X3245D02* D03* X3197Y3386D02* D03* X3192Y3340D02* D03* X3144D02* D03* X3113Y3242D02* D03* X3092Y3220D02* D03* X3061Y3219D02* D03* X3003Y3163D02* D03* X2955Y3210D02* D03* X2994Y3286D02* D03* X3196Y3487D02* D03* X3148Y3485D02* D03* X3140Y3442D02* D03* X3089Y3443D02* D03* X3097Y3485D02* D03* X3009Y3443D02* D03* X3051D02* D03* X3043Y3494D02* D03* X2994Y3531D02* D03* X3007Y3495D02* D03* X2965Y3492D02* D03* X2892Y3628D02* D03* X2896Y3658D02* D03* X2939Y3669D02* D03* X2954Y3643D02* D03* X2992Y3640D02* D03* X2998Y3684D02* D03* X3047D02* D03* Y3640D02* D03* X3092D02* D03* X3095Y3684D02* D03* X3133Y3744D02* D03* X3093Y3747D02* D03* X3047Y3740D02* D03* X2992D02* D03* X2951Y3742D02* D03* X2882Y3779D02* D03* X2855Y3758D02* D03* X2822Y3779D02* D03* X2674Y3743D02* D03* X2638Y3770D02* D03* X2584Y3773D02* D03* X2615Y3742D02* D03* X2610Y3709D02* D03* X2612Y3651D02* D03* X2509Y3719D02* D03* X2555Y3742D02* D03* X2532Y3776D02* D03* X2481D02* D03* X2525Y3938D02* D03* X2397Y3955D02* D03* X2360Y3934D02* D03* X2335Y3963D02* D03* X2307Y3934D02* D03* X2273Y3962D02* D03* X2036Y3887D02* D03* X1926Y3896D02* D03* X1809Y3776D02* D03* X1777Y3745D02* D03* X1729Y3706D02* D03* X1978Y1562D02* D03* X2015Y1467D02* D03* X1970Y1398D02* D03* X2013Y1332D02* D03* X2187Y1381D02* D03* X2189Y1345D02* D03* X2186Y1283D02* D03* X2091Y1245D02* D03* X2188Y1243D02* D03* X2164Y1157D02* D03* X2315Y1193D02* D03* X2326Y1277D02* D03* X2314Y1312D02* D03* X2337Y1362D02* D03* X2315Y1413D02* D03* X2314Y1462D02* D03* X2168Y1466D02* D03* X2187Y1512D02* D03* Y1562D02* D03* X2188Y1612D02* D03* X2523Y1644D02* D03* X2563Y1625D02* D03* X2555Y1589D02* D03* X2473Y1462D02* D03* X2471Y1512D02* D03* X2468Y1562D02* D03* X2467Y1612D02* D03* X2469Y1661D02* D03* X2470Y1712D02* D03* X2471Y1762D02* D03* X2518Y1841D02* D03* X2564Y1816D02* D03* X2625Y1862D02* D03* X2778Y1887D02* D03* X2825Y1934D02* D03* X2821Y1982D02* D03* X2770Y1980D02* D03* X2771Y2032D02* D03* X2707Y2012D02* D03* X2876Y1831D02* D03* X2875Y1785D02* D03* X2822Y1780D02* D03* X2777D02* D03* X2735Y1752D02* D03* X2767Y1679D02* D03* X2823Y1726D02* D03* X2874Y1727D02* D03* X2927Y1724D02* D03* X2910Y1671D02* D03* X2861Y1669D02* D03* X3083Y1892D02* D03* X3126Y1887D02* D03* X3121Y1938D02* D03* X3177Y1937D02* D03* X3173Y1983D02* D03* X3227D02* D03* X3226Y2040D02* D03* X3224Y2109D02* D03* X3268Y2142D02* D03* X3272Y2188D02* D03* X3322D02* D03* X3318Y2142D02* D03* X3316Y2244D02* D03* X3322Y2288D02* D03* X3318Y2342D02* D03* X3268D02* D03* X3272Y2288D02* D03* X3266Y2244D02* D03* X3231Y2239D02* D03* X3130Y2184D02* D03* X2876Y2284D02* D03* X2923Y2233D02* D03* Y2134D02* D03* X2875D02* D03* X2876Y2085D02* D03* X2823Y2087D02* D03* X2921Y2032D02* D03* X2923Y1987D02* D03* X2873Y1983D02* D03* X2874Y1933D02* D03* X2919Y1883D02* D03* X2972Y1880D02* D03* X2973Y1838D02* D03* X2927Y1824D02* D03* Y1784D02* D03* X2972Y1780D02* D03* X2973Y1726D02* D03* X3051Y1666D02* D03* X3029Y1735D02* D03* X3027Y1780D02* D03* Y1824D02* D03* Y1880D02* D03* X3021Y1931D02* D03* X3071D02* D03* X3073Y1984D02* D03* X2977Y1986D02* D03* X3025Y2036D02* D03* X2977Y2086D02* D03* X3025Y2135D02* D03* X3026Y2184D02* D03* X3057Y2297D02* D03* X3067Y2343D02* D03* Y2393D02* D03* Y2443D02* D03* Y2493D02* D03* X3093Y2535D02* D03* X3064Y2544D02* D03* X3080Y2583D02* D03* X3122Y2642D02* D03* X3126Y2687D02* D03* X3132Y2728D02* D03* X3175Y2726D02* D03* X3219Y2782D02* D03* X3277Y2733D02* D03* X3276Y2684D02* D03* X3229Y2682D02* D03* X3279Y2639D02* D03* X3324Y2627D02* D03* X3335Y2586D02* D03* X3266Y2532D02* D03* X3221Y2530D02* D03* X3232Y2592D02* D03* X3148Y2533D02* D03* X3150Y2501D02* D03* X3176Y2516D02* D03* Y2486D02* D03* X3161Y2460D02* D03* X3379Y2685D02* D03* X3380Y2730D02* D03* X3425Y2736D02* D03* X3428Y2690D02* D03* X3421Y2640D02* D03* X3379Y2633D02* D03* X3475Y2645D02* D03* X3472Y2602D02* D03* X3533Y2539D02* D03* X3482D02* D03* X3433Y2537D02* D03* X3413Y2467D02* D03* X3478Y2430D02* D03* X3667Y2343D02* D03* X3571Y2342D02* D03* X3627Y2411D02* D03* X3632Y2439D02* D03* X3573Y2436D02* D03* X3552Y2459D02* D03* X3633Y2493D02* D03* X3614Y2524D02* D03* X3583Y2539D02* D03* X3625Y2597D02* D03* X3623Y2635D02* D03* X3674Y2733D02* D03* X3767Y2727D02* D03* X3817Y2543D02* D03* Y2348D02* D03* X3725Y2247D02* D03* X3767Y2193D02* D03* X3817D02* D03* X3767Y2092D02* D03* X3817D02* D03* X3866D02* D03* X3918D02* D03* X3924Y2035D02* D03* X3830Y1938D02* D03* X3821Y1882D02* D03* X3876Y1893D02* D03* X3925Y1947D02* D03* X3872Y1993D02* D03* X3874Y2035D02* D03* X3826D02* D03* X3812Y1993D02* D03* X3767Y1994D02* D03* X3770Y1940D02* D03* Y1888D02* D03* X3767Y1843D02* D03* X3965Y1802D02* D03* X3987Y1781D02* D03* X4008Y1759D02* D03* X3917Y1693D02* D03* X3867Y1743D02* D03* X3824Y1736D02* D03* X3717Y1743D02* D03* X3621Y1789D02* D03* X3623Y1831D02* D03* X3627Y1893D02* D03* X3633Y1943D02* D03* X3583D02* D03* X3675Y1935D02* D03* X3667Y1993D02* D03* X3633Y2093D02* D03* Y2143D02* D03* X3577Y2141D02* D03* X3544Y2137D02* D03* X3468Y2142D02* D03* X3472Y2188D02* D03* X3466Y2244D02* D03* X3472Y2288D02* D03* X3468Y2342D02* D03* X3418D02* D03* X3368Y2378D02* D03* X3422Y2288D02* D03* X3416Y2244D02* D03* X3366D02* D03* X3372Y2288D02* D03* Y2188D02* D03* X3368Y2142D02* D03* X3418D02* D03* X3422Y2188D02* D03* X3404Y1986D02* D03* X3434Y1990D02* D03* X3499Y2030D02* D03* X3533Y1943D02* D03* X3483D02* D03* X3433D02* D03* X3383Y1893D02* D03* X3381Y1789D02* D03* X3419Y1828D02* D03* X3489Y1738D02* D03* X3423Y1697D02* D03* X3350Y1684D02* D03* X3385Y1636D02* D03* X3390Y1579D02* D03* X3253Y1629D02* D03* X3277Y1648D02* D03* X3276Y1682D02* D03* X3275Y1735D02* D03* X3277Y1795D02* D03* Y1838D02* D03* X3184Y1843D02* D03* X3173Y1785D02* D03* X3130Y1800D02* D03* X3084Y1794D02* D03* X3075Y1735D02* D03* X3151Y1667D02* D03* X3229Y1604D02* D03* X3205Y1582D02* D03* X3231Y1446D02* D03* X3105D02* D03* X3010Y1443D02* D03* X2853D02* D03* X2764Y1441D02* D03* X2650Y1414D02* D03* X2618Y1435D02* D03* X2537Y1427D02* D03* X2471Y1412D02* D03* X2468Y1362D02* D03* X2472Y1312D02* D03* X2480Y1262D02* D03* X2476Y1210D02* D03* X2558Y1214D02* D03* X2596Y1288D02* D03* X2647Y1189D02* D03* X2711Y1237D02* D03* X2742Y1236D02* D03* X2774Y1240D02* D03* X2837Y1237D02* D03* X2868Y1238D02* D03* X2931Y1243D02* D03* X2994Y1233D02* D03* X3089Y1234D02* D03* X3215Y1235D02* D03* X3246Y1238D02* D03* X3278Y1239D02* D03* X3310Y1242D02* D03* X5018Y1446D02* D03* X5049Y1447D02* D03* X5081Y1439D02* D03* X5141Y1510D02* D03* X5253Y1622D02* D03* Y1697D02* D03* Y1772D02* D03* X5255Y1830D02* D03* X5220D02* D03* Y1865D02* D03* X5255D02* D03* X5270Y1910D02* D03* X5360D02* D03* Y1865D02* D03* X5498Y1960D02* D03* X5525D02* D03* X5522Y1916D02* D03* X5530Y1862D02* D03* X5573D02* D03* X5605D02* D03* X5597Y1916D02* D03* X5593Y1960D02* D03* X5620D02* D03* X5758Y1910D02* D03* Y1875D02* D03* X5790Y1795D02* D03* X5830D02* D03* X5870D02* D03* X5857Y1745D02* D03* X5825D02* D03* X5790D02* D03* X6021Y1490D02* D03* Y1536D02* D03* X5975D02* D03* Y1490D02* D03* X5921Y1536D02* D03* Y1490D02* D03* Y1436D02* D03* Y1390D02* D03* X5975D02* D03* Y1436D02* D03* X6021D02* D03* Y1390D02* D03* X6075Y1436D02* D03* X6121Y1490D02* D03* X6075D02* D03* Y1536D02* D03* Y1590D02* D03* Y1636D02* D03* X6021D02* D03* Y1590D02* D03* X5975D02* D03* X5876D02* D03* X5921D02* D03* Y1636D02* D03* X5877Y1662D02* D03* X5921Y1690D02* D03* Y1736D02* D03* X5975D02* D03* Y1690D02* D03* X6021D02* D03* Y1736D02* D03* X6126Y1791D02* D03* X6113Y1836D02* D03* X6075D02* D03* Y1790D02* D03* Y1736D02* D03* Y1690D02* D03* X6120Y1664D02* D03* X6331Y1654D02* D03* X6279Y1610D02* D03* X6359Y1541D02* D03* X6375Y1490D02* D03* X6421D02* D03* X6495Y1594D02* D03* X6475Y1490D02* D03* Y1436D02* D03* X6421D02* D03* X6375D02* D03* Y1390D02* D03* X6421D02* D03* X6375Y1336D02* D03* X6421D02* D03* X6475D02* D03* X6491Y1230D02* D03* X6525Y1188D02* D03* X6515Y1145D02* D03* X6628Y1147D02* D03* Y1177D02* D03* Y1207D02* D03* X6606Y1231D02* D03* X6571Y1340D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* X6725D02* D03* Y1440D02* D03* X6771D02* D03* Y1486D02* D03* X6825Y1440D02* D03* Y1486D02* D03* X6871D02* D03* Y1440D02* D03* X6825Y1340D02* D03* X6771Y1386D02* D03* X6725D02* D03* Y1340D02* D03* X6671Y1386D02* D03* Y1340D02* D03* X6625D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* X6671D02* D03* X6623Y1594D02* D03* Y1694D02* D03* Y1744D02* D03* X6753Y1775D02* D03* X6823Y1693D02* D03* X6871Y1686D02* D03* Y1640D02* D03* X6829Y1616D02* D03* Y1573D02* D03* X6871Y1586D02* D03* Y1540D02* D03* X6925Y1486D02* D03* X6971D02* D03* Y1440D02* D03* X6925D02* D03* Y1386D02* D03* Y1340D02* D03* X6971D02* D03* Y1386D02* D03* X7025Y1340D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* Y1540D02* D03* Y1586D02* D03* X6971D02* D03* Y1540D02* D03* X6925D02* D03* Y1586D02* D03* Y1640D02* D03* Y1686D02* D03* X6971D02* D03* Y1640D02* D03* X7025D02* D03* Y1686D02* D03* Y1740D02* D03* Y1786D02* D03* X6925Y1940D02* D03* Y1886D02* D03* X6871D02* D03* Y1940D02* D03* Y1986D02* D03* X6824Y2039D02* D03* Y2071D02* D03* X6871Y2086D02* D03* Y2140D02* D03* Y2186D02* D03* X6925Y2240D02* D03* Y2286D02* D03* X7025D02* D03* Y2340D02* D03* Y2386D02* D03* Y2440D02* D03* X6971D02* D03* X6925D02* D03* Y2386D02* D03* X6971D02* D03* X7104Y2357D02* D03* X7119Y2331D02* D03* X7104Y2305D02* D03* X7119Y2279D02* D03* X7104Y2212D02* D03* X7119Y2186D02* D03* X7104Y2160D02* D03* X7119Y2134D02* D03* X7104Y2066D02* D03* X7119Y2040D02* D03* X7104Y2014D02* D03* X7119Y1988D02* D03* X7104Y1920D02* D03* X7119Y1894D02* D03* X7104Y1868D02* D03* X7119Y1842D02* D03* X7104Y1775D02* D03* X7119Y1749D02* D03* X7104Y1723D02* D03* X7119Y1697D02* D03* X7104Y1629D02* D03* X7119Y1603D02* D03* X7104Y1577D02* D03* X7119Y1551D02* D03* X7186Y1465D02* D03* X7190Y1411D02* D03* X7136Y1407D02* D03* X7119Y1378D02* D03* X7104Y1352D02* D03* X7119Y1326D02* D03* X7104Y1300D02* D03* X7118Y1219D02* D03* X7089Y1238D02* D03* X7090Y1207D02* D03* X7089Y1130D02* D03* X6959D02* D03* Y1162D02* D03* Y1200D02* D03* X6937Y1231D02* D03* X6850D02* D03* X6829Y1207D02* D03* Y1177D02* D03* Y1147D02* D03* X7267Y1185D02* D03* X7274Y1234D02* D03* X7267Y1331D02* D03* X7258Y1417D02* D03* Y1449D02* D03* Y1480D02* D03* Y1512D02* D03* X7267Y1599D02* D03* Y1744D02* D03* Y1890D02* D03* Y2035D02* D03* Y2181D02* D03* Y2327D02* D03* Y2473D02* D03* Y2618D02* D03* X6970Y2865D02* D03* X6865D02* D03* X6761Y2917D02* D03* Y2955D02* D03* Y2991D02* D03* X6762Y3030D02* D03* X6719D02* D03* X6720Y2991D02* D03* X6725Y3105D02* D03* X6670D02* D03* X6620D02* D03* X6570D02* D03* X6671Y2991D02* D03* Y3030D02* D03* X6621D02* D03* Y2990D02* D03* Y2875D02* D03* X6671Y2876D02* D03* X6722Y2877D02* D03* X6760D02* D03* X6571Y3270D02* D03* X6570Y3230D02* D03* X6620D02* D03* X6621Y3270D02* D03* X6671D02* D03* X6670Y3230D02* D03* X6725D02* D03* X6726Y3270D02* D03* X6920Y3230D02* D03* X6921Y3270D02* D03* X6816D02* D03* X6776D02* D03* X6775Y3230D02* D03* X6815D02* D03* X6776Y3185D02* D03* Y3145D02* D03* X6775Y3105D02* D03* X6815D02* D03* X6865Y3030D02* D03* Y2990D02* D03* X6970D02* D03* Y3030D02* D03* X6920Y3105D02* D03* X7104Y3062D02* D03* X7119Y3036D02* D03* X7104Y3010D02* D03* X7119Y2984D02* D03* X7104Y3156D02* D03* X7119Y3130D02* D03* X7060Y3105D02* D03* X7061Y3145D02* D03* Y3185D02* D03* X7104Y3208D02* D03* X7060Y3230D02* D03* X7061Y3270D02* D03* X7119Y3275D02* D03* X7104Y3301D02* D03* X7119Y3327D02* D03* X7104Y3353D02* D03* X7120Y3428D02* D03* X7097Y3459D02* D03* X7113Y3487D02* D03* X7097Y3513D02* D03* X7104Y3543D02* D03* X7141Y3544D02* D03* X7119Y3644D02* D03* X7126Y3679D02* D03* X7119Y3712D02* D03* X7104Y3738D02* D03* X7119Y3764D02* D03* X7104Y3790D02* D03* X7119Y3858D02* D03* X7104Y3884D02* D03* X7119Y3910D02* D03* X7094Y3927D02* D03* X6910Y4005D02* D03* X6723Y3981D02* D03* X6576Y3943D02* D03* X6591Y3769D02* D03* X6644Y3681D02* D03* Y3649D02* D03* Y3619D02* D03* X6690Y3681D02* D03* X6691Y3649D02* D03* Y3618D02* D03* X6736D02* D03* X6735Y3649D02* D03* X6734Y3681D02* D03* X6741Y3737D02* D03* X6899Y3621D02* D03* Y3651D02* D03* Y3681D02* D03* Y3711D02* D03* Y3741D02* D03* X6852D02* D03* Y3710D02* D03* Y3680D02* D03* Y3650D02* D03* X6851Y3621D02* D03* X6850Y3471D02* D03* X7267Y3469D02* D03* Y3614D02* D03* Y3760D02* D03* Y3905D02* D03* Y4051D02* D03* Y4197D02* D03* Y4343D02* D03* Y4488D02* D03* Y4634D02* D03* X7244Y4764D02* D03* X7127D02* D03* X7110Y4681D02* D03* X7119Y4634D02* D03* X7042Y4718D02* D03* X7000D02* D03* X6955Y4717D02* D03* X6903Y4718D02* D03* X7049Y4850D02* D03* Y4888D02* D03* X7000D02* D03* Y4850D02* D03* X6950D02* D03* Y4888D02* D03* X6900D02* D03* Y4850D02* D03* X6850D02* D03* Y4888D02* D03* X6800D02* D03* Y4850D02* D03* X6750D02* D03* Y4888D02* D03* X6700D02* D03* Y4850D02* D03* X6656Y4849D02* D03* Y4889D02* D03* X6612Y4888D02* D03* Y4850D02* D03* X6613Y4643D02* D03* X6657D02* D03* X6700D02* D03* X6750D02* D03* X6873Y4557D02* D03* X6850Y4643D02* D03* X6800D02* D03* X6850Y4718D02* D03* X6800D02* D03* X6750D02* D03* X6700D02* D03* X6657D02* D03* X6613D02* D03* X6440Y4780D02* D03* X6322D02* D03* X6574Y4365D02* D03* X6704Y4282D02* D03* X6656Y4220D02* D03* X6752Y4189D02* D03* X6850Y4213D02* D03* X6854Y4272D02* D03* X6906Y4217D02* D03* X6976Y4323D02* D03* X6992Y4433D02* D03* X6991Y4592D02* D03* X7083Y4560D02* D03* X7104Y4519D02* D03* X7119Y4493D02* D03* X7104Y4467D02* D03* X7119Y4441D02* D03* X7104Y4373D02* D03* X7119Y4347D02* D03* X7104Y4321D02* D03* X7119Y4295D02* D03* X7117Y4244D02* D03* X7119Y4212D02* D03* X7143Y4126D02* D03* X7115Y4141D02* D03* X7104Y4112D02* D03* X7118Y4085D02* D03* X7104Y4058D02* D03* X7115Y4030D02* D03* X7267Y3323D02* D03* Y3177D02* D03* X7293Y3132D02* D03* X7267Y3031D02* D03* X7258Y2945D02* D03* X7189Y2952D02* D03* X7135Y2906D02* D03* X7189Y2889D02* D03* Y2843D02* D03* X7258Y2913D02* D03* Y2882D02* D03* Y2850D02* D03* X7267Y2764D02* D03* X7104Y2794D02* D03* X7119Y2768D02* D03* Y2716D02* D03* X7104Y2742D02* D03* X7074Y2744D02* D03* X7051Y2722D02* D03* X7052Y2692D02* D03* X6939Y2698D02* D03* X6885Y2696D02* D03* X6837Y2695D02* D03* X6781Y2693D02* D03* X6726Y2694D02* D03* X6672Y2702D02* D03* X6659Y2658D02* D03* X6672Y2573D02* D03* X6726Y2567D02* D03* X6781Y2565D02* D03* X6837D02* D03* X6885Y2564D02* D03* X6934D02* D03* X7018Y2569D02* D03* X7104Y2597D02* D03* Y2649D02* D03* X7119Y2623D02* D03* Y2571D02* D03* X7109Y2510D02* D03* X7120Y2482D02* D03* X7109Y2454D02* D03* X7119Y2425D02* D03* X6871Y1740D02* D03* Y1786D02* D03* X6925D02* D03* X6971D02* D03* Y1740D02* D03* X6925D02* D03* Y1840D02* D03* X6971D02* D03* X7025D02* D03* Y1886D02* D03* Y1940D02* D03* Y1986D02* D03* Y2040D02* D03* Y2086D02* D03* Y2186D02* D03* Y2140D02* D03* X6971D02* D03* X6925Y2086D02* D03* X6771Y2340D02* D03* Y2386D02* D03* X6725D02* D03* Y2340D02* D03* Y2286D02* D03* X6771D02* D03* X6825D02* D03* Y2340D02* D03* Y2386D02* D03* X6871D02* D03* Y2340D02* D03* Y2440D02* D03* X6825D02* D03* X6771D02* D03* Y2475D02* D03* X6726Y2473D02* D03* X6725Y2440D02* D03* X6571D02* D03* X6625D02* D03* X6671Y2386D02* D03* Y2340D02* D03* Y2286D02* D03* X6571D02* D03* X6502Y2231D02* D03* X6459D02* D03* X6475Y2290D02* D03* Y2336D02* D03* X6450Y2620D02* D03* Y2580D02* D03* X6500Y2540D02* D03* X6450D02* D03* Y2500D02* D03* X6475Y2436D02* D03* X6410Y2480D02* D03* X6370D02* D03* X6375Y2390D02* D03* Y2290D02* D03* X6321D02* D03* X6275D02* D03* X6221D02* D03* X6175D02* D03* Y2336D02* D03* X6075D02* D03* X6021Y2290D02* D03* X5975D02* D03* Y2336D02* D03* X5921Y2290D02* D03* Y2336D02* D03* Y2390D02* D03* X5975D02* D03* Y2436D02* D03* X6050Y2480D02* D03* Y2520D02* D03* Y2560D02* D03* X6100D02* D03* Y2520D02* D03* Y2480D02* D03* X6150D02* D03* X6195D02* D03* X6240D02* D03* X6280D02* D03* X6320D02* D03* Y2520D02* D03* X6280D02* D03* X6240D02* D03* Y2560D02* D03* X6280D02* D03* X6320D02* D03* X6363Y2634D02* D03* X6296D02* D03* X6182Y2787D02* D03* X5975Y2769D02* D03* X5625D02* D03* X5645Y2605D02* D03* X5690D02* D03* X5600D02* D03* X5450D02* D03* X5275Y2769D02* D03* X5215Y2605D02* D03* X5173Y2566D02* D03* X5009Y2434D02* D03* X4948Y2448D02* D03* X4939Y2354D02* D03* X4986D02* D03* Y2229D02* D03* X4939D02* D03* X4924Y2201D02* D03* X4800Y2223D02* D03* X4772D02* D03* X4743D02* D03* X4700D02* D03* X4672D02* D03* X4643D02* D03* X4604Y2159D02* D03* X4643Y2108D02* D03* X4671D02* D03* X4700D02* D03* X4743D02* D03* X4771D02* D03* X4800D02* D03* X4835Y2014D02* D03* X4804D02* D03* X4771D02* D03* X4646D02* D03* X4615D02* D03* X4770Y1905D02* D03* X4815D02* D03* X4860D02* D03* X4905D02* D03* X4945D02* D03* X5044Y1740D02* D03* X5150Y1830D02* D03* X5185D02* D03* Y1865D02* D03* X5150D02* D03* X5087Y2128D02* D03* X5124D02* D03* X5162D02* D03* X5240Y2220D02* D03* Y2255D02* D03* Y2290D02* D03* X5365Y2321D02* D03* X5315D02* D03* X5287Y2289D02* D03* Y2256D02* D03* Y2223D02* D03* X5315Y2189D02* D03* X5365D02* D03* X5415D02* D03* X5401Y2128D02* D03* X5437D02* D03* X5473D02* D03* X5493Y2223D02* D03* Y2256D02* D03* Y2289D02* D03* X5464Y2324D02* D03* X5415Y2321D02* D03* X5754Y2189D02* D03* X5704D02* D03* X5717Y2128D02* D03* X5681D02* D03* X5645D02* D03* X5654Y2189D02* D03* X5625Y2223D02* D03* Y2256D02* D03* Y2289D02* D03* X5654Y2321D02* D03* X5704D02* D03* X5754D02* D03* X5803Y2324D02* D03* X5832Y2289D02* D03* Y2256D02* D03* Y2223D02* D03* X5921Y2236D02* D03* Y2190D02* D03* X5975D02* D03* Y2236D02* D03* X6021D02* D03* Y2190D02* D03* X6075D02* D03* Y2236D02* D03* X6214Y2109D02* D03* X6135Y2077D02* D03* Y2033D02* D03* X6075Y2136D02* D03* Y2090D02* D03* Y2036D02* D03* Y1990D02* D03* Y1936D02* D03* Y1890D02* D03* X6021Y1936D02* D03* Y1890D02* D03* Y1836D02* D03* Y1790D02* D03* X5975D02* D03* Y1836D02* D03* X5921Y1790D02* D03* Y1836D02* D03* X5870Y1840D02* D03* X5855Y1875D02* D03* Y1910D02* D03* X5975Y1936D02* D03* Y1890D02* D03* X5921D02* D03* Y1936D02* D03* Y1990D02* D03* Y2036D02* D03* X5936Y2080D02* D03* X5975Y2090D02* D03* Y2136D02* D03* X5921D02* D03* X6021D02* D03* Y2090D02* D03* Y2036D02* D03* Y1990D02* D03* X5975D02* D03* Y2036D02* D03* X6037Y1066D02* D03* X6028Y1216D02* D03* X6145D02* D03* X6187Y1141D02* D03* X6341D02* D03* X6337Y1230D02* D03* X6236Y1340D02* D03* X6221Y1390D02* D03* X6275D02* D03* X6321D02* D03* X6275Y1436D02* D03* X6321D02* D03* Y1490D02* D03* X6275D02* D03* X6175D02* D03* X6121Y1336D02* D03* X6021D02* D03* X5975D02* D03* X5921D02* D03* X5864Y1269D02* D03* X5783Y1263D02* D03* X5736D02* D03* Y1139D02* D03* X5783D02* D03* X5530Y1380D02* D03* X5560D02* D03* X5588D02* D03* X5630D02* D03* X5660D02* D03* X5688D02* D03* Y1265D02* D03* X5658D02* D03* X5630D02* D03* X5588D02* D03* X5558D02* D03* X5530D02* D03* X5410Y1289D02* D03* X5392Y1263D02* D03* X5344D02* D03* X5392Y1139D02* D03* X5344D02* D03* X5262Y1146D02* D03* X5211Y1277D02* D03* X5204Y1213D02* D03* X5065Y1234D02* D03* X5033Y1236D02* D03* X5001Y1234D02* D03* X4845Y1233D02* D03* X4869Y1387D02* D03* X4860Y1446D02* D03* X4929Y1565D02* D03* X4874Y1572D02* D03* X4771Y1564D02* D03* X4682Y1572D02* D03* X4420Y1446D02* D03* X4514Y1445D02* D03* X4609D02* D03* X4704Y1446D02* D03* X4750Y1399D02* D03* X4793D02* D03* X4686Y1269D02* D03* X4687Y1235D02* D03* X4639Y1245D02* D03* X4593Y1233D02* D03* X4514Y1121D02* D03* X4502Y1238D02* D03* X4435Y1233D02* D03* X4404D02* D03* X4373D02* D03* X4340D02* D03* X4310Y1235D02* D03* X4246D02* D03* X4184Y1237D02* D03* X4151D02* D03* X4120D02* D03* X4105Y1316D02* D03* X4089Y1234D02* D03* X3994D02* D03* X3867Y1235D02* D03* X3804D02* D03* X3752Y1241D02* D03* X3744Y1190D02* D03* X3529Y1234D02* D03* X3498D02* D03* X3435Y1241D02* D03* X3404D02* D03* X3372Y1268D02* D03* Y1234D02* D03* X3341Y1242D02* D03* X3388Y1438D02* D03* X3441Y1423D02* D03* X3472Y1420D02* D03* X3555Y1408D02* D03* X3553Y1566D02* D03* X3522Y1564D02* D03* X3580Y1580D02* D03* X3607Y1565D02* D03* X3854Y1559D02* D03* X3821Y1445D02* D03* X3851Y1416D02* D03* X4010Y1446D02* D03* X4105Y1445D02* D03* X4136Y1560D02* D03* X4168Y1561D02* D03* X4199D02* D03* X4221Y1625D02* D03* X4231Y1560D02* D03* X4263Y1446D02* D03* X4294Y1563D02* D03* X4325D02* D03* X4356D02* D03* X4388D02* D03* X4390Y1625D02* D03* X4499Y1740D02* D03* X4491Y1871D02* D03* X4635Y1905D02* D03* X4680D02* D03* X4725D02* D03* X4252Y1975D02* D03* X4359Y2014D02* D03* X4281Y2108D02* D03* X4251D02* D03* X4223D02* D03* X4181D02* D03* X4151D02* D03* X4123D02* D03* X4058Y2161D02* D03* X4066Y2244D02* D03* X4021D02* D03* X3924Y2260D02* D03* X4021Y2339D02* D03* X4066D02* D03* X4147D02* D03* X4192D02* D03* X4234Y2354D02* D03* X4282D02* D03* X4123Y2223D02* D03* X4153D02* D03* X4181D02* D03* X4223D02* D03* X4253D02* D03* X4281D02* D03* X4401Y2203D02* D03* X4419Y2229D02* D03* X4467D02* D03* X4547Y2225D02* D03* X4595D02* D03* X4419Y2354D02* D03* X4467D02* D03* X4547Y2350D02* D03* X4595D02* D03* X4585Y2494D02* D03* X4634D02* D03* X4657Y2350D02* D03* X4705D02* D03* X4755Y2365D02* D03* X4800D02* D03* X4925Y2769D02* D03* X4701Y2806D02* D03* X4559Y2950D02* D03* X4376Y3057D02* D03* X4305Y3046D02* D03* X4241Y3112D02* D03* X4240Y3166D02* D03* X4304Y3196D02* D03* X4359Y3169D02* D03* X4369Y3218D02* D03* X4377Y3142D02* D03* X4380Y3270D02* D03* X4331Y3278D02* D03* X4302Y3265D02* D03* X4379Y3442D02* D03* X4365Y3415D02* D03* X4297Y3428D02* D03* X4334Y3386D02* D03* X4335Y3356D02* D03* X4381Y3342D02* D03* X4559Y3305D02* D03* X4247Y2869D02* D03* X4299Y2918D02* D03* X4355D02* D03* X4389Y2835D02* D03* X4432Y2688D02* D03* X4356D02* D03* X4325Y2691D02* D03* X4172Y2688D02* D03* X4121D02* D03* X4079D02* D03* X4066Y2816D02* D03* X4096Y2903D02* D03* X4069Y2917D02* D03* X4010Y2908D02* D03* X3974Y2918D02* D03* X3932Y2811D02* D03* X3891Y2920D02* D03* X3819D02* D03* X3847Y3039D02* D03* X3877D02* D03* X3907Y3041D02* D03* X3938Y3110D02* D03* X3996Y3093D02* D03* Y3044D02* D03* X4126Y3137D02* D03* Y3167D02* D03* Y3197D02* D03* X4122Y3240D02* D03* X3997Y3252D02* D03* Y3323D02* D03* X4122Y3318D02* D03* Y3385D02* D03* Y3467D02* D03* Y3531D02* D03* X3998Y3465D02* D03* X4001Y3383D02* D03* X3920Y3415D02* D03* X3855Y3367D02* D03* X3791Y3401D02* D03* X3792Y3445D02* D03* X3743Y3440D02* D03* X3748Y3486D02* D03* X3692Y3490D02* D03* X3698Y3441D02* D03* Y3396D02* D03* X3748Y3392D02* D03* X3747Y3340D02* D03* X3695Y3341D02* D03* X3646D02* D03* X3643Y3387D02* D03* X3647Y3441D02* D03* X3648Y3485D02* D03* Y3541D02* D03* X3703Y3553D02* D03* X3740Y3607D02* D03* X3647Y3640D02* D03* X3588Y3697D02* D03* X3523Y3765D02* D03* X3486Y3791D02* D03* X3425Y3798D02* D03* X3363Y3794D02* D03* X3645Y3797D02* D03* X3591Y3796D02* D03* X3596Y3896D02* D03* X3505D02* D03* X3493Y4043D02* D03* X3506Y3991D02* D03* X3546Y3997D02* D03* X3547Y4040D02* D03* X3548Y4085D02* D03* X3597Y4043D02* D03* X3641Y4091D02* D03* X3675Y4221D02* D03* X3799Y4134D02* D03* X3831D02* D03* X3872Y4138D02* D03* X3875Y4187D02* D03* X3841Y4186D02* D03* X3875Y4424D02* D03* X3843Y4422D02* D03* X3855Y4457D02* D03* X3805Y4529D02* D03* X3816Y4490D02* D03* X3697Y4416D02* D03* X3560Y4446D02* D03* X3480Y4308D02* D03* X3416Y4538D02* D03* X3438Y4561D02* D03* X3487Y4562D02* D03* X3537Y4595D02* D03* X3587Y4642D02* D03* X3612Y4616D02* D03* X3637Y4665D02* D03* X3662Y4629D02* D03* X3678Y4567D02* D03* X3712Y4638D02* D03* X3763Y4848D02* D03* X4081Y4187D02* D03* X4108Y4072D02* D03* X4037Y4068D02* D03* Y4027D02* D03* X3909Y3933D02* D03* X3879Y3930D02* D03* X3831Y4006D02* D03* X3799D02* D03* X3751Y4048D02* D03* X3698D02* D03* X3693Y3993D02* D03* X3696Y3938D02* D03* X3735Y3896D02* D03* X3796Y3912D02* D03* X3794Y3846D02* D03* X3827Y3844D02* D03* X3798Y3772D02* D03* X3793Y3718D02* D03* X3820Y3684D02* D03* X3806Y3613D02* D03* X3816Y3584D02* D03* X3995Y3605D02* D03* X3993Y3546D02* D03* X3955Y3558D02* D03* X3899Y3608D02* D03* X3941Y3623D02* D03* X3909Y3658D02* D03* X3938Y3771D02* D03* X3980Y3787D02* D03* X3979Y3830D02* D03* X3944Y3816D02* D03* X4126Y3848D02* D03* X4196Y3951D02* D03* X4266Y3852D02* D03* X4303Y3665D02* D03* X4295Y3563D02* D03* X4296Y3494D02* D03* X4354Y3486D02* D03* X4377Y3509D02* D03* X4380Y3592D02* D03* X4568Y3669D02* D03* X4559Y3700D02* D03* Y4050D02* D03* X4560Y4387D02* D03* X4193Y4780D02* D03* X4319D02* D03* X4577Y4717D02* D03* X4907D02* D03* X5250Y4721D02* D03* X5600D02* D03* X5950D02* D03* X5971Y4360D02* D03* X5880Y4224D02* D03* X5941Y4235D02* D03* X5944Y4185D02* D03* X6016Y4132D02* D03* X5943Y4130D02* D03* X5876Y4150D02* D03* X5730Y4187D02* D03* X5729Y4232D02* D03* X5629Y4233D02* D03* Y4195D02* D03* X5470Y4152D02* D03* X5369Y4188D02* D03* X5390Y4226D02* D03* X5284Y4188D02* D03* X5291Y4230D02* D03* X5206D02* D03* X5105Y4164D02* D03* X5109Y4090D02* D03* X4998Y3999D02* D03* Y3909D02* D03* X4992Y3803D02* D03* X5049Y3652D02* D03* X5091D02* D03* Y3557D02* D03* X5049D02* D03* X4992Y3478D02* D03* X5088Y3433D02* D03* X5188Y3478D02* D03* X5284Y3474D02* D03* X5286Y3546D02* D03* X5349Y3650D02* D03* Y3750D02* D03* X5305Y3819D02* D03* X5216Y3643D02* D03* X5218Y3699D02* D03* X5188Y3803D02* D03* X5142Y3909D02* D03* Y3999D02* D03* X5291Y3404D02* D03* X5252Y3336D02* D03* X5175Y3351D02* D03* X5091Y3322D02* D03* X5049D02* D03* X5175Y3207D02* D03* X5252Y3262D02* D03* X5378Y3258D02* D03* Y3300D02* D03* X5460Y3353D02* D03* X5542Y3300D02* D03* Y3258D02* D03* X5618Y3231D02* D03* X5692D02* D03* X6022Y3470D02* D03* X5979Y3472D02* D03* X5936Y3447D02* D03* X5881Y3442D02* D03* X5850Y3444D02* D03* X5763Y3498D02* D03* X5815Y3444D02* D03* X5770Y3389D02* D03* X5768Y3300D02* D03* Y3258D02* D03* X5827Y3128D02* D03* X5858Y3325D02* D03* X5947Y3300D02* D03* Y3258D02* D03* X6057Y3296D02* D03* X6054Y3359D02* D03* X6037Y3150D02* D03* X6099Y3154D02* D03* X6131Y3365D02* D03* X6123Y3420D02* D03* X5978Y3581D02* D03* X5948Y3565D02* D03* X5900Y3596D02* D03* X5879Y3689D02* D03* X5942Y3676D02* D03* X6019Y3664D02* D03* X6067Y3673D02* D03* X6079Y3732D02* D03* X6025Y3810D02* D03* X5975D02* D03* X5946Y3776D02* D03* X5838Y3847D02* D03* X5928Y3954D02* D03* X5974Y4010D02* D03* X6072Y3954D02* D03* D049* X1984Y3825D02* D03* Y3726D02* D03* X1886D02* D03* X1528Y1787D02* D03* X1606Y1748D02* D03* X1685D02* D03* X1764D02* D03* Y1669D02* D03* X1685D02* D03* X1606D02* D03* X1528Y1630D02* D03* X1921Y1748D02* D03* X1843D02* D03* Y1669D02* D03* X2327Y1069D02* D03* X4374D02* D03* X5120Y1340D02* D03* X5135Y2844D02* D03* X5085Y2894D02* D03* X5135Y2944D02* D03* X5185Y2894D02* D03* Y3094D02* D03* X5235Y3044D02* D03* X5185Y2994D02* D03* X5235Y2944D02* D03* X5285Y2994D02* D03* X5335Y3044D02* D03* X5285Y3094D02* D03* X5385D02* D03* X5435Y3044D02* D03* X5385Y2994D02* D03* X5335Y2944D02* D03* X5285Y2894D02* D03* X5235Y2844D02* D03* X5335D02* D03* X5385Y2894D02* D03* X5435Y2944D02* D03* X5485Y2994D02* D03* X5535Y3044D02* D03* X5485Y3094D02* D03* X5435Y2844D02* D03* X5485Y2894D02* D03* X5535Y2944D02* D03* X5585Y2894D02* D03* X5535Y2844D02* D03* X5635D02* D03* X5685Y2894D02* D03* X5635Y2944D02* D03* X5585Y2994D02* D03* X5635Y3044D02* D03* X5585Y3094D02* D03* X5685D02* D03* X5735Y3044D02* D03* X5685Y2994D02* D03* X5735Y2944D02* D03* Y2844D02* D03* X5785Y2894D02* D03* X5835Y2844D02* D03* X5935D02* D03* X5885Y2894D02* D03* X5935Y2944D02* D03* X5985Y2894D02* D03* X6035Y2844D02* D03* X6085Y2894D02* D03* X6135Y2944D02* D03* X6185Y2994D02* D03* X6235Y3044D02* D03* X6185Y3094D02* D03* X6085D02* D03* X6135Y3044D02* D03* X6085Y2994D02* D03* X6035Y2944D02* D03* X5985Y2994D02* D03* X6035Y3044D02* D03* X5985Y3094D02* D03* X5885D02* D03* X5935Y3044D02* D03* X5885Y2994D02* D03* X5835Y2944D02* D03* X5785Y2994D02* D03* X5835Y3044D02* D03* X5785Y3094D02* D03* X6135Y2844D02* D03* X6185Y2894D02* D03* X6235Y2944D02* D03* X6285Y2994D02* D03* X6335Y3044D02* D03* X6285Y3194D02* D03* X6335Y3244D02* D03* X6385Y3194D02* D03* X6435Y3144D02* D03* X6385Y3094D02* D03* X6435Y3044D02* D03* X6385Y2994D02* D03* X6335Y2944D02* D03* X6285Y2894D02* D03* X6235Y2844D02* D03* X6335D02* D03* X6385Y2894D02* D03* X6435Y2944D02* D03* Y2844D02* D03* X5645Y3406D02* D03* Y3456D02* D03* Y3506D02* D03* Y3556D02* D03* Y3606D02* D03* Y3656D02* D03* Y3706D02* D03* Y3756D02* D03* Y3806D02* D03* Y3856D02* D03* Y3906D02* D03* Y3956D02* D03* Y4006D02* D03* Y4056D02* D03* Y4106D02* D03* X5545D02* D03* Y4056D02* D03* Y4006D02* D03* Y3956D02* D03* Y3906D02* D03* Y3856D02* D03* Y3806D02* D03* Y3756D02* D03* Y3706D02* D03* Y3656D02* D03* Y3606D02* D03* Y3556D02* D03* Y3506D02* D03* Y3456D02* D03* X4885Y3094D02* D03* X4935Y3044D02* D03* X4985Y2994D02* D03* X5035Y3044D02* D03* X4985Y3094D02* D03* X5085D02* D03* X5135Y3044D02* D03* X5085Y2994D02* D03* X5035Y2944D02* D03* X4985Y2894D02* D03* X5035Y2844D02* D03* X4935D02* D03* X4885Y2894D02* D03* X4835Y2844D02* D03* X4935Y2944D02* D03* X4885Y2994D02* D03* X4835Y3044D02* D03* X4785Y2994D02* D03* X4835Y2944D02* D03* X4785Y2894D02* D03* X4735Y2844D02* D03* X4635Y2944D02* D03* X4685Y2894D02* D03* X4735Y2944D02* D03* X4685Y2994D02* D03* X4635Y3044D02* D03* Y3244D02* D03* X4685Y3194D02* D03* X4635Y3144D02* D03* X4735D02* D03* X4685Y3094D02* D03* X4735Y3044D02* D03* X4785Y3094D02* D03* X4835Y3144D02* D03* X4885Y3194D02* D03* X4785D02* D03* X4735Y3244D02* D03* X4685Y3294D02* D03* X4635Y3344D02* D03* X4685Y3394D02* D03* X4635Y3444D02* D03* Y3544D02* D03* X4685Y3594D02* D03* X4635Y3644D02* D03* X4735D02* D03* X4685Y3694D02* D03* X4735Y3744D02* D03* X4785Y3694D02* D03* X4835Y3644D02* D03* X4885Y3694D02* D03* X4785Y3594D02* D03* X4835Y3544D02* D03* X4885Y3594D02* D03* Y3494D02* D03* Y3394D02* D03* X4835Y3444D02* D03* X4785Y3494D02* D03* X4735Y3544D02* D03* X4685Y3494D02* D03* X4735Y3444D02* D03* X4785Y3394D02* D03* X4735Y3344D02* D03* X4785Y3294D02* D03* X4835Y3244D02* D03* X4885Y3294D02* D03* X4835Y3344D02* D03* X4785Y3794D02* D03* X4835Y3744D02* D03* X4885Y3794D02* D03* X4835Y3844D02* D03* X4785Y3894D02* D03* X4735Y3844D02* D03* X4685Y3794D02* D03* X4635Y3744D02* D03* Y3844D02* D03* X4685Y3894D02* D03* X4635Y3944D02* D03* X4685Y3994D02* D03* X4635Y4044D02* D03* X4735D02* D03* X4685Y4094D02* D03* X4735Y4144D02* D03* X4785Y4094D02* D03* X4835Y4044D02* D03* X4885Y3994D02* D03* Y3894D02* D03* X4835Y3944D02* D03* X4785Y3994D02* D03* X4735Y3944D02* D03* X4635Y4144D02* D03* X4685Y4194D02* D03* X4635Y4244D02* D03* X4735D02* D03* X4685Y4294D02* D03* X4735Y4344D02* D03* X4785Y4294D02* D03* X4835Y4244D02* D03* X4885Y4094D02* D03* Y4194D02* D03* X4835Y4144D02* D03* X4785Y4194D02* D03* X4885Y4294D02* D03* X4835Y4344D02* D03* X4885Y4394D02* D03* X4785D02* D03* X4735Y4444D02* D03* X4685Y4394D02* D03* X4635Y4344D02* D03* Y4444D02* D03* X4685Y4494D02* D03* X4635Y4544D02* D03* X4685Y4594D02* D03* X4735Y4544D02* D03* X4785Y4594D02* D03* X4835Y4644D02* D03* X4885Y4594D02* D03* X4835Y4544D02* D03* X4785Y4494D02* D03* X4835Y4444D02* D03* X4885Y4494D02* D03* X4935Y4544D02* D03* X5035D02* D03* X4985Y4494D02* D03* X4935Y4444D02* D03* X4985Y4394D02* D03* X5035Y4444D02* D03* X5085Y4394D02* D03* X5135Y4444D02* D03* X5085Y4494D02* D03* X5135Y4544D02* D03* X5185Y4594D02* D03* X5235Y4544D02* D03* X5185Y4494D02* D03* X5235Y4444D02* D03* X5185Y4394D02* D03* X5335Y4644D02* D03* X5385Y4594D02* D03* X5435Y4644D02* D03* X5485Y4594D02* D03* X5535Y4644D02* D03* X5435Y4544D02* D03* X5385Y4494D02* D03* X5435Y4444D02* D03* X5385Y4394D02* D03* X5285D02* D03* X5335Y4444D02* D03* X5285Y4494D02* D03* X5335Y4544D02* D03* X5285Y4594D02* D03* X5235Y4644D02* D03* X5135D02* D03* X5085Y4594D02* D03* X5035Y4644D02* D03* X4985Y4594D02* D03* X4935Y4644D02* D03* X5485Y4394D02* D03* X5535Y4444D02* D03* X5485Y4494D02* D03* X5535Y4544D02* D03* X5585Y4494D02* D03* X5635Y4444D02* D03* X5585Y4394D02* D03* X5685D02* D03* X5735Y4444D02* D03* X5685Y4494D02* D03* X5735Y4544D02* D03* X5685Y4594D02* D03* X5635Y4544D02* D03* X5585Y4594D02* D03* X5635Y4644D02* D03* X5735D02* D03* X5785Y4594D02* D03* X5835Y4644D02* D03* X5885Y4594D02* D03* X5935Y4644D02* D03* X5985Y4594D02* D03* X5935Y4544D02* D03* X5885Y4494D02* D03* X5935Y4444D02* D03* X5885Y4394D02* D03* X5785D02* D03* X5835Y4444D02* D03* X5785Y4494D02* D03* X5835Y4544D02* D03* X5985Y4394D02* D03* X6035Y4444D02* D03* X5985Y4494D02* D03* X6035Y4544D02* D03* X6085Y4494D02* D03* X6135Y4444D02* D03* X6085Y4394D02* D03* X6185D02* D03* X6235Y4444D02* D03* X6185Y4494D02* D03* X6235Y4544D02* D03* X6135D02* D03* X6085Y4594D02* D03* X6035Y4644D02* D03* X6135D02* D03* X6185Y4594D02* D03* X6235Y4644D02* D03* X6285Y4594D02* D03* X6335Y4644D02* D03* X6385Y4594D02* D03* X6435Y4644D02* D03* X6335Y4444D02* D03* X6285Y4494D02* D03* X6335Y4544D02* D03* X6435D02* D03* X6385Y4494D02* D03* X6435Y4444D02* D03* X6385Y4394D02* D03* X6435Y4344D02* D03* X6385Y4294D02* D03* X6335Y4244D02* D03* X6285Y4294D02* D03* Y4194D02* D03* X6335Y4144D02* D03* X6285Y4094D02* D03* X6335Y4044D02* D03* X6385Y3994D02* D03* X6435Y3944D02* D03* X6385Y3894D02* D03* X6435Y3844D02* D03* Y3744D02* D03* X6385Y3694D02* D03* X6335Y3644D02* D03* X6285Y3694D02* D03* Y3594D02* D03* X6335Y3544D02* D03* X6385Y3594D02* D03* X6435Y3544D02* D03* Y3644D02* D03* Y3344D02* D03* X6385Y3294D02* D03* X6435Y3244D02* D03* X6335Y3144D02* D03* X6285Y3094D02* D03* X6235Y3144D02* D03* X6185Y3194D02* D03* X6235Y3244D02* D03* X6185Y3294D02* D03* X6235Y3344D02* D03* X6185Y3394D02* D03* X6235Y3444D02* D03* X6285Y3494D02* D03* X6335Y3444D02* D03* X6285Y3394D02* D03* Y3294D02* D03* X6335Y3344D02* D03* X6385Y3394D02* D03* X6435Y3444D02* D03* X6385Y3494D02* D03* X6185D02* D03* X6235Y3544D02* D03* X6185Y3594D02* D03* X6235Y3644D02* D03* X6185Y3694D02* D03* X6235Y3744D02* D03* X6185Y3794D02* D03* Y3894D02* D03* X6235Y3844D02* D03* X6285Y3794D02* D03* X6335Y3744D02* D03* X6385Y3794D02* D03* X6335Y3844D02* D03* X6285Y3894D02* D03* X6335Y3944D02* D03* X6285Y3994D02* D03* X6235Y3944D02* D03* X6185Y3994D02* D03* X6235Y4044D02* D03* X6185Y4094D02* D03* X6235Y4144D02* D03* X6185Y4194D02* D03* X6235Y4244D02* D03* X6185Y4294D02* D03* X6235Y4344D02* D03* X6285Y4394D02* D03* X6335Y4344D02* D03* X6435Y4244D02* D03* X6385Y4194D02* D03* X6435Y4144D02* D03* X6385Y4094D02* D03* X6435Y4044D02* D03* X6972Y1069D02* D03* D322* X1528Y1709D02* D03* D053* X1730Y2142D02* D03* X1652D02* D03* X1573D02* D03* Y2260D02* D03* X1652D02* D03* X1730Y2614D02* D03* X1652D02* D03* X1573D02* D03* Y2732D02* D03* X1652D02* D03* X1511Y3041D02* D03* Y3141D02* D03* Y3426D02* D03* Y3526D02* D03* X1814Y4091D02* D03* Y4189D02* D03* Y4268D02* D03* X2081Y4644D02* D03* D028* X1516Y2059D02* X1587D01* X1809Y2236D02* Y2165D01* X1587Y2343D02* X1516D01* X1587Y2531D02* X1516D01* Y2815D02* X1587D01* X1809Y2709D02* Y2638D01* D052* X4919Y1339D02* D03* X4819D02* D03* X4719D02* D03* X4619D02* D03* X4519D02* D03* X4419D02* D03* X4319D02* D03* X1834Y1521D02* D03* X2020Y3109D02* D03* Y3209D02* D03* Y3309D02* D03* Y3409D02* D03* X1920Y3359D02* D03* Y3259D02* D03* Y3159D02* D03* X2138Y4049D02* D03* X1954Y4780D02* D03* X4370Y3885D02* D03* Y3785D02* D03* X4332Y2800D02* D03* X5555Y2543D02* D03* X5969D02* D03* X6386D02* D03* X7083Y3398D02* D03* X6689Y3787D02* D03* X7083Y4177D02* D03* D048* X1734Y1471D02* D03* X1976Y1230D02* D03* Y1181D02* D03* X7346Y1157D02* D03* Y1236D02* D03* Y1315D02* D03* Y1394D02* D03* Y1472D02* D03* Y1551D02* D03* Y1630D02* D03* Y1709D02* D03* Y1787D02* D03* X7425Y1709D02* D03* Y1787D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1709D02* D03* X7583D02* D03* X7504D02* D03* Y1630D02* D03* X7425D02* D03* Y1551D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1630D02* D03* X7583D02* D03* X7661Y1866D02* D03* X7583D02* D03* X7504D02* D03* Y1945D02* D03* X7425D02* D03* Y1866D02* D03* X7346D02* D03* Y1945D02* D03* Y2024D02* D03* Y2102D02* D03* Y2181D02* D03* Y2260D02* D03* Y2339D02* D03* Y2417D02* D03* Y2496D02* D03* Y2575D02* D03* Y2654D02* D03* Y2732D02* D03* Y2811D02* D03* Y2890D02* D03* Y2969D02* D03* Y3047D02* D03* Y3126D02* D03* Y3205D02* D03* Y3283D02* D03* Y3362D02* D03* Y3441D02* D03* Y3520D02* D03* Y3598D02* D03* Y3677D02* D03* Y3756D02* D03* X7425Y3441D02* D03* Y3362D02* D03* X7504D02* D03* Y3441D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y3362D02* D03* Y3283D02* D03* Y3205D02* D03* Y3047D02* D03* Y2969D02* D03* Y2890D02* D03* Y2811D02* D03* Y2732D02* D03* Y2654D02* D03* Y2575D02* D03* Y2496D02* D03* X7583D02* D03* X7661D02* D03* Y2575D02* D03* X7583D02* D03* X7504D02* D03* Y2496D02* D03* X7425D02* D03* Y2575D02* D03* Y2732D02* D03* Y2654D02* D03* X7504D02* D03* Y2732D02* D03* X7583D02* D03* X7661D02* D03* Y2654D02* D03* X7583D02* D03* Y2811D02* D03* X7661D02* D03* Y2890D02* D03* X7583D02* D03* X7504D02* D03* Y2811D02* D03* X7425D02* D03* Y2890D02* D03* Y3047D02* D03* Y2969D02* D03* X7504D02* D03* Y3047D02* D03* X7583D02* D03* X7661D02* D03* Y2969D02* D03* X7583D02* D03* Y2339D02* D03* X7661D02* D03* Y2260D02* D03* X7583D02* D03* X7504D02* D03* X7425D02* D03* Y2417D02* D03* Y2339D02* D03* X7504D02* D03* Y2417D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y2339D02* D03* Y2260D02* D03* X7583Y1945D02* D03* X7661D02* D03* X7740D02* D03* Y1866D02* D03* Y1787D02* D03* Y1709D02* D03* Y1630D02* D03* Y1551D02* D03* Y1472D02* D03* Y1394D02* D03* Y1315D02* D03* Y1236D02* D03* X7661Y1315D02* D03* X7583D02* D03* X7425Y1394D02* D03* Y1472D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1394D02* D03* X7583D02* D03* X7504D02* D03* Y1315D02* D03* X7425D02* D03* Y1236D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1157D02* D03* X7583D02* D03* X7504D02* D03* X7425D02* D03* X7583Y3205D02* D03* X7661D02* D03* Y3126D02* D03* X7583D02* D03* X7504D02* D03* Y3205D02* D03* X7425D02* D03* Y3126D02* D03* Y3283D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y3362D02* D03* X7583D02* D03* Y3520D02* D03* X7661D02* D03* Y3598D02* D03* X7583D02* D03* X7504D02* D03* Y3520D02* D03* X7425D02* D03* Y3598D02* D03* Y3756D02* D03* Y3677D02* D03* X7504D02* D03* Y3756D02* D03* X7583D02* D03* X7661D02* D03* Y3677D02* D03* X7583D02* D03* Y3835D02* D03* X7661D02* D03* Y3913D02* D03* X7583D02* D03* X7504D02* D03* Y3835D02* D03* X7425D02* D03* Y3913D02* D03* X7346Y3835D02* D03* Y3913D02* D03* Y3992D02* D03* Y4071D02* D03* X7425D02* D03* Y3992D02* D03* X7504D02* D03* Y4071D02* D03* X7583D02* D03* X7661D02* D03* Y3992D02* D03* X7583D02* D03* Y4307D02* D03* X7661D02* D03* Y4386D02* D03* X7583D02* D03* X7504D02* D03* Y4307D02* D03* X7425D02* D03* Y4386D02* D03* Y4228D02* D03* Y4150D02* D03* X7504D02* D03* Y4228D02* D03* X7583D02* D03* X7661D02* D03* Y4150D02* D03* X7583D02* D03* X7346D02* D03* Y4228D02* D03* Y4307D02* D03* Y4386D02* D03* Y4465D02* D03* Y4543D02* D03* Y4622D02* D03* Y4701D02* D03* Y4780D02* D03* X7425Y4543D02* D03* Y4465D02* D03* X7504D02* D03* Y4543D02* D03* X7583D02* D03* X7661D02* D03* Y4465D02* D03* X7583D02* D03* Y4622D02* D03* X7661D02* D03* Y4701D02* D03* X7583D02* D03* X7504D02* D03* Y4622D02* D03* X7425D02* D03* Y4701D02* D03* Y4780D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y4701D02* D03* Y4622D02* D03* Y4543D02* D03* Y4465D02* D03* Y4386D02* D03* Y4307D02* D03* Y4228D02* D03* Y4150D02* D03* Y4071D02* D03* Y3992D02* D03* Y3913D02* D03* Y3835D02* D03* Y3756D02* D03* Y3677D02* D03* Y3598D02* D03* Y3520D02* D03* D047* X2327Y1787D02* D03* D03* Y1237D02* D03* D03* D068* X1641Y1217D02* D03* Y4720D02* D03* D065* X1707Y3970D02* D03* Y4487D02* D03* X2359Y4640D02* D03* X3940D02* D03* D058* X2640Y1340D02* D03* X1791Y2978D02* D03* Y3589D02* D03* D331* X1670Y3058D02* D03* Y3509D02* D03* D060* X4275Y4140D02* D03* X5346Y2524D02* D03* X6650Y4102D02* D03* D061* X7425Y2102D02* D03* X7661D02* D03* D056* X2359Y4522D02* D03* X3940D02* D03* D012* X1814Y4189D02* X2463D01* X2514Y4240D01* Y4265D01* Y4293D01* X2576Y4355D01* X2654D01* X2369Y4268D02* X2434D01* X2511Y4345D01* X2553Y4387D01* X3560D01* X3663Y4490D01* X3816D01* X3855Y4457D02* X3677D01* X3575Y4355D01* X3502D01* D014* X2138Y4049D02* X1939Y3850D01* Y3603D01* X1972Y3570D01* Y2831D01* X1951Y2810D01* Y2203D01* X2020Y2134D01* X2167D01* X2418Y1883D01* Y1268D01* X2476Y1210D01* X1511Y3141D02* X1553D01* X1572Y3122D01* Y2990D01* X1784Y2778D01* X5464Y2324D02* X5508D01* X5543Y2289D01* Y1999D01* X5550Y1992D01* Y1944D01* X5522Y1916D01* X5597D02* X5569Y1944D01* Y1992D01* X5576Y1999D01* Y2312D01* X5624Y2360D01* X5767D01* X5803Y2324D01* X6182Y2787D02* Y2849D01* X6149Y2882D01* Y2908D01* X6170Y2929D01* Y2958D01* X6098Y3030D01* Y3058D01* X6123Y3083D01* Y3338D01* X6120Y3341D01* X6067Y3394D01* Y3673D01* X6120Y3341D02* X6181D01* X6334Y3494D01* X6385D01* D018* X2223Y4425D02* X2491D01* X2559Y4493D01* X2781D01* X2840Y4434D01* X3548D01* X3560Y4446D01* X6574Y4365D02* Y4364D01* X6505Y4295D01* Y2784D01* X6407Y2686D01* X6019D01* X5876Y2543D01* Y2198D01* X5806Y2128D01* X5717D01* X5681D01* X5645D01* X5654Y2119D01* Y1814D01* X5170Y1330D01* Y1261D01* X5062Y1153D01* X2278D01* X2188Y1243D01* X2327Y1069D02* X4294D01* X4336Y1111D01* X4411D01* X4455Y1067D01* X6038D01* X6037Y1066D01* X6937Y1231D02* X6950Y1244D01* X7045D01* X7071Y1270D01* X7125D01* X7258Y1403D01* Y1417D01* X7298D01* X7314Y1433D01* X7524D01* X7534Y1443D01* X7543Y1452D01* X7534Y1443D02* X7583Y1394D01* X7543Y1452D02* Y2910D01* X7534Y2919D01* X7583Y2969D01* X7534Y2919D02* X7524Y2929D01* X7314D01* X7298Y2913D01* X7258D01* D076* X1921Y1669D02* D03* X1886Y3825D02* D03* X4735Y4644D02* D03* X5545Y3406D02* D03* D080* X1730Y2260D02* D03* Y2732D02* D03* X1814Y4366D02* D03* X2179Y4516D02* D03* D081* X1809Y2236D02* D03* Y2165D02* D03* X1587Y2059D02* D03* X1516D02* D03* Y2343D02* D03* X1587D02* D03* Y2531D02* D03* X1516D02* D03* Y2815D02* D03* X1587D02* D03* X1809Y2709D02* D03* Y2638D02* D03* D079* X1834Y1421D02* D03* X1920Y3459D02* D03* X2138Y3949D02* D03* X1854Y4780D02* D03* X4370Y3985D02* D03* X4140Y2800D02* D03* X5019Y1339D02* D03* X5752Y2543D02* D03* X6165D02* D03* X6583D02* D03* X7083Y3594D02* D03* X6886Y3787D02* D03* X7083Y3980D02* D03* D075* X1976Y1280D02* D03* X7740Y1157D02* D03* Y3126D02* D03* M02*pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/l4.grb000066400000000000000000003504551202063157500231220ustar00rootroot00000000000000%FSLAX13Y13*% %ADD010C,0.004*% %ADD011C,0.006*% %ADD012C,0.008*% %ADD013C,0.010*% %ADD014C,0.012*% %ADD015C,0.014*% %ADD016C,0.016X0.006*% %ADD017C,0.018*% %ADD018C,0.020*% %ADD019C,0.024*% %ADD020C,0.028*% %ADD021C,0.031*% %ADD022C,0.035*% %ADD023C,0.039*% %ADD024C,0.047*% %ADD025C,0.051*% %ADD026C,0.055*% %ADD027C,0.059*% %ADD028C,0.063*% %ADD029C,0.067*% %ADD030C,0.071*% %ADD030C,0.071*% %ADD031C,0.075*% %ADD032C,0.079*% %ADD033C,0.083*% %ADD034C,0.087*% %ADD035C,0.098*% %ADD036C,0.118*% %ADD037C,0.138*% %ADD038C,0.157*% %ADD039C,0.177*% %ADD040C,0.205*% %ADD041C,0.015*% %ADD042C,0.018*% %ADD043C,0.020*% %ADD044C,0.024X0.012*% %ADD045C,0.028*% %ADD046C,0.031*% %ADD047C,0.035*% %ADD048C,0.039*% %ADD049C,0.043X0.028*% %ADD050C,0.047*% %ADD051C,0.051*% %ADD052C,0.055*% %ADD053C,0.059*% %ADD054C,0.063*% %ADD055C,0.067*% %ADD056C,0.071*% %ADD057C,0.075*% %ADD058C,0.079*% %ADD059C,0.083*% %ADD060C,0.087*% %ADD061C,0.098*% %ADD062C,0.102*% %ADD063C,0.110*% %ADD064C,0.118*% %ADD065C,0.138*% %ADD066C,0.157*% %ADD067C,0.177*% %ADD068C,0.205*% %ADD069C,0.221*% %ADD070C,0.004*% %ADD071R,0.024X0.024*% %ADD072R,0.028X0.028*% %ADD073R,0.031X0.031*% %ADD074R,0.035*% %ADD075R,0.039X0.039*% %ADD076R,0.043X0.043X0.028*% %ADD077R,0.047X0.047*% %ADD078R,0.051X0.051*% %ADD079R,0.055X0.055*% %ADD080R,0.059X0.059*% %ADD081R,0.063X0.063*% %ADD082R,0.067X0.067*% %ADD083R,0.071X0.071*% %ADD084R,0.075X0.075*% %ADD085R,0.079X0.079*% %ADD086R,0.083X0.083*% %ADD087R,0.087X0.087*% %ADD088R,0.098X0.098*% %ADD089R,0.102X0.102*% %ADD090R,0.110X0.110*% %ADD091R,0.118X0.118*% %ADD092R,0.138X0.138*% %ADD093R,0.157X0.157*% %ADD094R,0.177X0.177*% %ADD095R,0.205X0.205*% %ADD096R,0.221X0.221*% %ADD097R,0.256X0.256*% %ADD098R,0.315X0.315*% %ADD099R,0.394X0.394*% %ADD090R,0.110X0.110*% %ADD100R,0.018X0.018*% %ADD101R,0.020X0.020*% %ADD110C,0.005*% %ADD120C,0.022*% %ADD125R,0.03260.326*% %ADD126R,0.362X0.362*% %ADD135C,0.095*% %ADD169C,0.237*% %ADD188R,0.095X0.095*% %ADD300C,0.019*% %ADD302R,0.019X0.019*% %ADD306C,0.032*% %ADD308R,0.032X0.032*% %ADD309C,0.041*% %ADD315C,0.045*% %ADD317R,0.045X0.045*% %ADD318C,0.090*% %ADD319C,0.090*% %ADD320R,0.090X0.090*% %ADD322C,0.094*% %ADD325C,0.114*% %ADD326R,0.114X0.114*% %ADD328C,0.122*% %ADD329R,0.122X0.122*% %ADD331C,0.126*% %ADD334C,0.130*% %ADD337C,0.142*% %ADD338R,0.142X0.142*% %ADD340C,0.161*% %ADD346C,0.209*% %ADD352C,0.241*% %ADD356C,0.260*% %ADD357C,0.350*% %ADD359R,0.350X0.350*% %ADD362R,0.354X0.354*% %ADD367C,0.014*% %ADD360C,0.354*% %ADD364C,0.012*% %ADD370C,0.016*% %ADD380R,0.219X0.219*% %ADD381C,0.036*% %ADD382C,0.036*% %ADD383R,0.036X0.036*% %ADD384C,0.009*% %ADD385C,0.009*% %ADD386R,0.009X0.009*% %ADD387C,0.040*% %ADD388C,0.040*% %ADD389R,0.040X0.040*% D012* X8324Y575D02* Y1425D01* Y1300D02* X8624Y1000D01* X8324Y700D01* X8024Y1000D01* X8324Y1300D01* Y1200D02* X8524Y1000D01* X8324Y800D01* X8124Y1000D01* X8324Y1200D01* Y1100D02* X8424Y1000D01* X8324Y900D01* X8224Y1000D01* X8324Y1100D01* X7449Y1000D02* X7740D01* X7799Y1059D01* Y1350D02* Y1197D01* Y1059D01* X7899Y1000D02* X8749D01* X8700D02* Y4937D01* X8750D02* X7900D01* X7799Y5037D02* Y5887D01* Y5762D02* X8099Y5462D01* X7799Y5162D01* X7499Y5462D01* X7449Y4937D02* X7740D01* X7799Y4878D01* Y4760D01* Y4587D01* X8324Y4737D02* X8124Y4937D01* X8324Y5137D01* X8524Y4937D01* X8324Y4737D01* Y4637D02* X8024Y4937D01* X8324Y5237D01* X7799Y5662D02* X7599Y5462D01* X7799Y5262D01* X7999Y5462D01* X7799Y5662D01* X8324Y5362D02* Y4512D01* Y4637D02* X8624Y4937D01* X8324Y5237D01* X8224Y5462D02* X7374D01* X7499D02* X7799Y5762D01* Y5850D02* X1500D01* Y5887D02* Y5037D01* X1200Y5462D02* X1500Y5162D01* X1800Y5462D01* X1500Y5762D01* X1200Y5462D01* X1075D02* X1925D01* X1850Y4937D02* X1500D01* Y4543D01* X1441D01* Y4465D01* Y1472D02* Y1394D01* X1500D01* Y1000D01* X1850D01* X1820Y894D02* X1829Y886D01* Y877D01* X1820Y868D01* X1784D01* X1829Y850D02* X1793D01* X1784Y859D01* Y886D01* X1793Y894D01* X1820D01* X1731Y921D02* X1740D01* Y850D01* X1749D02* X1731D01* X1687Y877D02* X1651D01* X1642Y868D01* Y859D01* X1651Y850D01* X1687D01* Y886D01* X1678Y894D01* X1651D01* X1616Y886D02* X1607Y894D01* X1580D01* X1571Y886D01* Y859D01* X1580Y850D01* X1607D01* X1616Y859D01* X1544Y886D02* X1536Y894D01* X1509D01* X1500Y886D01* X1509Y877D01* X1536D01* X1544Y868D01* Y859D01* X1536Y850D01* X1509D01* X1500Y859D01* X1936Y894D02* X1980D01* X1936Y877D02* X1980D01* X2069Y850D02* X2122D01* X2096D02* Y921D01* X2078Y903D01* X2167Y850D02* X2158Y859D01* X2167Y868D01* X2176Y859D01* X2167Y850D01* X2211D02* X2264Y921D01* X2256D02* X2264Y912D01* Y859D01* X2256Y850D01* X2220D01* X2211Y859D01* Y912D01* X2220Y921D01* X2256D01* X2282Y859D02* Y912D01* X2291Y921D01* X2327D01* X2336Y912D01* Y859D01* X2327Y850D01* X2291D01* X2282Y859D01* Y850D02* X2336Y921D01* X3269Y5432D02* X3261Y5441D01* X3225D01* X3216Y5432D01* Y5379D01* X3225Y5370D01* X3261D01* X3269Y5379D01* X3296Y5370D02* X3323D01* X3332Y5379D01* Y5406D01* X3323Y5415D01* X3296D01* X3287Y5406D01* Y5379D01* X3296Y5370D01* X3358D02* Y5415D01* Y5406D02* X3367Y5415D01* X3376D01* X3385Y5406D01* Y5370D01* X3412D02* Y5406D01* X3403Y5415D01* X3394D01* X3385Y5406D01* X3429Y5370D02* X3465D01* X3474Y5379D01* Y5406D01* X3465Y5415D01* X3429D01* Y5343D01* X3509Y5415D02* X3536D01* X3545Y5406D01* Y5370D01* X3509D01* X3501Y5379D01* Y5388D01* X3509Y5397D01* X3545D01* X3616Y5379D02* X3607Y5370D01* X3581D01* X3572Y5379D01* Y5406D01* X3581Y5415D01* X3607D01* X3616Y5406D01* X3643Y5415D02* X3678D01* X3661Y5441D02* Y5379D01* X3669Y5370D01* X3678D01* X3687Y5379D01* X3714Y5370D02* Y5441D01* X3758D01* X3767Y5432D01* Y5415D01* X3758Y5406D01* X3714D01* X3838Y5379D02* X3829Y5370D01* X3794D01* X3785Y5379D01* Y5432D01* X3794Y5441D01* X3829D01* X3838Y5432D01* X3856Y5441D02* X3909D01* X3883D02* Y5370D01* X3856D02* X3909D01* X4123Y5432D02* X4114Y5441D01* X4078D01* X4069Y5432D01* Y5379D01* X4078Y5370D01* X4114D01* X4123Y5379D01* X4194D02* X4185Y5370D01* X4149D01* X4141Y5379D01* Y5432D01* X4149Y5441D01* X4185D01* X4194Y5432D01* X4221Y5406D02* X4212Y5397D01* Y5379D01* X4221Y5370D01* X4256D01* X4265Y5379D01* Y5397D01* X4256Y5406D01* X4265Y5415D01* Y5432D01* X4256Y5441D01* X4221D01* X4212Y5432D01* Y5415D01* X4221Y5406D01* X4256D01* X4283D02* X4336D01* X4354D02* X4398D01* X4407Y5415D02* Y5432D01* X4398Y5441D01* X4407Y5415D02* X4398Y5406D01* X4407Y5397D01* Y5379D01* X4398Y5370D01* X4354D01* Y5441D01* X4398D01* X4425D02* Y5370D01* X4478D01* X4496Y5441D02* Y5379D01* X4505Y5370D01* X4541D01* X4549Y5379D01* Y5441D01* X4567Y5406D02* X4603D01* X4638Y5415D02* Y5432D01* X4647Y5441D01* X4683D01* X4692Y5432D01* X4638Y5415D02* X4647Y5406D01* X4683D01* X4692Y5397D01* Y5379D01* X4683Y5370D01* X4647D01* X4638Y5379D01* X4621Y5370D02* X4567D01* Y5441D01* X4621D01* X4994Y5370D02* Y5441D01* X5038D01* X5047Y5432D01* Y5415D01* X5038Y5406D01* X4994D01* X5021D02* X5047Y5370D01* X5065Y5379D02* X5074Y5370D01* X5065Y5388D02* X5101D01* X5109Y5397D01* Y5370D02* X5074D01* X5065Y5379D02* Y5406D01* X5074Y5415D01* X5101D01* X5109Y5406D01* Y5397D01* X5136Y5415D02* X5163Y5370D01* X5189Y5415D01* X5234Y5388D02* X5243Y5379D01* X5234Y5370D01* X5225Y5379D01* X5234Y5388D01* X5278Y5370D02* X5332Y5441D01* X5323D02* X5332Y5432D01* Y5379D01* X5323Y5370D01* X5287D01* X5278Y5379D01* Y5432D01* X5287Y5441D01* X5323D01* X5563Y5406D02* X5616D01* X5791Y5441D02* X5845D01* X5818D02* Y5370D01* X5791D02* X5845D01* X5862D02* Y5415D01* Y5406D02* X5871Y5415D01* X5898D01* X5907Y5406D01* Y5370D01* X5934D02* Y5415D01* Y5406D02* X5942Y5415D01* X5969D01* X5978Y5406D01* Y5370D01* X6005Y5388D02* X6040D01* X6049Y5397D01* Y5406D01* X6040Y5415D01* X6014D01* X6005Y5406D01* Y5379D01* X6014Y5370D01* X6049D01* X6076D02* Y5415D01* Y5406D02* X6085Y5415D01* X6111D01* X6120Y5406D01* X6218Y5432D02* X6227Y5441D01* X6262D01* X6271Y5432D01* Y5415D01* X6254Y5406D01* X6236D02* X6254D01* X6271Y5397D01* Y5379D01* X6262Y5370D01* X6227D01* X6218Y5379D01* X6396Y5370D02* X6378Y5397D01* Y5415D01* X6396Y5441D01* X6431D02* Y5370D01* X6485D01* X6502Y5441D02* Y5406D01* X6556D01* X6547Y5441D02* Y5370D01* X6591D02* X6609Y5397D01* Y5415D01* X6591Y5441D01* D010* X7579Y823D02* X7620D01* X7644D02* X7740D01* Y904D01* Y832D02* Y904D01* Y928D02* Y1000D01* X7799Y1059D02* X7871D01* X7895D02* X7984D01* Y1134D01* X7895Y1059D02* X7967D01* X7895Y4878D02* X7988D01* Y4772D01* Y4782D02* Y4878D01* X7967D02* X7895D01* X7871D02* X7799D01* X7740Y4937D02* Y5009D01* Y5033D02* Y5071D01* X7692D01* X7668D02* X7597D01* X7668D02* X7575D01* D011* X2213Y5611D02* Y5571D01* X2220Y5564D01* X2247D02* X2253Y5571D01* Y5611D01* Y5617D02* X2213Y5564D01* X2220D02* X2247D01* X2267Y5584D02* X2273Y5591D01* X2300D01* X2307Y5584D01* Y5571D01* X2300Y5564D01* X2273D01* X2267Y5571D01* Y5611D01* X2273Y5617D01* X2300D01* X2307Y5611D01* X2320Y5571D02* X2327Y5564D01* X2353D01* X2360Y5571D01* Y5591D01* X2353Y5597D01* X2320D01* Y5617D01* X2360D01* X2347Y5687D02* X2353Y5681D01* Y5661D01* X2347Y5654D01* X2320D01* Y5634D02* Y5687D01* X2347D01* X2373Y5681D02* X2413D01* X2427D02* X2460D01* X2467Y5687D01* Y5701D01* X2460Y5707D01* X2427D01* Y5654D01* X2447Y5681D02* X2467Y5654D01* X2480Y5661D02* X2487Y5654D01* X2480Y5667D02* X2507D01* X2513Y5674D01* Y5681D01* X2507Y5687D01* X2487D01* X2480Y5681D01* Y5661D01* X2487Y5654D02* X2513D01* X2467Y5617D02* Y5564D01* X2480Y5571D02* Y5577D01* Y5571D02* X2487Y5564D01* X2513D01* Y5591D02* X2507Y5597D01* X2487D01* X2373Y5521D02* X2380Y5527D01* X2407D01* X2413Y5521D01* Y5507D01* X2400Y5501D01* X2387D02* X2400D01* X2413Y5494D01* Y5481D01* X2407Y5474D01* X2380D01* X2373Y5481D01* X2360Y5474D02* X2320D01* Y5481D01* X2353Y5501D01* X2360Y5507D01* Y5521D01* X2353Y5527D01* X2327D01* X2320Y5521D01* X2307D02* X2300Y5527D01* X2273D01* X2267Y5521D01* Y5481D01* X2273Y5474D01* X2300D01* X2307Y5481D01* Y5521D01* Y5527D02* X2267Y5474D01* X2180D02* X2187Y5481D01* X2180Y5487D01* X2173Y5481D01* X2180Y5474D01* X2140Y5417D02* X2107Y5384D01* X2140D02* X2107Y5417D01* X2087Y5411D02* X2080Y5417D01* X2060D01* Y5404D02* X2087D01* Y5411D02* Y5384D01* X2060D01* X2053Y5391D01* Y5397D01* X2060Y5404D02* X2053Y5397D01* X2027Y5411D02* X2000D01* Y5384D02* Y5437D01* X2040D01* X2000Y5527D02* X2040D01* X2020D02* Y5474D01* X2053Y5487D02* X2080D01* X2087Y5494D01* Y5501D01* X2080Y5507D01* X2060D01* X2053Y5501D01* Y5481D01* X2060Y5474D01* X2087D01* X2120D02* X2133D01* X2127D02* Y5527D01* X2120D01* X2140Y5564D02* X2113D01* X2107Y5571D01* X2093Y5591D02* X2053D01* X2040Y5584D02* Y5597D01* X2033Y5611D01* X2027Y5617D01* X2000D01* Y5564D01* X2027D01* X2033Y5571D01* X2040Y5584D01* X2000Y5771D02* X2027D01* X2040Y5744D02* X2000D01* Y5797D01* X2040D01* X2053Y5771D02* X2067Y5777D01* X2093Y5797D01* X2147D02* X2107D01* X2133Y5771D02* X2107D01* Y5797D02* Y5744D01* X2093D02* X2067Y5777D01* X2053Y5797D02* Y5744D01* X2000Y5681D02* X2033D01* X2040Y5687D01* X2033Y5707D02* X2000D01* Y5654D01* X2053D02* Y5707D01* X2033D02* X2040Y5701D01* Y5687D01* X2053Y5681D02* X2060Y5687D01* X2080D01* X2087Y5681D01* Y5654D01* X2120Y5701D02* Y5694D01* X2127D01* Y5701D01* X2120D01* Y5687D02* X2127D01* Y5654D01* X2133D02* X2120D01* X2147Y5617D02* X2107D01* Y5597D01* X2140D01* X2147Y5591D01* Y5571D01* X2140Y5564D01* X2160Y5571D02* X2167Y5564D01* X2193D01* X2200Y5571D01* Y5611D01* X2193Y5617D01* X2167D01* X2173Y5654D02* X2187D01* X2180D02* Y5707D01* X2173D01* X2167Y5617D02* X2160Y5611D01* Y5597D01* X2167Y5591D01* X2193D01* X2200Y5597D01* X2213Y5611D02* X2220Y5617D01* X2247D01* X2253Y5611D01* X2267Y5634D02* Y5687D01* X2293D01* X2300Y5681D01* Y5661D01* X2293Y5654D01* X2267D01* X2227D02* X2240D01* X2233D02* Y5687D01* X2227D01* X2233Y5701D02* Y5694D01* X2227D01* Y5701D01* X2233D01* X2213Y5744D02* Y5797D01* X2253D01* X2280D02* X2287D01* Y5744D01* X2293D02* X2280D01* X2253D02* X2213D01* Y5771D02* X2240D01* X2320Y5757D02* X2347D01* X2353Y5764D01* Y5771D01* X2347Y5777D01* X2327D01* X2320Y5771D01* Y5751D01* X2327Y5744D01* X2353D01* X2373D02* Y5797D01* X2400Y5777D02* X2373Y5757D01* X2407Y5744D01* X2440Y5751D02* Y5797D01* X2427Y5777D02* X2453D01* X2440Y5751D02* X2447Y5744D01* X2453D01* X2460Y5751D01* X2480Y5744D02* Y5777D01* Y5771D02* X2487Y5777D01* X2507D01* X2513Y5771D01* X2560Y5777D02* X2567Y5771D01* Y5751D01* X2560Y5744D01* X2540D01* X2533Y5751D01* Y5771D01* X2540Y5777D01* X2560D01* X2587Y5744D02* Y5777D01* Y5771D02* X2593Y5777D01* X2613D01* X2620Y5771D01* Y5744D01* X2660Y5784D02* Y5791D01* X2653D01* Y5784D01* X2660D01* X2653Y5777D02* X2660D01* Y5744D01* X2667D02* X2653D01* X2693D02* Y5797D01* X2720Y5777D02* X2693Y5757D01* X2727Y5744D01* X2733Y5701D02* X2727Y5707D01* X2700D01* X2693Y5701D01* Y5687D01* X2680Y5681D02* X2640D01* X2620D02* X2613Y5687D01* X2593D01* X2587Y5681D01* X2593Y5674D01* X2613D01* X2620Y5667D01* Y5661D01* X2613Y5654D01* X2593D01* X2587Y5661D01* X2547Y5654D02* X2560D01* X2553D02* Y5687D01* X2547D01* Y5694D02* X2553D01* Y5701D01* X2547D01* Y5694D01* X2613Y5597D02* X2620D01* X2627Y5591D01* Y5564D01* X2607D02* Y5591D01* X2613Y5597D02* X2607Y5591D01* X2600Y5597D01* X2593D01* X2587Y5591D01* Y5597D02* Y5564D01* X2573D02* Y5591D01* X2567Y5597D01* X2560D01* X2553Y5591D01* Y5564D02* Y5591D01* X2547Y5597D01* X2540D01* X2533Y5591D01* Y5597D02* Y5564D01* X2513D02* Y5591D01* Y5584D02* X2487D01* X2480Y5577D01* X2467Y5591D02* X2427D01* Y5617D02* Y5564D01* X2433Y5501D02* X2427Y5494D01* Y5481D01* X2433Y5474D01* X2460D01* X2467Y5481D01* Y5494D01* X2460Y5501D01* X2433D01* X2427Y5507D01* Y5521D01* X2433Y5527D01* X2460D01* X2467Y5521D01* Y5507D01* X2460Y5501D01* X2487Y5514D02* X2500Y5527D01* Y5474D01* X2480D02* X2520D01* X2533D02* X2573Y5527D01* X2587Y5521D02* X2593Y5527D01* X2620D01* X2627Y5521D01* X2647Y5527D02* X2673D01* X2680Y5521D01* Y5507D01* X2673Y5501D01* X2680Y5494D01* Y5481D01* X2647Y5501D02* X2640Y5494D01* Y5481D01* X2647Y5474D01* X2673D01* X2680Y5481D01* X2673Y5501D02* X2647D01* X2640Y5507D01* Y5521D01* X2647Y5527D01* X2587Y5521D02* Y5481D01* X2593Y5474D01* X2620D01* X2627Y5481D01* Y5494D01* X2620Y5501D01* X2593D01* X2587Y5494D01* X2693Y5481D02* X2700Y5474D01* X2727D01* X2733Y5481D01* Y5521D01* X2727Y5527D01* X2700D01* X2693Y5521D01* Y5507D01* X2700Y5501D01* X2727D01* X2733Y5507D01* X2747Y5474D02* X2787Y5527D01* Y5521D02* Y5481D01* X2780Y5474D01* X2753D01* X2747Y5481D01* Y5521D01* X2753Y5527D01* X2780D01* X2787Y5521D01* X2800Y5501D02* X2840D01* X2853Y5481D02* Y5521D01* X2860Y5527D01* X2887D01* X2993Y5654D02* Y5707D01* X3000Y5681D02* X2960D01* Y5707D01* Y5744D02* Y5797D01* Y5771D02* X3000D01* Y5797D02* Y5744D01* X2907Y5797D02* Y5744D01* X2933D01* X2940Y5751D01* Y5771D01* X2933Y5777D01* X2907D01* X2880D02* X2887D01* X2893Y5771D01* Y5744D01* X2873D02* Y5771D01* X2880Y5777D02* X2873Y5771D01* X2867Y5777D01* X2860D01* X2853Y5771D01* Y5777D02* Y5744D01* X2873Y5667D02* X2867Y5661D01* X2873Y5654D01* X2880Y5661D01* X2873Y5667D01* X2833Y5681D02* X2827Y5687D01* X2807D01* X2800Y5681D01* Y5687D02* Y5654D01* X2780Y5661D02* X2773Y5654D01* X2767D01* X2760Y5661D01* Y5707D01* X2773Y5687D02* X2747D01* X2727Y5681D02* X2733Y5674D01* Y5661D01* X2727Y5654D01* X2700D01* X2693Y5661D01* Y5687D02* X2700Y5681D01* X2727D01* X2827Y5764D02* X2840D01* Y5751D01* X2833Y5744D01* X2807D01* X2800Y5751D01* Y5791D01* X2807Y5797D01* X2833D01* X2840Y5791D01* X2680Y5237D02* Y5224D01* X2667Y5204D01* X2660Y5224D02* Y5211D01* X2667Y5204D02* X2660Y5211D01* X2653Y5204D01* X2640Y5224D01* Y5237D01* X2627D02* Y5224D01* X2613Y5204D01* X2607Y5211D01* X2600Y5204D02* X2607Y5211D01* Y5224D01* X2600Y5204D02* X2587Y5224D01* Y5237D01* X2573D02* Y5224D01* X2560Y5204D01* X2553Y5224D02* Y5211D01* X2560Y5204D02* X2553Y5211D01* X2547Y5204D01* X2533Y5224D01* Y5237D01* X2447Y5244D02* X2453Y5237D01* X2447Y5231D01* X2440Y5237D01* X2447Y5244D01* Y5204D02* X2440Y5211D01* X2447Y5217D01* X2453Y5211D01* X2447Y5204D01* X2407Y5211D02* X2400Y5204D01* X2393D01* X2387Y5211D01* Y5257D01* X2373Y5237D02* X2400D01* X2353Y5204D02* X2327D01* X2320Y5211D01* Y5231D01* X2327Y5237D01* X2347D01* X2353Y5231D01* Y5224D01* X2347Y5217D01* X2320D01* X2300Y5204D02* Y5231D01* X2293Y5237D01* X2273D01* X2267Y5231D01* Y5237D02* Y5204D01* X2247Y5231D02* X2240Y5237D01* X2220D01* X2213Y5231D01* Y5237D02* Y5204D01* X2227Y5167D02* X2233D01* Y5114D01* X2240D02* X2227D01* X2287D02* X2280Y5121D01* X2287Y5127D01* X2293Y5121D01* X2287Y5114D01* Y5141D02* X2280Y5147D01* X2287Y5154D01* X2293Y5147D01* X2287Y5141D01* X2000Y5127D02* X2027D01* X2033Y5134D01* Y5141D01* X2027Y5147D01* X2007D01* X2000Y5141D01* Y5121D01* X2007Y5114D01* X2033D01* X2053D02* Y5147D01* Y5141D02* X2060Y5147D01* X2067D01* X2073Y5141D01* X2080Y5147D01* X2073Y5141D02* Y5114D01* X2107Y5121D02* Y5127D01* X2113Y5134D01* X2140D01* Y5114D02* Y5141D01* X2133Y5147D01* X2113D01* X2080D02* X2087D01* X2093Y5141D01* Y5114D01* X2107Y5121D02* X2113Y5114D01* X2140D01* X2173D02* X2187D01* X2180D02* Y5147D01* X2173D01* X2180Y5154D02* X2173D01* Y5161D01* X2180D01* Y5154D01* X2193Y5204D02* X2167D01* X2160Y5211D01* Y5231D01* X2167Y5237D01* X2187D01* X2193Y5231D01* Y5224D01* X2187Y5217D01* X2160D01* X2140Y5211D02* X2133Y5204D01* X2127D01* X2120Y5211D01* Y5257D01* X2107Y5237D02* X2133D01* X2087Y5204D02* Y5231D01* X2080Y5237D01* X2060D01* X2053Y5231D01* Y5237D02* Y5204D01* X2040D02* X2000D01* X2020D02* Y5257D01* X2040D02* X2000D01* X2273Y5384D02* X2267Y5391D01* Y5431D01* X2273Y5437D01* X2300D01* X2307Y5431D01* Y5391D01* X2300Y5384D01* X2273D01* X2267D02* X2307Y5437D01* X2320Y5431D02* X2327Y5437D01* X2353D01* X2360Y5431D01* Y5417D01* X2353Y5411D01* X2320Y5391D01* Y5384D01* X2360D01* X2373Y5391D02* X2380Y5384D01* X2407D01* X2413Y5391D01* Y5404D01* X2400Y5411D01* X2387D01* X2400D02* X2413Y5417D01* Y5431D01* X2407Y5437D01* X2380D01* X2373Y5431D01* X2433Y5411D02* X2427Y5404D01* Y5391D01* X2433Y5384D01* X2460D01* X2467Y5391D01* Y5404D01* X2460Y5411D01* X2433D01* X2427Y5417D01* Y5431D01* X2433Y5437D01* X2460D01* X2467Y5431D01* Y5417D01* X2460Y5411D01* X2487Y5424D02* X2500Y5437D01* Y5384D01* X2480D02* X2520D01* X2533D02* X2573Y5437D01* X2587Y5431D02* Y5391D01* X2593Y5384D01* X2620D01* X2627Y5391D01* Y5404D01* X2620Y5411D01* X2593D01* X2587Y5404D01* Y5431D02* X2593Y5437D01* X2620D01* X2627Y5431D01* X2640Y5417D02* Y5431D01* X2647Y5437D01* X2673D01* X2680Y5431D01* Y5417D01* X2673Y5411D01* X2647D02* X2640Y5404D01* Y5391D01* X2647Y5384D01* X2673D01* X2680Y5391D01* Y5404D01* X2673Y5411D01* X2647D01* X2640Y5417D01* X2693Y5391D02* X2700Y5384D01* X2727D01* X2733Y5391D01* Y5431D01* X2727Y5437D01* X2700D01* X2693Y5431D01* Y5417D01* X2700Y5411D01* X2727D01* X2733Y5417D01* X2753Y5384D02* X2747Y5391D01* Y5431D01* X2753Y5437D01* X2780D01* X2787Y5431D01* Y5391D01* X2780Y5384D01* X2753D01* X2747D02* X2787Y5437D01* X2800Y5411D02* X2840D01* X2853Y5417D02* X2860Y5411D01* X2887D01* X2893Y5417D01* Y5431D02* Y5391D01* X2887Y5384D01* X2860D01* X2853Y5391D01* Y5417D02* Y5431D01* X2860Y5437D01* X2887D01* X2893Y5431D01* X2887Y5474D02* X2860D01* X2853D02* X2893Y5527D01* X2887D02* X2893Y5521D01* Y5481D01* X2887Y5474D01* X2860D02* X2853Y5481D01* X2947Y5437D02* X2907Y5384D01* X2913D02* X2940D01* X2947Y5391D01* Y5431D01* X2940Y5437D01* X2913D01* X2907Y5431D01* Y5391D01* X2913Y5384D01* X2993Y5257D02* Y5204D01* X2967D01* X2960Y5211D01* Y5231D01* X2967Y5237D01* X2993D01* X2927Y5217D02* X2920Y5211D01* X2927Y5204D01* X2933Y5211D01* X2927Y5217D01* X2887Y5257D02* X2867D01* X2860Y5251D01* X2873Y5231D02* X2853D01* X2860Y5251D02* Y5204D01* X2833D02* X2800Y5217D01* X2827Y5237D01* X2800Y5257D02* Y5204D01* X2780D02* X2753D01* X2747Y5211D01* Y5231D01* X2753Y5237D01* X2773D01* X2780Y5231D01* Y5224D01* X2773Y5217D01* X2747D01* X2713Y5204D02* X2720Y5211D01* X2713Y5217D01* X2707Y5211D01* X2713Y5204D01* X2700Y5147D02* X2693Y5141D01* Y5121D01* X2700Y5114D01* X2720D01* X2727Y5121D01* Y5141D01* X2720Y5147D01* X2700D01* X2673Y5167D02* X2653D01* X2647Y5161D01* X2660Y5141D02* X2640D01* X2647Y5161D02* Y5114D01* X2620D02* Y5141D01* X2613Y5147D01* X2593D01* X2587Y5141D01* Y5147D02* Y5114D01* X2547D02* X2560D01* X2553D02* Y5147D01* X2547D01* X2553Y5161D02* Y5154D01* X2547D01* Y5161D01* X2553D01* X2773Y5121D02* X2760D01* X2753Y5127D01* Y5154D01* X2760Y5161D01* X2773D01* X2780Y5154D01* Y5134D01* X2767D01* Y5147D01* X2780D01* X2800Y5141D02* Y5121D01* X2807Y5114D01* X2833D01* Y5134D02* Y5141D01* X2827Y5147D01* X2807D01* X2800Y5141D01* Y5127D02* X2827D01* X2833Y5134D01* X2853Y5114D02* Y5167D01* X2880Y5147D02* X2853Y5127D01* X2887Y5114D01* X2913D02* Y5161D01* X2907Y5141D02* X2927D01* X2913Y5161D02* X2920Y5167D01* X2940D01* X3013Y5217D02* X3040D01* X3047Y5224D01* Y5231D01* X3040Y5237D01* X3020D01* X3013Y5231D01* Y5211D01* X3020Y5204D01* X3047D01* Y5167D02* Y5114D01* X3020D01* X3013Y5121D01* Y5141D01* X3020Y5147D01* X3047D01* X2980Y5114D02* X2987Y5121D01* X2980Y5127D01* X2973Y5121D01* X2980Y5114D01* X3067Y5127D02* X3093D01* X3100Y5134D01* Y5141D01* X3093Y5147D01* X3073D01* X3067Y5141D01* Y5121D01* X3073Y5114D01* X3100D01* X3538Y4631D02* X3356D01* X3154Y4429D01* Y4241D01* X3112Y4199D01* X3109Y4165D02* X3091Y4183D01* Y4228D01* X3129Y4266D01* Y4437D01* X3340Y4648D01* X3550D01* X3582Y4616D01* X3587Y4642D02* X3537Y4692D01* X3323D01* X3308Y4677D01* Y4651D01* X3101Y4444D01* Y4295D01* X3071Y4265D01* Y4061D01* X3005Y3995D01* X3003Y3945D02* X2971D01* X2895Y4021D01* Y4248D01* X2923Y4276D01* Y4460D01* X2884Y4499D01* X2875D01* X2852Y4522D01* Y4589D01* X2830Y4611D01* X2812D01* X2662Y4666D02* X2680Y4648D01* X2865D01* X2979Y4534D01* Y4118D01* X2945Y4089D02* X2947Y4087D01* X2978D01* X2998Y4072D02* X2980D01* X2954Y4046D01* X2952Y3996D02* X2924Y4024D01* Y4126D01* X2955Y4157D01* Y4456D01* X2963Y4464D01* Y4514D01* X2845Y4632D01* X2770D01* X2761Y4623D01* X2712D02* X2745Y4590D01* X2825D01* X2840Y4575D01* Y4049D01* X2967Y3922D01* X3019D01* X3028Y3931D01* Y3968D01* X3055Y3995D01* Y3946D02* X3085Y3976D01* Y4098D01* X3181Y4194D01* Y4424D01* X3372Y4615D01* X3517D01* X3537Y4595D01* X3538Y4631D02* X3578Y4591D01* X3518Y4574D02* X3495Y4597D01* X3383D01* X3267Y4481D01* Y4197D01* X3105Y4035D01* Y3946D01* X3198Y3837D02* Y3856D01* X3220Y3878D01* Y3913D01* X3416Y4109D01* Y4538D01* X3438Y4561D02* X3408D01* X3371Y4524D01* Y4126D01* X3221Y3976D01* Y3948D01* X3197Y3924D01* X3187D01* X3170Y3907D01* Y3884D01* X3154Y3868D01* X3127D01* X3097Y3838D01* X3045D02* X3149Y3942D01* Y4019D01* X3319Y4189D01* Y4503D01* X3398Y4582D01* X3467D01* X3487Y4562D01* X3518Y4574D02* X3648D01* X3712Y4638D01* X3612Y4616D02* X3582D01* X3578Y4591D02* X3624D01* X3662Y4629D01* X3637Y4665D02* X3592Y4710D01* X3232D01* X3075Y4553D01* X2962Y4627D02* X3004Y4585D01* Y4113D01* X2978Y4087D01* X2969Y4108D02* X2979Y4118D01* X3025Y4130D02* X3026Y4131D01* Y4613D01* X3012Y4627D01* X3075Y4553D02* Y4319D01* X3047Y4291D01* Y4121D01* X2998Y4072D01* X2897Y3964D02* X2815Y4046D01* Y4531D01* X2813Y4568D02* X2782Y4537D01* Y4002D01* X2832Y3952D01* X2871D01* X2897Y3964D02* Y3794D01* X2882Y3779D01* X2855Y3758D02* X2757Y3660D01* Y3543D01* X2766Y3534D01* Y3458D01* X2798Y3426D01* X2811Y3431D02* X2778Y3464D01* Y3547D01* X2801Y3570D01* Y3653D01* X2913Y3765D01* X2967D01* X2992Y3740D01* X2951Y3742D02* X2921D01* X2926Y3718D02* X3062D01* X3096Y3684D01* X3095D01* X3117Y3665D02* Y3568D01* X3043Y3494D01* X3049Y3470D02* X3134Y3555D01* Y3613D01* X3047Y3684D02* X3026Y3705D01* X2944D01* X2918Y3679D01* Y3624D01* X2852Y3558D01* Y3375D01* X2898Y3329D01* Y3162D01* X2851Y3136D02* X2884Y3169D01* Y3320D01* X2840Y3364D01* Y3632D01* X2926Y3718D01* X2921Y3742D02* X2820Y3641D01* Y3569D01* X2796Y3545D01* Y3466D01* X2825Y3437D01* Y3360D01* X2869Y3316D01* Y3174D01* X2837Y3142D01* Y3060D01* X2764Y2987D01* Y2976D01* X2559Y2771D01* Y1894D01* X2610Y1843D01* Y1672D01* X2705Y1577D01* X2930D01* X2994Y1641D01* X2973Y1647D02* X2920Y1594D01* X2718D01* X2646Y1666D01* Y1873D01* X2576Y1943D01* Y2768D01* X2851Y3043D01* Y3136D01* X2898Y3162D02* X2863Y3127D01* Y3038D01* X2628Y2803D01* Y2386D01* X2598Y2356D01* Y1952D01* X2661Y1889D01* Y1682D01* X2731Y1612D01* X2912D01* X2952Y1652D01* Y1760D01* X2927Y1824D02* X2905Y1802D01* Y1784D01* X2876Y1755D01* X2770D01* X2741Y1784D01* X2777Y1780D02* X2757Y1800D01* Y1961D01* X2749Y1969D01* Y2046D01* X2802Y2099D01* Y2569D01* X2848Y2615D01* Y2668D01* X2896Y2716D01* Y2937D01* X2938Y2979D01* Y3079D01* X2981Y3122D01* Y3171D01* X3003Y3193D01* Y3246D01* X2973Y3276D01* Y3399D01* X2962Y3410D01* Y3489D01* X2965Y3492D01* X3097Y3485D02* Y3497D01* X3173Y3573D01* X3193D01* X3230Y3610D01* Y3719D01* X3355Y3844D01* X3745D01* X3766Y3823D01* X3853D01* X3902Y3872D01* X4064D01* X4109Y3827D01* X4495D01* X4520Y3802D01* X4643D01* X4889Y4048D01* X5416D01* X5516Y4148D01* X5678D01* X5774Y4052D01* X6192D01* X6217Y4077D01* X6256D01* X6276Y4057D01* X6466Y4123D02* X6193Y3850D01* X5920D01* X5826Y3756D01* X5645D01* Y3656D02* X5600Y3611D01* Y3389D01* X5756Y3233D01* X5987D01* X5950Y3179D02* X5587D01* X5424Y3342D01* Y3408D01* X5286Y3546D01* X5284Y3474D02* Y3442D01* X5575Y3151D01* X5879D01* X6070Y2960D01* X6101D01* X6120Y2979D01* X6152D01* X6187Y2944D01* X6235D01* X6185Y2994D02* X6135D01* X5950Y3179D01* X5987Y3233D02* X6091Y3129D01* X6103D01* X5645Y3606D02* X5759D01* X5910Y3455D01* Y3440D01* X6020Y3330D01* X6099D01* X6421Y3008D01* Y2980D01* X6404Y2963D01* Y2928D01* X6435Y2897D01* Y2844D01* X6335D02* Y2898D01* X6301Y2932D01* Y2956D01* X6317Y2972D01* Y3013D01* X6179Y3151D01* X6148D01* X5948Y3351D01* X5850D01* X5645Y3556D01* X5679Y3206D02* X5303Y3582D01* X4959D01* X4912Y3629D01* X4869D01* X4849Y3609D01* X4821D01* X4803Y3627D01* X4768D01* X4647Y3506D01* X4598D01* X4574Y3530D01* X4163D01* X4142Y3509D01* X3955D01* X3880Y3584D01* X3816D01* X3830Y3663D02* X3938Y3771D01* X3972Y3795D02* X3980Y3787D01* X3972Y3795D02* X3894D01* X3850Y3751D01* X3868Y3793D02* X3891Y3816D01* X3944D01* X3748Y3486D02* X3815D01* X3930Y3371D01* Y3259D01* X4031Y3158D01* Y2915D01* X4094Y2852D01* Y2761D01* X4109Y2746D01* X4148D01* X4513Y2381D01* X4708D01* X4762Y2327D01* X5026D01* X5156Y2197D01* X5293D01* X5313Y2217D01* X5452D01* X5476Y2193D01* X5626D01* X5651Y2218D01* X5783D01* X5811Y2190D01* X5921D01* Y2236D02* X5812Y2345D01* X5806Y2375D02* X5917Y2264D01* X5947D01* X5975Y2236D01* Y2136D02* X5942Y2103D01* X5919D01* X5898Y2082D01* X4954D01* X4845Y2191D01* X4546D01* X4507Y2230D01* Y2246D01* X4466Y2287D01* X4469Y2311D02* X4529Y2251D01* X4836D01* X4980Y2107D01* X5901D01* X5909Y2115D01* X5933D02* X5947Y2129D01* X5933Y2115D02* X5909D01* X5921Y2136D02* X5752D01* X5739Y2149D01* X5098D01* X4970Y2277D01* X4531D01* X4479Y2329D01* X4453D01* X4443Y2339D01* Y2363D01* X4141Y2665D01* X4114D01* X4100Y2679D01* Y2707D01* X3933Y2874D01* Y3066D01* X3896Y3103D01* Y3356D01* X3828Y3424D01* X3782D01* X3766Y3440D01* X3743D01* X3698Y3441D02* X3720Y3463D01* X3763D01* X3766Y3466D01* X3810D01* X3912Y3364D01* Y3244D01* X3959Y3197D01* Y2947D01* X3953Y2941D01* Y2876D01* X4104Y2725D01* X4132D01* X4146Y2711D01* Y2683D01* X4166Y2663D01* X4188D01* X4184Y2728D02* X4504Y2408D01* X4983D01* X5046Y2345D01* X5812D01* X6235Y2844D02* Y2895D01* X6269Y2929D01* Y2963D01* X6103Y3129D01* X6085Y3094D02* X6055Y3124D01* X6031D01* X5949Y3206D01* X5679D01* X5545Y3406D02* X5494Y3457D01* Y3923D01* X5469Y3948D01* X5437D01* X5413Y3924D01* Y3724D01* X5388Y3699D01* X5218D01* X4785Y3594D02* Y3541D01* X4821Y3505D01* Y3481D01* X4797Y3457D01* Y3434D01* X4820Y3411D01* Y3380D01* X4796Y3356D01* Y3335D01* X4821Y3310D01* Y3279D01* X4800Y3258D01* Y3230D01* X4820Y3210D01* Y3175D01* X4785Y3140D01* Y3094D01* X4184Y2728D02* Y2946D01* X4056Y3074D01* Y3160D01* X3948Y3268D01* Y3418D01* X3855Y3511D01* X3678D01* X3648Y3541D01* X3591Y3548D02* X3605Y3562D01* X3659D01* X3692Y3529D01* X3858D01* X3963Y3424D01* Y3319D01* X4079Y3203D01* Y3096D01* X4204Y2971D01* Y2736D01* X4471Y2469D01* X5020D01* X5114Y2375D01* X5806D01* X5921Y2290D02* X5808Y2403D01* X5173D01* X5047Y2529D01* X4455D01* X4226Y2758D01* Y2999D01* X4101Y3124D01* Y3253D01* X3978Y3376D01* Y3430D01* X3861Y3547D01* X3742D01* X3700Y3589D01* X3591D01* Y3497D02* X3622Y3466D01* Y3435D01* X3637Y3420D01* X3666D01* X3676Y3410D01* Y3387D01* X3688Y3375D01* X3713D01* X3724Y3364D01* X3755D01* X3791Y3328D01* Y3162D01* X3809Y3144D01* Y3117D01* X3783Y3091D01* Y2871D01* X4227Y2427D01* X4257D01* X4443Y2241D01* Y2208D01* X4584Y2067D01* X4865D01* X4896Y2036D01* X5921D01* Y1990D02* X5675D01* X5668Y1997D01* X4864D01* X4857Y1990D01* X4597D01* X4409Y2178D01* X4396D01* X4374Y2200D01* Y2276D01* X4308Y2342D01* Y2358D01* X4261Y2405D01* X4217D01* X3767Y2855D01* Y3249D01* X3778Y3260D01* Y3309D01* X3747Y3340D01* X3745Y3285D02* X3738Y3278D01* Y2826D01* X4213Y2351D01* Y2344D01* X4257Y2300D01* X4289D01* X4338Y2251D01* Y2190D01* X4573Y1955D01* X5439D01* X5455Y1939D01* X5646D01* X5657Y1950D01* X5874D01* X5911Y1913D01* X5939D01* X6086Y1814D02* X6101Y1799D01* Y1742D01* X6299Y1544D01* Y1380D01* X6275Y1390D02* X6208Y1457D01* X6171D01* X6151Y1477D01* Y1497D01* X6236Y1340D02* X6259D01* X6299Y1380D01* X6492Y1168D02* X6515Y1145D01* X6492Y1168D02* X2219D01* X2170Y1216D01* X2074D01* X2010Y1280D01* X1976D01* D01* X2975Y2835D02* Y2857D01* X3025Y2907D01* Y3042D01* X3151Y3168D01* Y3252D01* X3167Y3268D01* Y3396D01* X3196Y3425D01* Y3487D01* X3248Y3486D02* X3220Y3514D01* X3186D01* X3171Y3499D01* Y3438D01* X3123Y3390D01* Y3270D01* X3134Y3259D01* Y3179D01* X3007Y3052D01* Y2923D01* X2952Y2868D01* Y2828D01* X3018Y2762D01* Y2665D01* X2947Y2594D01* Y2089D01* X2900Y2042D01* Y1959D01* X2874Y1933D01* X2876Y1831D02* X2850Y1857D01* Y2028D01* X2902Y2080D01* Y2584D01* X2998Y2680D01* Y2758D01* X2936Y2821D01* Y2880D01* X2975Y2919D01* Y3013D01* X2964Y3024D01* Y3063D01* X3043Y3142D01* Y3182D01* X3028Y3197D01* Y3391D01* X2988Y3431D01* Y3461D01* X3007Y3480D01* Y3495D01* X2994Y3531D02* X2986Y3523D01* Y3479D01* X2974Y3467D01* Y3423D01* X3000Y3397D01* Y3316D01* X3015Y3301D01* Y3187D01* X3027Y3175D01* Y3147D01* X2950Y3070D01* Y2964D01* X2918Y2932D01* Y2815D01* X2946Y2787D01* Y2667D01* X2849Y2570D01* Y2080D01* X2799Y2030D01* Y1803D01* X2822Y1780D01* X2823Y1726D02* X2803Y1706D01* X2743D01* X2709Y1740D01* Y1930D01* X2724Y1940D02* Y1763D01* X2735Y1752D01* X2741Y1784D02* Y1950D01* X2730Y1961D01* Y2094D01* X2776Y2140D01* Y2597D01* X2790Y2611D01* Y2698D01* X2851Y2759D01* Y2917D01* X2926Y2992D01* Y3086D01* X2965Y3125D01* Y3172D01* X2989Y3196D01* X2976Y3200D02* X2949Y3173D01* Y3129D01* X2912Y3092D01* Y3004D01* X2824Y2916D01* Y2886D01* X2736Y2798D01* Y2762D01* X2738Y2760D01* Y2598D01* X2749Y2587D01* Y2176D01* X2683Y2110D01* Y1981D01* X2724Y1940D01* X2709Y1930D02* X2663Y1976D01* Y2195D01* X2714Y2246D01* Y2499D01* X2725Y2510D01* Y2681D01* X2719Y2687D01* Y2813D01* X2800Y2894D01* Y2917D01* X2900Y3017D01* Y3100D01* X2934Y3134D01* Y3361D01* X2926Y3369D01* Y3465D01* X2920Y3471D01* Y3528D01* X2969Y3577D01* Y3592D01* X2996Y3585D02* X2994D01* X2932Y3523D01* Y3477D01* X2938Y3471D01* Y3381D01* X2949Y3370D01* Y3250D01* X2976Y3223D01* Y3200D01* X2989Y3196D02* Y3235D01* X2961Y3263D01* Y3385D01* X2950Y3396D01* Y3477D01* X2944Y3483D01* Y3518D01* X2988Y3562D01* X3007D01* X3022Y3577D01* Y3594D01* X3040Y3612D01* X3021Y3614D02* X2991D01* X2969Y3592D01* X2947Y3585D02* X2918D01* X2877Y3544D01* Y3395D01* X2922Y3350D01* Y3144D01* X2887Y3109D01* Y3025D01* X2764Y3095D02* X2766Y3093D01* Y3063D01* X2751Y3048D01* X2733D01* X2677Y2992D01* Y2959D01* X2585Y2867D01* X2570D01* X2555Y2912D02* X2611Y2968D01* Y2985D01* X2664Y3038D01* X2673D01* X2710Y3075D01* Y3108D01* X2721Y3119D01* Y3236D01* X2732Y3247D01* X2758D01* X2770Y3259D01* Y3404D01* X2746Y3428D01* X2745Y3389D02* X2731Y3375D01* Y3337D01* X2720Y3326D01* X2700D01* X2689Y3315D01* Y3294D01* X2693Y3290D01* Y3246D01* X2694Y3245D01* Y3102D01* X2682Y3090D01* X2658D01* X2493Y3482D02* X2538Y3527D01* X2614D01* X2631Y3510D02* X2614Y3527D01* X2672Y3506D02* X2698D01* X2784Y3420D01* Y3193D01* X2764Y3173D01* Y3095D01* X2743Y3109D02* X2724Y3090D01* Y3064D01* X2657Y2997D01* Y2966D01* X2580Y2889D01* X2554D01* X2522Y2857D01* X2500Y2899D02* X2511Y2910D01* Y2964D01* X2591Y3044D01* Y3075D01* X2606Y3090D02* X2635D01* X2651Y3106D01* Y3302D01* X2688Y3339D01* Y3409D01* X2667Y3430D01* X2579Y3330D02* X2609D01* X2667Y3388D01* X2666Y3349D02* X2609Y3292D01* Y3261D01* X2597Y3249D01* X2582D01* X2568Y3235D01* X2553Y3228D02* Y3304D01* X2579Y3330D01* X2613Y3372D02* X2628Y3387D01* X2613Y3372D02* X2577D01* X2535Y3330D01* Y3227D01* X2492Y3184D01* Y3105D01* X2422Y3035D01* Y2957D01* X2362Y2897D01* Y2741D01* X2281Y2660D01* X2331Y2564D02* X2259Y2636D01* Y2684D01* X2335Y2760D01* Y2991D01* X2413Y3069D01* Y3133D01* X2493Y3213D01* Y3482D01* X2273Y3547D02* X2255Y3529D01* Y3172D01* X2274Y3153D01* X2300Y3142D02* Y3215D01* X2291Y3224D01* Y3290D01* X2311Y3310D01* Y3389D01* X2312Y3272D02* Y3231D01* X2332Y3211D01* Y3095D01* X2310Y3073D01* Y2783D01* X2219Y2692D01* Y2592D01* X2181D02* Y2703D01* X2282Y2804D01* Y3124D01* X2300Y3142D01* X2411Y2885D02* Y2910D01* X2466Y2965D01* Y3004D01* X2489Y3027D01* Y3069D01* X2509Y3089D01* Y3184D01* X2553Y3228D01* X2568Y3235D02* Y3167D01* X2525Y3124D01* Y3074D01* X2509Y3058D01* Y3016D01* X2481Y2988D01* Y2943D01* X2441Y2903D01* X2473Y2873D02* X2507D01* X2526Y2892D01* Y2953D01* X2575Y3002D01* X2583D01* X2645Y3064D01* Y3077D01* X2658Y3090D01* X2606D02* X2591Y3075D01* X2561Y3053D02* Y3038D01* X2497Y2974D01* Y2928D01* X2382Y2813D01* Y2649D01* X2350Y2617D01* X2331Y2564D02* X2447D01* X2329Y2405D02* X2434Y2300D01* Y2108D01* X2497Y2045D01* Y1606D01* X2591Y1512D01* X3809D01* X3925Y1396D01* X4717D01* X4737Y1376D01* X4802D01* X4813Y1387D01* X4869D01* X4945Y1420D02* X4954Y1411D01* X5121D01* X5175Y1357D01* X6030D01* X6121Y1448D01* Y1490D01* X6151Y1497D02* X6133Y1515D01* X6065D01* X6049Y1499D01* Y1485D01* X6028Y1464D01* X5959D01* X5975Y1936D02* X5962D01* X5939Y1913D01* X5921Y1890D02* X5945D01* X5968Y1913D01* X5990D01* X5999Y1904D01* Y1879D01* X5983Y1863D01* X5967D01* X5975Y1890D02* X5971D01* X5950Y1869D01* X5908D01* X5886Y1891D01* Y1912D01* X5867Y1931D01* X5736D01* X5698Y1893D01* X5447D01* X5409Y1931D01* X5473Y1816D02* X5881D01* X5901Y1836D01* X5921D01* X5931Y1812D02* X5948Y1829D01* X5967Y1863D02* X5948Y1844D01* Y1829D01* X5931Y1812D02* X5907D01* X5898Y1803D01* X5921Y1790D02* X5888Y1757D01* Y1741D01* X5871Y1724D01* X5878Y1710D02* X5900Y1732D01* Y1748D01* X5909Y1757D01* X5954D01* X5975Y1736D01* X6086Y1814D02* X6063D01* X6054Y1823D01* Y1991D01* X6032Y2013D01* X4868D01* X4846Y2035D01* X4636D01* X4615Y2014D01* X4945Y1420D02* X4236D01* X3791Y1865D01* Y2004D01* X3720Y2075D01* Y2087D01* X3490Y2317D01* X3458D01* X3444Y2331D01* Y2351D01* X3287Y2508D01* Y2577D01* X3250Y2614D01* Y2836D01* X3181Y2905D01* Y3224D01* X3174Y3231D01* X3202Y3217D02* Y3004D01* X3262Y2944D01* Y2881D01* X3282Y2861D01* X3289D01* X3300Y2850D01* Y2543D01* X3736Y2107D01* Y2086D01* X3808Y2014D01* X3823D01* X3845Y1992D01* Y1957D01* X4210Y1592D01* X4230D01* X4347Y1475D01* X5084D01* X5144Y1415D01* X5954D01* X5975Y1436D01* X5959Y1464D02* X5952Y1457D01* X5132D01* X5090Y1499D01* X4486D01* X4398Y1587D01* X4317D01* X3890Y2014D01* X3863D01* X3847Y2030D01* Y2051D01* X3834Y2064D01* X3807D01* X3792Y2079D01* Y2100D01* X3775Y2117D01* X3765D01* X3483Y2399D01* X3473D01* X3455Y2417D01* Y2460D01* X3356Y2559D01* Y2641D01* X3312Y2685D01* Y2969D01* X3297Y2984D01* Y3066D01* X3266Y3097D01* Y3312D01* X3293Y3339D01* X3287Y3293D02* Y3121D01* X3347Y3061D01* Y2997D01* X3329Y2979D01* Y2750D01* X3370Y2709D01* X3392D01* X3400Y2701D01* Y2539D01* X3444Y2495D01* X3452D01* X3693Y2254D01* Y2234D01* X3797Y2130D01* X3814D01* X3842Y2102D01* Y2083D01* X3862Y2063D01* X3884D01* X3899Y2048D01* Y2030D01* X3920Y2009D01* X3947D01* X4353Y1603D01* X4418D01* X4498Y1523D01* X5095D01* X5130Y1488D01* X5878D01* X5897Y1469D01* X5937D01* X5948Y1480D02* Y1497D01* X5963Y1512D01* X5966Y1615D02* X5946Y1595D01* Y1583D01* X5932Y1569D01* X5898Y1613D02* X5853D01* X5838Y1598D01* X5197D01* X5159Y1636D01* X4536D01* X4412Y1760D01* X4349D01* X3680Y2429D01* Y2488D01* X3583Y2585D01* Y2704D01* X3555Y2732D01* Y2819D01* X3514Y2860D01* Y2993D01* X3491Y3016D01* Y3214D01* X3465Y3240D01* Y3296D01* X3440Y3321D01* X3415D01* X3393Y3343D01* X3647Y3441D02* X3668D01* X3690Y3419D01* X3752D01* X3769Y3402D01* Y3391D01* X3822Y3338D01* Y3202D01* X3833Y3191D01* Y3089D01* X3812Y3068D01* Y2999D01* X3865Y2946D01* Y2842D01* X4082Y2625D01* X4097D01* X4435Y2287D01* X4466D01* X4469Y2311D02* X4431D01* X4386Y2356D01* Y2381D01* X4121Y2646D01* X4083D01* X4038Y2691D01* Y2741D01* X3912Y2867D01* Y2930D01* X3826Y3016D01* Y3053D01* X3847Y3074D01* Y3211D01* X3839Y3219D01* Y3353D01* X3791Y3401D01* X3748Y3392D02* X3806Y3334D01* Y3181D01* X3821Y3166D01* Y3105D01* X3798Y3082D01* Y2981D01* X3840Y2939D01* Y2840D01* X4078Y2602D01* X4100D01* X4440Y2262D01* X4465D01* X4488Y2239D01* Y2197D01* X4547Y2138D01* X4840D01* X4921Y2057D01* X5954D01* X5975Y2036D01* Y1990D02* X5957D01* X5936Y1969D01* X5658D01* X5645Y1982D01* X5482D01* X5477Y1977D01* X4578D01* X4356Y2199D01* Y2263D01* X4297Y2322D01* X4280D01* X4258Y2344D01* Y2361D01* X4243Y2376D01* X4218D01* X3752Y2842D01* Y3256D01* X3766Y3270D01* Y3299D01* X3752Y3313D01* X3743D01* X3722Y3334D01* Y3348D01* X3708Y3362D01* X3676D01* X3664Y3374D01* Y3399D01* X3655Y3408D01* X3622D01* X3590Y3440D01* X3541Y3340D02* X3542Y3339D01* Y3262D01* X3559Y3245D01* Y2943D01* X3622Y2880D01* Y2691D01* X3658Y2655D01* Y2613D01* X4000Y2271D01* Y2235D01* X4042Y2193D01* X4059D01* X4099Y2153D01* Y2102D01* X4144Y2057D01* X4247D01* X4585Y1719D01* X5273D01* X5297Y1695D01* X5880D01* X5871Y1724D02* X5770D01* X5743Y1751D01* X5308D01* X5264Y1795D01* X5221D01* X5217Y1791D01* X4635D01* X4258Y2168D01* X4146D01* X4100Y2214D01* Y2240D01* X4069Y2271D01* X4059D01* X3682Y2648D01* Y2679D01* X3651Y2710D01* Y3140D01* X3613Y3178D01* Y3267D01* X3594Y3286D01* X3646Y3341D02* Y3333D01* X3675Y3304D01* Y3210D01* X3709Y3176D01* Y2745D01* X4163Y2291D01* X4179D01* X4216Y2254D01* X4282D01* X4303Y2233D01* Y2177D01* X4604Y1876D01* X5025D01* X5035Y1886D01* X5403D01* X5473Y1816D01* X5409Y1931D02* X4574D01* X4320Y2185D01* Y2242D01* X4285Y2277D01* X4221D01* X4168Y2330D01* Y2357D01* X3723Y2802D01* Y3297D01* X3704Y3316D01* X3686D01* X3667Y3335D01* Y3354D01* X3657Y3364D01* X3615D01* X3595Y3384D01* X3545Y3386D02* X3562Y3369D01* Y3263D01* X3571Y3254D01* Y3211D01* X3580Y3202D01* Y2970D01* X3639Y2911D01* Y2698D01* X3670Y2667D01* Y2631D01* X4043Y2258D01* Y2236D01* X4139Y2140D01* X4183D01* X4202Y2121D01* Y2096D01* X4216Y2082D01* X4248D01* X4569Y1761D01* X5225D01* X5255Y1731D01* X5726D01* X5747Y1710D01* X5878D01* X5880Y1695D02* X5921Y1736D01* Y1690D02* X5914Y1683D01* X5859D01* X5851Y1675D01* X4603D01* X4501Y1777D01* X4486D01* X4240Y2023D01* X4158D01* X3947Y2234D01* Y2291D01* X3646Y2592D01* Y2644D01* X3607Y2683D01* Y2852D01* X3547Y2912D01* Y3237D01* X3498Y3286D01* X3443D02* X3444Y3285D01* Y2899D01* X3497Y2846D01* Y2687D01* X3560Y2624D01* Y2527D01* X3619Y2468D01* X3635D01* X3657Y2446D01* Y2420D01* X4349Y1728D01* X4413D01* X4525Y1616D01* X5027D01* X5065Y1578D01* X5851D01* X5860Y1569D01* X5932D01* X5921Y1590D02* X5898Y1613D01* X5921Y1636D02* X5285D01* X5268Y1653D01* X4553D01* X4265Y1941D01* X4209D01* X3841Y2309D01* Y2361D01* X3824Y2378D01* X3813D01* X3595Y2596D01* Y2720D01* X3581Y2734D01* Y2831D01* X3529Y2883D01* X3531D01* Y3174D01* X3529D01* X3535Y3180D01* Y3217D01* X3477Y3275D01* Y3309D01* X3469Y3317D01* Y3418D01* X3491Y3440D01* X3442Y3442D02* X3420Y3420D01* X3394D01* X3372Y3398D01* Y3186D01* X3392Y3166D01* Y2957D01* X3415Y2934D01* Y2857D01* X3403Y2845D01* Y2816D01* X3474Y2745D01* Y2682D01* X3503Y2653D01* Y2528D01* X3527Y2504D01* X3543D01* X3594Y2453D01* Y2413D01* X3619Y2388D01* X3653D01* X4348Y1693D01* X4407D01* X4507Y1593D01* X4940D01* X4976Y1557D01* X5942D01* X5975Y1590D01* X5966Y1615D02* X5986D01* X6000Y1601D01* Y1578D01* X5975Y1553D01* Y1536D01* X5963Y1512D02* X5990D01* X5998Y1520D01* Y1547D01* X6014Y1563D01* X6027D01* X6042Y1578D01* Y1948D01* X6023Y1967D01* X5966D01* X5935Y1936D01* X5921D01* X5898Y1803D02* Y1787D01* X5881Y1770D01* X5446D01* X5407Y1809D01* X4646D01* X4265Y2190D01* X4219D01* X4202Y2207D01* Y2237D01* X4179Y2260D01* X4114D01* X4042Y2332D01* Y2351D01* X3695Y2698D01* Y2745D01* X3667Y2773D01* Y3147D01* X3634Y3180D01* Y3264D01* X3619Y3279D01* Y3342D01* X3599Y3362D01* X3584D01* X3574Y3372D01* Y3395D01* X3562Y3407D01* X3542D01* X3519Y3430D01* Y3444D01* X3500Y3463D01* X3375D01* X3354Y3442D01* X3350Y3387D02* Y3373D01* X3330Y3353D01* Y3142D01* X3360Y3112D01* Y2965D01* X3345Y2950D01* Y2894D01* X3383Y2856D01* Y2812D01* X3449Y2746D01* Y2570D01* X3459Y2560D01* Y2517D01* X3656Y2320D01* X3685D01* X3756Y2249D01* Y2239D01* X3793Y2202D01* Y2186D01* X3823Y2156D01* X3835D01* X3892Y2099D01* Y2084D01* X3912Y2064D01* X3933D01* X4343Y1654D01* X4405D01* X4524Y1535D01* X5212D01* X5224Y1523D01* X5888D01* X5921Y1490D01* X5937Y1469D02* X5948Y1480D01* X7012Y876D02* X7045Y843D01* X7072Y863D02* X7105D01* Y876D02* X7072D01* X7045D02* X7012Y843D01* Y786D02* Y759D01* X7018Y753D01* X7038D01* X7045Y759D01* X7012Y739D02* X7018Y733D01* X7038D01* X7045Y739D01* Y786D01* X7072D02* X7105D01* X7072Y773D02* X7105D01* X7125Y883D02* X7138Y896D01* Y843D01* X7118D02* X7158D01* X7172Y849D02* X7178Y843D01* X7205D01* X7212Y849D01* Y869D01* X7205Y876D01* X7172D01* Y896D01* X7212D01* X7232Y869D02* X7225Y876D01* Y889D01* X7232Y896D01* X7258D01* X7265Y889D01* Y876D01* X7258Y869D01* X7232D01* X7225Y863D01* Y849D01* X7232Y843D01* X7258D01* X7265Y849D01* Y863D01* X7258Y869D01* Y806D02* X7232D01* X7225Y799D01* Y759D01* X7232Y753D01* X7258D01* X7265Y759D01* Y799D01* X7258Y806D01* X7265D02* X7225Y753D01* X7298D02* X7292Y759D01* X7298Y766D01* X7305Y759D01* X7298Y753D01* X7338D02* X7332Y759D01* Y799D01* X7338Y806D01* X7365D01* X7372Y799D01* Y759D01* X7365Y753D01* X7338D01* X7332D02* X7372Y806D01* X7425D02* X7385Y753D01* X7392D02* X7418D01* X7425Y759D01* Y799D01* X7418Y806D01* X7392D01* X7385Y799D01* Y759D01* X7392Y753D01* X7438D02* Y786D01* X7445D02* X7452D01* X7438Y779D02* X7445Y786D01* X7452D02* X7458Y779D01* Y753D01* X7478D02* Y779D01* X7472Y786D01* X7465D01* X7458Y779D01* X7492Y753D02* Y786D01* Y779D02* X7498Y786D01* X7505D01* X7512Y779D01* X7518Y786D01* X7512Y779D02* Y753D01* X7532D02* Y779D01* X7525Y786D01* X7518D01* X7512Y869D02* X7518Y876D01* X7525D01* X7532Y869D01* Y843D01* X7512D02* Y869D01* X7505Y876D01* X7498D01* X7492Y869D01* Y876D02* Y843D01* X7438D02* Y876D01* Y869D02* X7445Y876D01* X7452D01* X7458Y869D02* Y843D01* X7478D02* Y869D01* X7472Y876D01* X7465D01* X7458Y869D01* X7452Y876D01* X7425Y896D02* X7385Y843D01* X7392D02* X7418D01* X7425Y849D01* Y889D01* X7418Y896D01* X7392D01* X7385Y889D01* Y849D01* X7392Y843D01* X7372Y896D02* X7332D01* Y876D01* X7365D01* X7372Y869D01* Y849D01* X7365Y843D01* X7338D01* X7332Y849D01* X7298Y856D02* X7292Y849D01* X7298Y843D01* X7305Y849D01* X7298Y856D01* X7923Y1181D02* X7957Y1214D01* X7937Y1241D02* Y1274D01* X7923D02* Y1241D01* Y1214D02* X7957Y1181D01* X8013D02* X8040D01* X8047Y1188D01* Y1208D01* X8040Y1214D01* X8060Y1181D02* X8067Y1188D01* Y1208D01* X8060Y1214D01* X8013D01* Y1241D02* Y1274D01* X8027Y1241D02* Y1274D01* X7917Y1294D02* X7903Y1308D01* X7957D01* Y1288D02* Y1328D01* X7950Y1341D02* X7957Y1348D01* Y1374D01* X7910Y1381D02* X7903Y1374D01* Y1348D01* X7910Y1341D01* X7950D01* X7937D02* X7930Y1348D01* Y1374D01* X7937Y1381D01* X7950D01* X7957Y1374D01* Y1401D02* Y1428D01* X7950Y1461D02* X7943Y1468D01* X7950Y1474D01* X7957Y1468D01* X7950Y1461D01* Y1501D02* X7910D01* X7903Y1508D01* Y1534D01* X7910Y1541D01* X7950D01* X7993D02* Y1501D01* X8013D01* Y1534D01* X8020Y1541D01* X8040D01* X8047Y1534D01* Y1561D02* Y1588D01* X8040Y1594D01* X8000D01* X7993Y1588D01* Y1594D02* X8047Y1554D01* Y1534D02* Y1508D01* X8040Y1501D01* Y1461D02* X8047Y1468D01* X8040Y1474D01* X8033Y1468D01* X8040Y1461D01* X8047Y1434D02* Y1394D01* Y1414D02* X7993D01* X8007Y1401D01* X7957Y1428D02* X7950Y1434D01* X7910D01* X7903Y1428D01* Y1434D02* X7957Y1394D01* Y1401D02* X7950Y1394D01* X7910D01* X7903Y1401D01* Y1428D01* X8020Y1681D02* X8013Y1688D01* Y1694D01* X8020Y1701D01* X8047D01* Y1681D02* X8020D01* X8013Y1674D01* Y1668D01* X8020Y1661D01* X8013D02* X8047D01* X8013Y1621D02* X8020Y1628D01* X8013Y1634D01* Y1641D01* X8020Y1648D01* X8047D01* Y1628D02* X8020D01* X8013Y1621D02* Y1614D01* X8020Y1608D01* X8013D02* X8047D01* Y1561D02* X8040Y1554D01* X8000D01* X7993Y1561D01* Y1588D01* X7957D02* Y1561D01* X7950Y1541D02* X7957Y1534D01* Y1508D01* X7950Y1501D01* X7957D02* X7903Y1541D01* Y1588D02* Y1561D01* X7910Y1554D01* X7950D01* X7957Y1561D01* Y1554D02* X7903Y1594D01* Y1588D02* X7910Y1594D01* X7950D01* X7957Y1588D01* Y1608D02* X7923D01* X7930D02* X7923Y1614D01* Y1621D01* X7930Y1628D02* X7957D01* X7923Y1621D02* X7930Y1628D01* X7923Y1634D01* Y1641D01* X7930Y1648D01* X7957D01* Y1661D02* X7923D01* X7930D02* X7923Y1668D01* Y1674D01* X7930Y1681D01* X7957D01* Y1701D02* X7930D01* X7923Y1694D01* Y1688D01* X7930Y1681D01* X7025Y1940D02* X7080Y1995D01* Y2075D01* X7096Y2091D01* X7142D01* X7130Y2109D02* X7095D01* X7065Y2079D01* Y2026D01* X7025Y1986D01* Y2040D02* X7050Y2065D01* Y2116D01* X7075Y2141D01* Y2218D01* X7096Y2239D01* X7114D01* X7144Y2269D01* Y2787D01* X7038Y2893D01* Y3440D01* X7085Y3487D01* X7113D01* X7104Y3301D02* X7083Y3280D01* Y3086D01* X7061Y3064D01* Y2891D01* X7164Y2788D01* Y2143D01* X7130Y2109D01* X7142Y2091D02* X7185Y2134D01* Y2790D01* X7083Y2892D01* Y3022D01* X7097Y3036D01* X7119D01* Y2984D02* X7103Y2968D01* Y2895D01* X7206Y2792D01* Y2036D01* X7126Y1956D01* X7102D01* X7066Y1920D01* Y1881D01* X7025Y1840D01* X6823Y1693D02* X6843Y1713D01* X6998D01* X7025Y1740D01* X7192Y1573D01* X7281D01* X7302Y1594D01* Y2507D01* X7330Y2535D01* X7361D01* X7385Y2559D01* Y2589D01* X7410Y2614D01* X7437D01* X7464Y2641D01* Y2692D01* X7504Y2732D01* X6276Y4057D02* X6297D01* X6334Y4094D01* X6385D01* X6335Y4144D02* D01* X6283D01* X6246Y4107D01* X6222D01* X6198Y4131D01* X6100D01* X5974Y4257D01* X4998D01* X4645Y3904D01* X4536D01* X4505Y3935D01* X4274D01* X4238Y3899D01* X3822D01* X3790Y3867D01* X3346D01* X3267Y3788D01* X3246Y3815D02* X3348Y3917D01* X3757D01* X3794Y3954D01* X4119D01* X4143Y3930D01* X4215D01* X4232Y3947D01* X4411D01* X4451Y3987D01* X4625D01* X4933Y4295D01* X6018D01* X6156Y4157D01* X6196D01* X6221Y4182D01* X6248D01* X6271Y4159D01* X6300D01* X6322Y4181D01* X6349D01* X6386Y4144D01* X6435D01* X6466Y4123D02* Y4213D01* X6435Y4244D01* X6335D02* X6284D01* X6252Y4212D01* X6218D01* X6188Y4242D01* X6151D01* X6063Y4330D01* X4871D01* X4631Y4090D01* X4395D01* X4289Y3984D01* X3781D01* X3767Y3970D01* X3342D01* X3325Y3953D01* Y3936D01* X3224Y3835D01* Y3772D01* X3117Y3665D01* X3162Y3641D02* X3134Y3613D01* X3070Y3648D02* Y3628D01* X3054Y3612D01* X3040D01* X3021Y3614D02* X3047Y3640D01* X3070Y3648D02* X3057Y3661D01* X2972D01* X2954Y3643D01* X2939Y3669D02* X2933Y3663D01* Y3619D01* X2864Y3550D01* Y3385D01* X2910Y3339D01* Y3154D01* X2875Y3119D01* Y3032D01* X2643Y2800D01* Y2373D01* X2621Y2351D01* Y1958D01* X2677Y1902D01* Y1695D01* X2742Y1630D01* X2902D01* X2938Y1666D01* Y1687D01* X2927Y1698D01* Y1724D01* X2952Y1760D02* X2972Y1780D01* X2994Y1791D02* X3027Y1824D01* X3006Y1759D02* Y1626D01* X2939Y1559D01* X2693D01* X2585Y1667D01* Y1836D01* X2543Y1878D01* Y2774D01* X2743Y2974D01* Y2995D01* X2824Y3076D01* Y3149D01* X2855Y3180D01* Y3312D01* X2811Y3356D01* Y3431D01* X2798Y3426D02* Y3351D01* X2839Y3310D01* Y3213D01* X2843Y3209D01* Y3189D01* X2809Y3155D01* Y3086D01* X2723Y3000D01* X2708D01* X2693Y2985D01* Y2949D01* X2527Y2783D01* Y1863D01* X2541Y1849D01* Y1680D01* X2679Y1542D01* X2949D01* X3029Y1622D01* Y1735D01* X3006Y1759D02* X3027Y1780D01* X2994Y1791D02* Y1641D01* X2973Y1647D02* Y1726D01* X2874Y1727D02* X2871Y1730D01* X2860D01* X2852Y1725D01* X2851Y1716D01* X2859Y1710D01* X2860D01* X2870D01* X2871D01* X2879Y1704D01* X2878Y1695D01* X2870Y1690D01* X2800D01* X2792Y1685D01* X2791Y1676D01* X2799Y1670D01* X2800D01* X2830D01* X2831D01* X2839Y1664D01* X2838Y1655D01* X2830Y1650D01* X2751D01* X2693Y1708D01* Y1916D01* X2641Y1968D01* Y2344D01* X2670Y2373D01* Y2796D01* X2783Y2909D01* Y2921D01* X2887Y3025D01* X2985Y3039D02* Y3064D01* X3055Y3134D01* Y3189D01* X3040Y3204D01* Y3231D01* X3046Y3237D01* Y3412D01* X3030Y3428D01* Y3458D01* X3042Y3470D01* X3049D01* X3051Y3443D02* X3072Y3464D01* X3106D01* X3123Y3481D01* Y3498D01* X3175Y3550D01* X3243D01* X3317Y3624D01* Y3727D01* X3350Y3760D01* X3364D01* X3388Y3784D01* Y3799D01* X3409Y3820D01* X3729D01* X3756Y3793D01* X3868D01* X3850Y3751D02* X3567D01* X3532Y3786D01* X3491D01* X3486Y3791D01* X3523Y3765D02* X3554Y3734D01* X3661D01* X3732Y3663D01* X3830D01* X3425Y3798D02* X3505Y3718D01* X3617D01* X3719Y3616D01* Y3597D01* X3753Y3563D01* X3868D01* X4091Y3340D01* Y3311D01* X4155Y3247D01* Y3123D01* X4268Y3010D01* Y2748D01* X4325Y2691D01* X4188Y2663D02* X4548Y2303D01* X4999D01* X5134Y2168D01* X5953D01* X5947Y2129D02* Y2141D01* X5969Y2163D01* X5953Y2168D02* X5975Y2190D01* X5969Y2163D02* X6306D01* X6456Y2313D01* X6498D01* X6625Y2440D01* X6849Y2512D02* Y2310D01* X6825Y2286D01* X6871Y2340D02* X6899Y2368D01* Y2493D01* X6906Y2500D01* Y3071D01* X6895Y3082D01* Y3505D01* X6950Y3560D01* Y4115D01* X7079Y4244D01* X7117D01* X7141Y4234D02* Y4255D01* X7119Y4212D02* X7141Y4234D01* Y4255D02* X7128Y4268D01* X7065D01* X6931Y4134D01* Y3574D01* X6878Y3521D01* Y3056D01* X6890Y3044D01* Y2844D01* X6862Y2816D01* Y2525D01* X6849Y2512D01* X7025Y2440D02* X6962Y2503D01* Y2582D01* X6918Y2626D01* Y3070D01* X6947Y3099D01* Y3523D01* X6968Y3544D01* Y3976D01* X7104Y4112D01* X7143Y4126D02* Y3843D01* X7124Y3824D01* X7083D01* X7119Y3764D02* X7089D01* X7041Y3716D01* Y3478D01* X7020Y3457D01* Y2674D01* X7082Y2612D01* Y2251D01* X7056Y2225D01* Y2171D01* X7025Y2140D01* Y2286D02* X7070Y2331D01* Y2589D01* X7002Y2657D01* Y3475D01* X7022Y3495D01* Y3730D01* X7082Y3790D01* X7104D01* X7083Y3824D02* X7004Y3745D01* Y3512D01* X6984Y3492D01* Y3079D01* X6949Y3044D01* Y2847D01* X6984Y2812D01* Y2638D01* X7058Y2564D01* Y2419D01* X7025Y2386D02* X7058Y2419D01* X7046Y2430D02* X7030Y2414D01* X7020D01* X7000Y2394D01* Y2365D01* X7025Y2340D01* X7046Y2430D02* Y2465D01* X6986Y2525D01* Y2598D01* X6965Y2619D01* Y2804D01* X6935Y2834D01* Y3059D01* X6965Y3089D01* Y3507D01* X6986Y3528D01* Y3819D01* X7094Y3927D01* X7923Y4209D02* X7957Y4242D01* X7937Y4269D02* Y4302D01* X7923D02* Y4269D01* Y4242D02* X7957Y4209D01* X8013D02* X8040D01* X8047Y4215D01* Y4235D01* X8040Y4242D01* X8060Y4209D02* X8067Y4215D01* Y4235D01* X8060Y4242D01* X8013D01* Y4269D02* Y4302D01* X8027Y4269D02* Y4302D01* X8040Y4369D02* X8047Y4375D01* Y4402D01* X8040Y4409D01* X8000D01* X7993Y4402D01* Y4375D01* X8000Y4369D01* X8013D01* X8020Y4375D01* Y4402D01* X8013Y4409D01* Y4422D02* X8000D01* X7993Y4429D01* Y4455D01* X8000Y4462D01* X8013D01* X8020Y4455D01* Y4429D01* X8013Y4422D01* X8020Y4429D02* X8027Y4422D01* X8040D01* X8047Y4429D01* Y4455D01* X8040Y4462D01* X8027D01* X8020Y4455D01* X8040Y4502D02* X8047Y4495D01* X8040Y4489D01* X8033Y4495D01* X8040Y4502D01* Y4529D02* X8047Y4535D01* Y4562D01* Y4582D02* X7993Y4622D01* Y4615D02* X8000Y4622D01* X8040D01* X8047Y4615D01* Y4589D01* Y4562D02* X8040Y4569D01* X8020D01* X7993D02* Y4529D01* X8013D01* Y4562D01* X8020Y4569D01* X8047Y4589D02* X8040Y4582D01* X8000D01* X7993Y4589D01* Y4615D01* X8013Y4649D02* X8020Y4655D01* X8013Y4662D01* X8020Y4655D02* X8047D01* Y4675D02* X8020D01* X8013Y4669D01* Y4662D01* Y4649D02* Y4642D01* X8020Y4635D01* X8013D02* X8047D01* Y4689D02* X8013D01* Y4695D02* Y4702D01* Y4715D02* Y4722D01* X8020Y4729D01* X8047D01* Y4709D02* X8020D01* X8013Y4715D02* X8020Y4709D01* X8013Y4702D01* Y4695D02* X8020Y4689D01* X7923Y4715D02* Y4722D01* X7930Y4729D01* X7957D01* Y4709D02* X7930D01* X7923Y4715D02* X7930Y4709D01* X7923Y4702D01* Y4695D01* X7930Y4689D01* X7923D02* X7957D01* Y4635D02* X7923D01* Y4642D02* Y4649D01* Y4662D02* Y4669D01* X7930Y4675D01* X7957D01* Y4655D02* X7930D01* X7923Y4662D02* X7930Y4655D01* X7923Y4649D01* Y4642D02* X7930Y4635D01* X7903Y4622D02* X7957Y4582D01* X7950D02* X7957Y4589D01* X7950Y4582D02* X7910D01* X7903Y4589D01* Y4615D01* X7910Y4622D01* X7950D01* X7957Y4615D01* Y4589D01* Y4562D02* Y4535D01* X7950Y4529D01* X7910D01* X7903Y4535D01* Y4562D01* X7957D02* X7950Y4569D01* X7910D01* X7903Y4562D01* Y4569D02* X7957Y4529D01* X7950Y4502D02* X7943Y4495D01* X7950Y4489D01* X7957Y4495D01* X7950Y4502D01* X7910Y4462D02* X7903Y4455D01* Y4429D01* X7910Y4422D01* X7950D01* X7957Y4429D02* X7950Y4422D01* X7957D02* X7903Y4462D01* X7910D02* X7950D01* X7957Y4455D01* Y4429D01* X7950Y4409D02* X7937D01* X7930Y4402D01* Y4375D01* X7937Y4369D01* X7957Y4375D02* X7950Y4369D01* X7910D01* X7903Y4375D01* Y4402D01* X7910Y4409D01* X7950D02* X7957Y4402D01* Y4375D01* Y4355D02* Y4315D01* Y4335D02* X7903D01* X7917Y4322D01* X7212Y5058D02* X7172Y5004D01* X7178D02* X7205D01* X7212Y5011D01* Y5051D01* X7205Y5058D01* X7178D01* X7172Y5051D01* Y5011D01* X7178Y5004D01* X7232D02* X7225Y5011D01* Y5051D01* X7232Y5058D01* X7258D01* X7265Y5051D01* Y5011D01* X7258Y5004D01* X7232D01* X7225D02* X7265Y5058D01* X7298Y5018D02* X7305Y5011D01* X7298Y5004D01* X7292Y5011D01* X7298Y5018D01* X7332Y5004D02* X7372Y5058D01* X7365D02* X7372Y5051D01* Y5011D01* X7365Y5004D01* X7338D01* X7332Y5011D01* Y5051D01* X7338Y5058D01* X7365D01* X7392Y5094D02* X7385Y5101D01* Y5141D01* X7392Y5148D01* X7418D01* X7425Y5141D01* Y5101D01* X7418Y5094D01* X7392D01* X7385D02* X7425Y5148D01* X7532Y5094D02* Y5121D01* X7525Y5128D01* X7518D01* X7512Y5121D01* X7505Y5128D01* X7438Y5121D02* X7445Y5128D01* X7452D02* X7458Y5121D01* Y5094D01* X7438D02* Y5128D01* X7445D02* X7452D01* X7458Y5121D02* X7465Y5128D01* X7472D01* X7478Y5121D01* Y5094D01* X7492D02* Y5128D01* Y5121D02* X7498Y5128D01* X7505D01* X7512Y5121D02* Y5094D01* X7492Y5031D02* X7498Y5038D01* X7505D02* X7512Y5031D01* Y5004D01* X7492D02* Y5038D01* X7498D02* X7505D01* X7512Y5031D02* X7518Y5038D01* X7525D01* X7532Y5031D01* Y5004D01* X7438D02* Y5038D01* Y5031D02* X7445Y5038D01* X7452D01* X7458Y5031D02* Y5004D01* X7478D02* Y5031D01* X7472Y5038D01* X7465D01* X7458Y5031D01* X7452Y5038D01* X7425Y5058D02* X7385Y5004D01* X7392D02* X7418D01* X7425Y5011D01* Y5051D01* X7418Y5058D01* X7392D01* X7385Y5051D01* Y5011D01* X7392Y5004D01* X7372Y5148D02* X7332D01* Y5128D01* X7365D01* X7372Y5121D01* Y5101D01* X7365Y5094D01* X7338D01* X7332Y5101D01* X7298Y5094D02* X7305Y5101D01* X7298Y5108D01* X7292Y5101D01* X7298Y5094D01* X7258Y5121D02* X7232D01* X7225Y5128D01* Y5141D01* X7232Y5148D01* X7258D01* X7265Y5141D01* Y5128D01* X7258Y5121D01* X7265Y5114D01* Y5101D01* X7258Y5094D01* X7232D01* X7225Y5101D01* Y5114D01* X7232Y5121D01* X7212Y5148D02* X7172D01* Y5128D01* X7205D01* X7212Y5121D01* Y5101D01* X7205Y5094D01* X7178D01* X7172Y5101D01* X7158Y5094D02* X7118D01* X7138D02* Y5148D01* X7125Y5134D01* X7012Y5128D02* X7045Y5094D01* X7072Y5114D02* X7105D01* Y5128D02* X7072D01* X7045D02* X7012Y5094D01* Y5038D02* Y5011D01* X7018Y5004D01* X7038D01* X7045Y5011D01* X7072Y5024D02* X7105D01* X7118Y5004D02* X7158D01* X7138D02* Y5058D01* X7125Y5044D01* X7105Y5038D02* X7072D01* X7045D02* Y4991D01* X7038Y4984D01* X7018D01* X7012Y4991D01* D013* X3906Y5967D02* X3928Y5989D01* Y5900D01* X3894D02* X3961D01* X3983Y5911D02* X3994Y5900D01* X4039D01* X4050Y5911D01* Y5933D01* X4039Y5944D01* X3994D01* X3983Y5933D01* Y5911D02* Y5978D01* X3994Y5989D01* X4039D01* X4050Y5978D01* X4083Y5900D02* X4072Y5911D01* Y5978D01* X4083Y5989D01* X4128D01* X4139Y5978D01* Y5911D01* X4128Y5900D01* X4083D01* X4072D02* X4139Y5989D01* X4194Y5900D02* X4183Y5911D01* X4194Y5922D01* X4206Y5911D01* X4194Y5900D01* X4250Y5911D02* Y5978D01* X4261Y5989D01* X4306D01* X4317Y5978D01* Y5911D01* X4306Y5900D01* X4261D01* X4250Y5911D01* Y5900D02* X4317Y5989D01* X4339Y5911D02* Y5978D01* X4350Y5989D01* X4394D01* X4406Y5978D01* Y5911D01* X4394Y5900D01* X4350D01* X4339Y5911D01* Y5900D02* X4406Y5989D01* X4428Y5900D02* Y5956D01* Y5944D02* X4439Y5956D01* X4450D01* X4461Y5944D01* Y5900D01* X4494D02* Y5944D01* X4483Y5956D01* X4472D01* X4461Y5944D01* X4517Y5900D02* Y5956D01* Y5944D02* X4528Y5956D01* X4539D01* X4550Y5944D01* X4561Y5956D01* X4550Y5944D02* Y5900D01* X4583D02* Y5944D01* X4572Y5956D01* X4561D01* X4639Y5922D02* X4650Y5911D01* X4639Y5900D01* X4628Y5911D01* X4639Y5922D01* X4650Y5911D02* Y5900D01* X4639Y5878D01* X4939Y5989D02* X4872Y5900D01* Y5911D02* X4883Y5900D01* X4928D02* X4883D01* X4872Y5911D02* Y5978D01* X4817D02* Y5911D01* X4783Y5944D02* X4850D01* X4872Y5978D02* X4883Y5989D01* X4928D01* X4939Y5978D01* Y5911D01* X4928Y5900D01* X4961D02* X5028Y5989D01* X5050Y5944D02* X5117D01* X5139Y5978D02* X5150Y5989D01* X5194D01* X5206Y5978D01* X5139D02* Y5911D01* X5150Y5900D01* X5194D02* X5206Y5911D01* Y5978D01* Y5989D02* X5139Y5900D01* X5150D02* X5194D01* X5261D02* X5272Y5911D01* X5261Y5922D01* X5250Y5911D01* X5261Y5900D01* X5317Y5911D02* X5328Y5900D01* X5372D01* X5383Y5911D01* Y5933D01* X5361Y5944D01* X5339D01* X5361D02* X5383Y5956D01* Y5978D01* X5372Y5989D01* X5328D01* X5317Y5978D01* X8817Y3694D02* X8839Y3672D01* X8750D01* Y3706D02* Y3639D01* X8761Y3617D02* X8828D01* X8839Y3606D01* Y3561D01* X8828Y3550D01* X8761D01* X8750Y3561D01* Y3606D01* X8761Y3617D01* X8750D02* X8839Y3550D01* X8761Y3528D02* X8828D01* X8839Y3517D01* Y3472D01* X8828Y3461D01* X8761D01* X8750Y3472D01* Y3517D01* X8761Y3528D01* X8750D02* X8839Y3461D01* X8761Y3417D02* X8750Y3406D01* X8761Y3394D01* X8772Y3406D01* X8761Y3417D01* Y3350D02* X8828D01* X8839Y3339D01* Y3294D01* X8828Y3261D02* X8839Y3250D01* Y3206D01* X8806Y3161D02* Y3150D01* X8794Y3139D02* X8806Y3128D01* Y3117D01* X8794Y3106D01* X8750D01* Y3139D02* X8794D01* X8806Y3150D01* Y3161D02* X8794Y3172D01* X8806D02* X8750D01* Y3261D02* X8839Y3194D01* Y3206D02* X8828Y3194D01* X8761D01* X8750Y3206D01* Y3250D01* X8761Y3261D01* X8828D01* X8839Y3283D02* X8750Y3350D01* X8761D02* X8750Y3339D01* Y3294D01* X8761Y3283D01* X8828D01* X8839Y3294D01* X8806Y3061D02* X8794Y3050D01* X8750D01* Y3083D02* X8806D01* X8794D02* X8806Y3072D01* Y3061D01* X8794Y3050D02* X8806Y3039D01* Y3028D01* X8794Y3017D01* X8750D01* X8728Y2961D02* X8750Y2950D01* X8761D01* X8750Y2961D01* X8761Y2972D01* X8772Y2961D01* X8761Y2950D01* X8794Y2817D02* Y2750D01* X8828Y2783D02* X8761D01* Y2728D02* X8828D01* X8839Y2717D01* Y2661D02* X8750Y2728D01* X8761D02* X8750Y2717D01* Y2672D01* X8761Y2661D01* X8839Y2717D02* Y2672D01* X8828Y2661D01* X8761D01* X8750Y2639D02* X8839Y2572D01* X8750Y2461D02* X8839Y2394D01* Y2406D02* X8828Y2394D01* X8761D01* X8750Y2406D01* Y2450D01* X8761Y2461D01* X8794Y2550D02* Y2483D01* X8761Y2461D02* X8828D01* X8839Y2450D01* Y2406D01* X8761Y2328D02* X8772Y2339D01* X8761Y2350D01* X8750Y2339D01* X8761Y2328D01* Y2283D02* X8750Y2272D01* Y2228D01* X8761Y2217D01* X8783D01* X8794Y2239D01* Y2261D01* Y2239D02* X8806Y2217D01* X8828D01* X8839Y2228D01* Y2272D01* X8828Y2283D01* D044* X2148Y4773D02* D03* X2092Y4767D02* D03* X2014Y4651D02* D03* X2020Y4619D02* D03* X2040Y4583D02* D03* X1864Y4648D02* D03* X1935Y4647D02* D03* X1931Y4588D02* D03* X1851Y4548D02* D03* X1852Y4510D02* D03* Y4473D02* D03* X1950Y4222D02* D03* Y4156D02* D03* X2018Y4045D02* D03* X2061Y4142D02* D03* X2124Y4218D02* D03* X2119Y4359D02* D03* X2223Y4425D02* D03* X2580Y4311D02* D03* X2511Y4345D02* D03* X2514Y4265D02* D03* X2581Y4227D02* D03* X2683Y4228D02* D03* X2684Y4304D02* D03* X2725Y4434D02* D03* X2727Y4465D02* D03* X2815Y4531D02* D03* X2813Y4568D02* D03* X2812Y4611D02* D03* X2787Y4669D02* D03* X2761Y4623D02* D03* X2712D02* D03* X2662Y4666D02* D03* X2537Y4675D02* D03* X2786Y4848D02* D03* X2853Y4849D02* D03* X2896Y4847D02* D03* X2937Y4844D02* D03* X2987D02* D03* X3037D02* D03* X3087D02* D03* X3137D02* D03* X3199Y4847D02* D03* X3263Y4848D02* D03* X3322Y4849D02* D03* X3410Y4848D02* D03* X3462Y4844D02* D03* X3361Y4671D02* D03* X3331Y4670D02* D03* X3286Y4659D02* D03* X3250Y4646D02* D03* X3236Y4673D02* D03* X3162Y4676D02* D03* X3112Y4673D02* D03* X3062Y4676D02* D03* X3034Y4657D02* D03* X3048Y4538D02* D03* Y4498D02* D03* X3050Y4328D02* D03* X3112Y4199D02* D03* X3109Y4165D02* D03* X3202D02* D03* Y4213D02* D03* X3243Y4238D02* D03* X3251Y4089D02* D03* X3297Y4095D02* D03* X3347Y3943D02* D03* X3286Y3939D02* D03* X3244Y3894D02* D03* X3246Y3815D02* D03* X3267Y3788D02* D03* X3198Y3837D02* D03* X3145Y3838D02* D03* X3097D02* D03* X3045D02* D03* X3191Y3949D02* D03* X3195Y3896D02* D03* X3146Y3895D02* D03* X3105Y3946D02* D03* X3055D02* D03* Y3995D02* D03* X2930Y3929D02* D03* X2949Y3901D02* D03* X3003Y3945D02* D03* X3005Y3995D02* D03* X2997Y4044D02* D03* X2954Y4046D02* D03* X2952Y3996D02* D03* X2945Y4089D02* D03* X2969Y4108D02* D03* X3025Y4130D02* D03* X2934Y4231D02* D03* X2902Y4301D02* D03* X2871Y4302D02* D03* X2883Y4465D02* D03* X2940Y4479D02* D03* X2906Y4532D02* D03* X2873D02* D03* X2893Y4667D02* D03* X2929Y4657D02* D03* X2962Y4627D02* D03* X3012D02* D03* X2508Y4117D02* D03* X2608Y4118D02* D03* X2658Y4119D02* D03* X2689Y4063D02* D03* X2736Y4010D02* D03* X2804Y4013D02* D03* X2871Y3952D02* D03* X2870Y3892D02* D03* X2801Y3891D02* D03* X2743Y3892D02* D03* X2706Y3773D02* D03* X2732Y3750D02* D03* X2764Y3721D02* D03* X2733Y3657D02* D03* X2778Y3579D02* D03* X2819Y3537D02* D03* X2818Y3477D02* D03* X2819Y3507D02* D03* X2745Y3506D02* D03* X2709Y3547D02* D03* X2746Y3428D02* D03* X2745Y3389D02* D03* X2709D02* D03* X2710Y3347D02* D03* X2666Y3349D02* D03* X2667Y3388D02* D03* X2628Y3387D02* D03* X2629Y3430D02* D03* Y3468D02* D03* X2664D02* D03* X2667Y3430D02* D03* X2706Y3467D02* D03* X2672Y3506D02* D03* X2631Y3510D02* D03* X2556Y3504D02* D03* X2592Y3505D02* D03* X2587Y3467D02* D03* X2556Y3464D02* D03* X2515Y3462D02* D03* X2514Y3424D02* D03* Y3387D02* D03* X2550Y3390D02* D03* X2556Y3425D02* D03* X2587Y3429D02* D03* X2590Y3351D02* D03* X2589Y3308D02* D03* X2588Y3272D02* D03* X2630Y3271D02* D03* X2672Y3269D02* D03* X2714Y3268D02* D03* X2710Y3304D02* D03* X2746Y3310D02* D03* X2748Y3268D02* D03* X2742Y3226D02* D03* Y3188D02* D03* X2743Y3151D02* D03* Y3109D02* D03* X2745Y3074D02* D03* X2718Y2979D02* D03* X2636Y2978D02* D03* X2585Y2979D02* D03* X2555Y2912D02* D03* X2570Y2867D02* D03* X2698Y2784D02* D03* X2757D02* D03* X2788D02* D03* X2825D02* D03* X2975Y2835D02* D03* X3007Y2841D02* D03* X3030Y2878D02* D03* X3060Y2855D02* D03* X3062Y2786D02* D03* X3103Y2845D02* D03* X3121Y2869D02* D03* X3192Y2852D02* D03* X3235Y2905D02* D03* X3278Y2961D02* D03* Y2839D02* D03* X3291Y2882D02* D03* X3360Y2847D02* D03* X3394Y2886D02* D03* X3367Y2919D02* D03* X3426Y2827D02* D03* X3451Y2845D02* D03* X3476Y2828D02* D03* X3531Y2784D02* D03* X3530Y2737D02* D03* X3525Y2697D02* D03* X3562Y2688D02* D03* X3659Y3191D02* D03* X3601Y3154D02* D03* X3592Y3232D02* D03* X3594Y3286D02* D03* X3644D02* D03* X3696D02* D03* X3745Y3285D02* D03* X3864Y3235D02* D03* X3875Y3169D02* D03* X3981Y3176D02* D03* X4004Y3122D02* D03* X3868Y3112D02* D03* X3788Y3128D02* D03* X3688Y3027D02* D03* X3628Y2967D02* D03* X3492Y2978D02* D03* X3413Y3035D02* D03* X3326D02* D03* X3276Y3033D02* D03* X3371Y3139D02* D03* X3423Y3205D02* D03* X3469D02* D03* X3512D02* D03* X3542Y3554D02* D03* X3548Y3587D02* D03* X3591Y3589D02* D03* Y3548D02* D03* Y3497D02* D03* X3545Y3485D02* D03* Y3440D02* D03* X3590D02* D03* X3595Y3384D02* D03* X3590Y3341D02* D03* X3541Y3340D02* D03* X3545Y3386D02* D03* X3393Y3343D02* D03* X3351D02* D03* X3293Y3339D02* D03* X3247Y3340D02* D03* X3287Y3293D02* D03* X3245Y3292D02* D03* X3196Y3296D02* D03* X3146Y3286D02* D03* X3174Y3231D02* D03* X3202Y3217D02* D03* X3159Y3138D02* D03* X3119Y2969D02* D03* X3098Y3029D02* D03* X3123Y3046D02* D03* X3053Y3031D02* D03* X2985Y3039D02* D03* X2947Y2928D02* D03* X2875Y2885D02* D03* Y2834D02* D03* X2829Y2859D02* D03* X2875Y2785D02* D03* X2921Y2779D02* D03* X2925Y2735D02* D03* X2872Y2732D02* D03* X2922Y2682D02* D03* X2974Y2686D02* D03* X2977Y2732D02* D03* X3041Y2687D02* D03* X3067Y2643D02* D03* X3020Y2636D02* D03* X2971Y2585D02* D03* X2875Y2636D02* D03* X2823Y2634D02* D03* X2824Y2685D02* D03* X2761Y2681D02* D03* X2699Y2671D02* D03* X2599Y2694D02* D03* X2600Y2658D02* D03* X2598Y2623D02* D03* X2599Y2534D02* D03* X2603Y2472D02* D03* X2601Y2427D02* D03* X2604Y2393D02* D03* X2671Y2248D02* D03* X2670Y2280D02* D03* X2671Y2311D02* D03* X2673Y2342D02* D03* X2693Y2387D02* D03* X2691Y2462D02* D03* X2703Y2522D02* D03* X2704Y2555D02* D03* X2396Y2588D02* D03* X2363Y2589D02* D03* X2350Y2617D02* D03* X2351Y2680D02* D03* X2281Y2660D02* D03* X2219Y2592D02* D03* X2181D02* D03* X2087Y2585D02* D03* X2093Y2676D02* D03* X2236Y2788D02* D03* X2178Y2786D02* D03* X2202Y2890D02* D03* X2261Y2894D02* D03* X2260Y2965D02* D03* X2224Y3044D02* D03* X2190Y3009D02* D03* X2131Y3010D02* D03* X2102Y2896D02* D03* X2104Y2818D02* D03* X2026Y2841D02* D03* X2039Y2790D02* D03* X1991Y2780D02* D03* X1861Y2625D02* D03* X1860Y2657D02* D03* X1832Y2771D02* D03* X1784Y2778D02* D03* X1788Y2820D02* D03* X1689Y2381D02* D03* X1738Y2507D02* D03* X1773Y2547D02* D03* X1825Y2540D02* D03* X1901Y2550D02* D03* X1902Y2484D02* D03* X1904Y2445D02* D03* X1902Y2413D02* D03* X1868Y2348D02* D03* X1906Y2350D02* D03* X1903Y2312D02* D03* X1894Y2250D02* D03* X1896Y2219D02* D03* X1937Y2156D02* D03* X1973Y2094D02* D03* X1902Y2092D02* D03* X2013Y2094D02* D03* X2032Y2183D02* D03* X2030Y2222D02* D03* X1999D02* D03* X1998Y2292D02* D03* X1990Y2335D02* D03* X2080Y2428D02* D03* X2084Y2309D02* D03* X2086Y2252D02* D03* X2154Y2211D02* D03* X2213Y2184D02* D03* X2166Y2082D02* D03* X2127Y2083D02* D03* X2280Y2095D02* D03* X2327Y2096D02* D03* X2377Y2061D02* D03* X2374Y2095D02* D03* X2413Y2093D02* D03* X2505Y2091D02* D03* X2440Y2024D02* D03* X2409Y1991D02* D03* X2446Y1961D02* D03* X2327Y1830D02* D03* X2265Y1915D02* D03* X2201Y1916D02* D03* X2188Y1812D02* D03* X2187Y1762D02* D03* Y1712D02* D03* Y1662D02* D03* X2130Y1679D02* D03* X2051Y1736D02* D03* X2091Y1756D02* D03* X2093Y1834D02* D03* X2027Y1915D02* D03* X1929Y1929D02* D03* X1877Y1915D02* D03* X1825Y1920D02* D03* X1854Y1876D02* D03* X1878Y1848D02* D03* X1646Y1817D02* D03* X1692Y1826D02* D03* X1698Y1788D02* D03* X1781Y1918D02* D03* X1677Y2025D02* D03* X2212Y2249D02* D03* X2277D02* D03* X2280Y2212D02* D03* X2303Y2180D02* D03* X2332Y2184D02* D03* X2385Y2187D02* D03* X2386Y2243D02* D03* X2304Y2311D02* D03* X2305Y2356D02* D03* X2329Y2405D02* D03* X2225Y2427D02* D03* X2312Y2507D02* D03* X2381Y2474D02* D03* X2428Y2482D02* D03* X2449Y2441D02* D03* X2478Y2422D02* D03* X2504Y2399D02* D03* X2459Y2378D02* D03* X2458Y2345D02* D03* Y2311D02* D03* X2495Y2284D02* D03* X2503Y2314D02* D03* Y2344D02* D03* X2479Y2248D02* D03* X2501Y2225D02* D03* X2481Y2482D02* D03* X2482Y2531D02* D03* X2444Y2530D02* D03* X2447Y2564D02* D03* X2455Y2593D02* D03* X2486Y2681D02* D03* X2494Y2639D02* D03* X2461Y2637D02* D03* X2427Y2639D02* D03* X2418Y2681D02* D03* X2463Y2790D02* D03* X2497D02* D03* X2522Y2857D02* D03* X2500Y2899D02* D03* X2473Y2873D02* D03* X2441Y2903D02* D03* X2411Y2885D02* D03* X2397Y2982D02* D03* X2445Y2980D02* D03* X2468Y3048D02* D03* X2530Y3047D02* D03* X2561Y3053D02* D03* X2546Y3079D02* D03* X2549Y3114D02* D03* X2470D02* D03* X2471Y3154D02* D03* X2274Y3153D02* D03* X2311Y3114D02* D03* X2376Y3064D02* D03* X2391Y3115D02* D03* X2354Y3114D02* D03* Y3153D02* D03* X2390Y3193D02* D03* X2433Y3231D02* D03* X2435Y3265D02* D03* X2391D02* D03* X2354Y3231D02* D03* X2356Y3265D02* D03* X2312Y3272D02* D03* X2276Y3311D02* D03* X2277Y3349D02* D03* X2311Y3389D02* D03* X2356Y3388D02* D03* X2391Y3391D02* D03* Y3428D02* D03* X2357Y3424D02* D03* Y3345D02* D03* X2391D02* D03* Y3311D02* D03* X2357Y3308D02* D03* X2312Y3469D02* D03* X2278Y3463D02* D03* X2273Y3547D02* D03* X2318Y3578D02* D03* X2333Y3637D02* D03* X2272Y3631D02* D03* X2119Y3641D02* D03* X2117Y3518D02* D03* X2118Y3483D02* D03* X2119Y3431D02* D03* Y3364D02* D03* X2396Y3638D02* D03* X2454D02* D03* X2485Y3626D02* D03* X2551Y3582D02* D03* X2550Y3548D02* D03* X2512Y3547D02* D03* X2470Y3545D02* D03* X2472Y3507D02* D03* X2433D02* D03* X2390D02* D03* X2357Y3502D02* D03* Y3466D02* D03* X2390Y3468D02* D03* X2435Y3464D02* D03* X2471Y3463D02* D03* X2472Y3424D02* D03* X2435D02* D03* Y3387D02* D03* X2472D02* D03* X2514Y3308D02* D03* Y3345D02* D03* X2472D02* D03* X2438Y3344D02* D03* Y3307D02* D03* X2472Y3308D02* D03* Y3263D02* D03* Y3230D02* D03* X2514Y3236D02* D03* X2547Y3191D02* D03* X2589Y3194D02* D03* X2591Y3227D02* D03* X2629D02* D03* Y3192D02* D03* X2672Y3226D02* D03* Y3191D02* D03* X2673Y3147D02* D03* X2672Y3111D02* D03* Y3069D02* D03* X2617Y3067D02* D03* X2629Y3114D02* D03* Y3152D02* D03* X2587D02* D03* X2787Y3115D02* D03* X2786Y3158D02* D03* X2822Y3199D02* D03* X2805Y3229D02* D03* X2812Y3271D02* D03* X2806Y3313D02* D03* X2899Y3410D02* D03* X2905Y3440D02* D03* X2899Y3471D02* D03* X2898Y3505D02* D03* X2901Y3537D02* D03* X2947Y3585D02* D03* X2996D02* D03* X3047D02* D03* X3096D02* D03* X3162Y3641D02* D03* X3185Y3596D02* D03* X3209Y3622D02* D03* X3251Y3621D02* D03* X3282Y3622D02* D03* X3344Y3602D02* D03* X3392Y3604D02* D03* X3441D02* D03* X3445Y3670D02* D03* Y3719D02* D03* X3395D02* D03* X3394Y3670D02* D03* X3345Y3672D02* D03* X3342Y3719D02* D03* X3288D02* D03* X3206Y3720D02* D03* X3248Y3486D02* D03* X3293D02* D03* X3288Y3442D02* D03* X3354D02* D03* X3396D02* D03* X3387Y3489D02* D03* X3440Y3484D02* D03* X3442Y3442D02* D03* X3491Y3440D02* D03* X3500Y3383D02* D03* X3491Y3340D02* D03* X3498Y3286D02* D03* X3443D02* D03* X3397Y3280D02* D03* X3441Y3344D02* D03* X3446Y3386D02* D03* X3393D02* D03* X3350Y3387D02* D03* X3290Y3390D02* D03* X3245D02* D03* X3197Y3386D02* D03* X3192Y3340D02* D03* X3144D02* D03* X3113Y3242D02* D03* X3092Y3220D02* D03* X3061Y3219D02* D03* X3003Y3163D02* D03* X2955Y3210D02* D03* X2994Y3286D02* D03* X3196Y3487D02* D03* X3148Y3485D02* D03* X3140Y3442D02* D03* X3089Y3443D02* D03* X3097Y3485D02* D03* X3009Y3443D02* D03* X3051D02* D03* X3043Y3494D02* D03* X2994Y3531D02* D03* X3007Y3495D02* D03* X2965Y3492D02* D03* X2892Y3628D02* D03* X2896Y3658D02* D03* X2939Y3669D02* D03* X2954Y3643D02* D03* X2992Y3640D02* D03* X2998Y3684D02* D03* X3047D02* D03* Y3640D02* D03* X3092D02* D03* X3095Y3684D02* D03* X3133Y3744D02* D03* X3093Y3747D02* D03* X3047Y3740D02* D03* X2992D02* D03* X2951Y3742D02* D03* X2882Y3779D02* D03* X2855Y3758D02* D03* X2822Y3779D02* D03* X2674Y3743D02* D03* X2638Y3770D02* D03* X2584Y3773D02* D03* X2615Y3742D02* D03* X2610Y3709D02* D03* X2612Y3651D02* D03* X2509Y3719D02* D03* X2555Y3742D02* D03* X2532Y3776D02* D03* X2481D02* D03* X2525Y3938D02* D03* X2397Y3955D02* D03* X2360Y3934D02* D03* X2335Y3963D02* D03* X2307Y3934D02* D03* X2273Y3962D02* D03* X2036Y3887D02* D03* X1926Y3896D02* D03* X1809Y3776D02* D03* X1777Y3745D02* D03* X1729Y3706D02* D03* X1978Y1562D02* D03* X2015Y1467D02* D03* X1970Y1398D02* D03* X2013Y1332D02* D03* X2187Y1381D02* D03* X2189Y1345D02* D03* X2186Y1283D02* D03* X2091Y1245D02* D03* X2188Y1243D02* D03* X2164Y1157D02* D03* X2315Y1193D02* D03* X2326Y1277D02* D03* X2314Y1312D02* D03* X2337Y1362D02* D03* X2315Y1413D02* D03* X2314Y1462D02* D03* X2168Y1466D02* D03* X2187Y1512D02* D03* Y1562D02* D03* X2188Y1612D02* D03* X2523Y1644D02* D03* X2563Y1625D02* D03* X2555Y1589D02* D03* X2473Y1462D02* D03* X2471Y1512D02* D03* X2468Y1562D02* D03* X2467Y1612D02* D03* X2469Y1661D02* D03* X2470Y1712D02* D03* X2471Y1762D02* D03* X2518Y1841D02* D03* X2564Y1816D02* D03* X2625Y1862D02* D03* X2778Y1887D02* D03* X2825Y1934D02* D03* X2821Y1982D02* D03* X2770Y1980D02* D03* X2771Y2032D02* D03* X2707Y2012D02* D03* X2876Y1831D02* D03* X2875Y1785D02* D03* X2822Y1780D02* D03* X2777D02* D03* X2735Y1752D02* D03* X2767Y1679D02* D03* X2823Y1726D02* D03* X2874Y1727D02* D03* X2927Y1724D02* D03* X2910Y1671D02* D03* X2861Y1669D02* D03* X3083Y1892D02* D03* X3126Y1887D02* D03* X3121Y1938D02* D03* X3177Y1937D02* D03* X3173Y1983D02* D03* X3227D02* D03* X3226Y2040D02* D03* X3224Y2109D02* D03* X3268Y2142D02* D03* X3272Y2188D02* D03* X3322D02* D03* X3318Y2142D02* D03* X3316Y2244D02* D03* X3322Y2288D02* D03* X3318Y2342D02* D03* X3268D02* D03* X3272Y2288D02* D03* X3266Y2244D02* D03* X3231Y2239D02* D03* X3130Y2184D02* D03* X2876Y2284D02* D03* X2923Y2233D02* D03* Y2134D02* D03* X2875D02* D03* X2876Y2085D02* D03* X2823Y2087D02* D03* X2921Y2032D02* D03* X2923Y1987D02* D03* X2873Y1983D02* D03* X2874Y1933D02* D03* X2919Y1883D02* D03* X2972Y1880D02* D03* X2973Y1838D02* D03* X2927Y1824D02* D03* Y1784D02* D03* X2972Y1780D02* D03* X2973Y1726D02* D03* X3051Y1666D02* D03* X3029Y1735D02* D03* X3027Y1780D02* D03* Y1824D02* D03* Y1880D02* D03* X3021Y1931D02* D03* X3071D02* D03* X3073Y1984D02* D03* X2977Y1986D02* D03* X3025Y2036D02* D03* X2977Y2086D02* D03* X3025Y2135D02* D03* X3026Y2184D02* D03* X3057Y2297D02* D03* X3067Y2343D02* D03* Y2393D02* D03* Y2443D02* D03* Y2493D02* D03* X3093Y2535D02* D03* X3064Y2544D02* D03* X3080Y2583D02* D03* X3122Y2642D02* D03* X3126Y2687D02* D03* X3132Y2728D02* D03* X3175Y2726D02* D03* X3219Y2782D02* D03* X3277Y2733D02* D03* X3276Y2684D02* D03* X3229Y2682D02* D03* X3279Y2639D02* D03* X3324Y2627D02* D03* X3335Y2586D02* D03* X3266Y2532D02* D03* X3221Y2530D02* D03* X3232Y2592D02* D03* X3148Y2533D02* D03* X3150Y2501D02* D03* X3176Y2516D02* D03* Y2486D02* D03* X3161Y2460D02* D03* X3379Y2685D02* D03* X3380Y2730D02* D03* X3425Y2736D02* D03* X3428Y2690D02* D03* X3421Y2640D02* D03* X3379Y2633D02* D03* X3475Y2645D02* D03* X3472Y2602D02* D03* X3533Y2539D02* D03* X3482D02* D03* X3433Y2537D02* D03* X3413Y2467D02* D03* X3478Y2430D02* D03* X3667Y2343D02* D03* X3571Y2342D02* D03* X3627Y2411D02* D03* X3632Y2439D02* D03* X3573Y2436D02* D03* X3552Y2459D02* D03* X3633Y2493D02* D03* X3614Y2524D02* D03* X3583Y2539D02* D03* X3625Y2597D02* D03* X3623Y2635D02* D03* X3674Y2733D02* D03* X3767Y2727D02* D03* X3817Y2543D02* D03* Y2348D02* D03* X3725Y2247D02* D03* X3767Y2193D02* D03* X3817D02* D03* X3767Y2092D02* D03* X3817D02* D03* X3866D02* D03* X3918D02* D03* X3924Y2035D02* D03* X3830Y1938D02* D03* X3821Y1882D02* D03* X3876Y1893D02* D03* X3925Y1947D02* D03* X3872Y1993D02* D03* X3874Y2035D02* D03* X3826D02* D03* X3812Y1993D02* D03* X3767Y1994D02* D03* X3770Y1940D02* D03* Y1888D02* D03* X3767Y1843D02* D03* X3965Y1802D02* D03* X3987Y1781D02* D03* X4008Y1759D02* D03* X3917Y1693D02* D03* X3867Y1743D02* D03* X3824Y1736D02* D03* X3717Y1743D02* D03* X3621Y1789D02* D03* X3623Y1831D02* D03* X3627Y1893D02* D03* X3633Y1943D02* D03* X3583D02* D03* X3675Y1935D02* D03* X3667Y1993D02* D03* X3633Y2093D02* D03* Y2143D02* D03* X3577Y2141D02* D03* X3544Y2137D02* D03* X3468Y2142D02* D03* X3472Y2188D02* D03* X3466Y2244D02* D03* X3472Y2288D02* D03* X3468Y2342D02* D03* X3418D02* D03* X3368Y2378D02* D03* X3422Y2288D02* D03* X3416Y2244D02* D03* X3366D02* D03* X3372Y2288D02* D03* Y2188D02* D03* X3368Y2142D02* D03* X3418D02* D03* X3422Y2188D02* D03* X3404Y1986D02* D03* X3434Y1990D02* D03* X3499Y2030D02* D03* X3533Y1943D02* D03* X3483D02* D03* X3433D02* D03* X3383Y1893D02* D03* X3381Y1789D02* D03* X3419Y1828D02* D03* X3489Y1738D02* D03* X3423Y1697D02* D03* X3350Y1684D02* D03* X3385Y1636D02* D03* X3390Y1579D02* D03* X3253Y1629D02* D03* X3277Y1648D02* D03* X3276Y1682D02* D03* X3275Y1735D02* D03* X3277Y1795D02* D03* Y1838D02* D03* X3184Y1843D02* D03* X3173Y1785D02* D03* X3130Y1800D02* D03* X3084Y1794D02* D03* X3075Y1735D02* D03* X3151Y1667D02* D03* X3229Y1604D02* D03* X3205Y1582D02* D03* X3231Y1446D02* D03* X3105D02* D03* X3010Y1443D02* D03* X2853D02* D03* X2764Y1441D02* D03* X2650Y1414D02* D03* X2618Y1435D02* D03* X2537Y1427D02* D03* X2471Y1412D02* D03* X2468Y1362D02* D03* X2472Y1312D02* D03* X2480Y1262D02* D03* X2476Y1210D02* D03* X2558Y1214D02* D03* X2596Y1288D02* D03* X2647Y1189D02* D03* X2711Y1237D02* D03* X2742Y1236D02* D03* X2774Y1240D02* D03* X2837Y1237D02* D03* X2868Y1238D02* D03* X2931Y1243D02* D03* X2994Y1233D02* D03* X3089Y1234D02* D03* X3215Y1235D02* D03* X3246Y1238D02* D03* X3278Y1239D02* D03* X3310Y1242D02* D03* X5018Y1446D02* D03* X5049Y1447D02* D03* X5081Y1439D02* D03* X5141Y1510D02* D03* X5253Y1622D02* D03* Y1697D02* D03* Y1772D02* D03* X5255Y1830D02* D03* X5220D02* D03* Y1865D02* D03* X5255D02* D03* X5270Y1910D02* D03* X5360D02* D03* Y1865D02* D03* X5498Y1960D02* D03* X5525D02* D03* X5522Y1916D02* D03* X5530Y1862D02* D03* X5573D02* D03* X5605D02* D03* X5597Y1916D02* D03* X5593Y1960D02* D03* X5620D02* D03* X5758Y1910D02* D03* Y1875D02* D03* X5790Y1795D02* D03* X5830D02* D03* X5870D02* D03* X5857Y1745D02* D03* X5825D02* D03* X5790D02* D03* X6021Y1490D02* D03* Y1536D02* D03* X5975D02* D03* Y1490D02* D03* X5921Y1536D02* D03* Y1490D02* D03* Y1436D02* D03* Y1390D02* D03* X5975D02* D03* Y1436D02* D03* X6021D02* D03* Y1390D02* D03* X6075Y1436D02* D03* X6121Y1490D02* D03* X6075D02* D03* Y1536D02* D03* Y1590D02* D03* Y1636D02* D03* X6021D02* D03* Y1590D02* D03* X5975D02* D03* X5876D02* D03* X5921D02* D03* Y1636D02* D03* X5877Y1662D02* D03* X5921Y1690D02* D03* Y1736D02* D03* X5975D02* D03* Y1690D02* D03* X6021D02* D03* Y1736D02* D03* X6126Y1791D02* D03* X6113Y1836D02* D03* X6075D02* D03* Y1790D02* D03* Y1736D02* D03* Y1690D02* D03* X6120Y1664D02* D03* X6331Y1654D02* D03* X6279Y1610D02* D03* X6359Y1541D02* D03* X6375Y1490D02* D03* X6421D02* D03* X6495Y1594D02* D03* X6475Y1490D02* D03* Y1436D02* D03* X6421D02* D03* X6375D02* D03* Y1390D02* D03* X6421D02* D03* X6375Y1336D02* D03* X6421D02* D03* X6475D02* D03* X6491Y1230D02* D03* X6525Y1188D02* D03* X6515Y1145D02* D03* X6628Y1147D02* D03* Y1177D02* D03* Y1207D02* D03* X6606Y1231D02* D03* X6571Y1340D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* X6725D02* D03* Y1440D02* D03* X6771D02* D03* Y1486D02* D03* X6825Y1440D02* D03* Y1486D02* D03* X6871D02* D03* Y1440D02* D03* X6825Y1340D02* D03* X6771Y1386D02* D03* X6725D02* D03* Y1340D02* D03* X6671Y1386D02* D03* Y1340D02* D03* X6625D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* X6671D02* D03* X6623Y1594D02* D03* Y1694D02* D03* Y1744D02* D03* X6753Y1775D02* D03* X6823Y1693D02* D03* X6871Y1686D02* D03* Y1640D02* D03* X6829Y1616D02* D03* Y1573D02* D03* X6871Y1586D02* D03* Y1540D02* D03* X6925Y1486D02* D03* X6971D02* D03* Y1440D02* D03* X6925D02* D03* Y1386D02* D03* Y1340D02* D03* X6971D02* D03* Y1386D02* D03* X7025Y1340D02* D03* Y1386D02* D03* Y1440D02* D03* Y1486D02* D03* Y1540D02* D03* Y1586D02* D03* X6971D02* D03* Y1540D02* D03* X6925D02* D03* Y1586D02* D03* Y1640D02* D03* Y1686D02* D03* X6971D02* D03* Y1640D02* D03* X7025D02* D03* Y1686D02* D03* Y1740D02* D03* Y1786D02* D03* X6925Y1940D02* D03* Y1886D02* D03* X6871D02* D03* Y1940D02* D03* Y1986D02* D03* X6824Y2039D02* D03* Y2071D02* D03* X6871Y2086D02* D03* Y2140D02* D03* Y2186D02* D03* X6925Y2240D02* D03* Y2286D02* D03* X7025D02* D03* Y2340D02* D03* Y2386D02* D03* Y2440D02* D03* X6971D02* D03* X6925D02* D03* Y2386D02* D03* X6971D02* D03* X7104Y2357D02* D03* X7119Y2331D02* D03* X7104Y2305D02* D03* X7119Y2279D02* D03* X7104Y2212D02* D03* X7119Y2186D02* D03* X7104Y2160D02* D03* X7119Y2134D02* D03* X7104Y2066D02* D03* X7119Y2040D02* D03* X7104Y2014D02* D03* X7119Y1988D02* D03* X7104Y1920D02* D03* X7119Y1894D02* D03* X7104Y1868D02* D03* X7119Y1842D02* D03* X7104Y1775D02* D03* X7119Y1749D02* D03* X7104Y1723D02* D03* X7119Y1697D02* D03* X7104Y1629D02* D03* X7119Y1603D02* D03* X7104Y1577D02* D03* X7119Y1551D02* D03* X7186Y1465D02* D03* X7190Y1411D02* D03* X7136Y1407D02* D03* X7119Y1378D02* D03* X7104Y1352D02* D03* X7119Y1326D02* D03* X7104Y1300D02* D03* X7118Y1219D02* D03* X7089Y1238D02* D03* X7090Y1207D02* D03* X7089Y1130D02* D03* X6959D02* D03* Y1162D02* D03* Y1200D02* D03* X6937Y1231D02* D03* X6850D02* D03* X6829Y1207D02* D03* Y1177D02* D03* Y1147D02* D03* X7267Y1185D02* D03* X7274Y1234D02* D03* X7267Y1331D02* D03* X7258Y1417D02* D03* Y1449D02* D03* Y1480D02* D03* Y1512D02* D03* X7267Y1599D02* D03* Y1744D02* D03* Y1890D02* D03* Y2035D02* D03* Y2181D02* D03* Y2327D02* D03* Y2473D02* D03* Y2618D02* D03* X6970Y2865D02* D03* X6865D02* D03* X6761Y2917D02* D03* Y2955D02* D03* Y2991D02* D03* X6762Y3030D02* D03* X6719D02* D03* X6720Y2991D02* D03* X6725Y3105D02* D03* X6670D02* D03* X6620D02* D03* X6570D02* D03* X6671Y2991D02* D03* Y3030D02* D03* X6621D02* D03* Y2990D02* D03* Y2875D02* D03* X6671Y2876D02* D03* X6722Y2877D02* D03* X6760D02* D03* X6571Y3270D02* D03* X6570Y3230D02* D03* X6620D02* D03* X6621Y3270D02* D03* X6671D02* D03* X6670Y3230D02* D03* X6725D02* D03* X6726Y3270D02* D03* X6920Y3230D02* D03* X6921Y3270D02* D03* X6816D02* D03* X6776D02* D03* X6775Y3230D02* D03* X6815D02* D03* X6776Y3185D02* D03* Y3145D02* D03* X6775Y3105D02* D03* X6815D02* D03* X6865Y3030D02* D03* Y2990D02* D03* X6970D02* D03* Y3030D02* D03* X6920Y3105D02* D03* X7104Y3062D02* D03* X7119Y3036D02* D03* X7104Y3010D02* D03* X7119Y2984D02* D03* X7104Y3156D02* D03* X7119Y3130D02* D03* X7060Y3105D02* D03* X7061Y3145D02* D03* Y3185D02* D03* X7104Y3208D02* D03* X7060Y3230D02* D03* X7061Y3270D02* D03* X7119Y3275D02* D03* X7104Y3301D02* D03* X7119Y3327D02* D03* X7104Y3353D02* D03* X7120Y3428D02* D03* X7097Y3459D02* D03* X7113Y3487D02* D03* X7097Y3513D02* D03* X7104Y3543D02* D03* X7141Y3544D02* D03* X7119Y3644D02* D03* X7126Y3679D02* D03* X7119Y3712D02* D03* X7104Y3738D02* D03* X7119Y3764D02* D03* X7104Y3790D02* D03* X7119Y3858D02* D03* X7104Y3884D02* D03* X7119Y3910D02* D03* X7094Y3927D02* D03* X6910Y4005D02* D03* X6723Y3981D02* D03* X6576Y3943D02* D03* X6591Y3769D02* D03* X6644Y3681D02* D03* Y3649D02* D03* Y3619D02* D03* X6690Y3681D02* D03* X6691Y3649D02* D03* Y3618D02* D03* X6736D02* D03* X6735Y3649D02* D03* X6734Y3681D02* D03* X6741Y3737D02* D03* X6899Y3621D02* D03* Y3651D02* D03* Y3681D02* D03* Y3711D02* D03* Y3741D02* D03* X6852D02* D03* Y3710D02* D03* Y3680D02* D03* Y3650D02* D03* X6851Y3621D02* D03* X6850Y3471D02* D03* X7267Y3469D02* D03* Y3614D02* D03* Y3760D02* D03* Y3905D02* D03* Y4051D02* D03* Y4197D02* D03* Y4343D02* D03* Y4488D02* D03* Y4634D02* D03* X7244Y4764D02* D03* X7127D02* D03* X7110Y4681D02* D03* X7119Y4634D02* D03* X7042Y4718D02* D03* X7000D02* D03* X6955Y4717D02* D03* X6903Y4718D02* D03* X7049Y4850D02* D03* Y4888D02* D03* X7000D02* D03* Y4850D02* D03* X6950D02* D03* Y4888D02* D03* X6900D02* D03* Y4850D02* D03* X6850D02* D03* Y4888D02* D03* X6800D02* D03* Y4850D02* D03* X6750D02* D03* Y4888D02* D03* X6700D02* D03* Y4850D02* D03* X6656Y4849D02* D03* Y4889D02* D03* X6612Y4888D02* D03* Y4850D02* D03* X6613Y4643D02* D03* X6657D02* D03* X6700D02* D03* X6750D02* D03* X6873Y4557D02* D03* X6850Y4643D02* D03* X6800D02* D03* X6850Y4718D02* D03* X6800D02* D03* X6750D02* D03* X6700D02* D03* X6657D02* D03* X6613D02* D03* X6440Y4780D02* D03* X6322D02* D03* X6574Y4365D02* D03* X6704Y4282D02* D03* X6656Y4220D02* D03* X6752Y4189D02* D03* X6850Y4213D02* D03* X6854Y4272D02* D03* X6906Y4217D02* D03* X6976Y4323D02* D03* X6992Y4433D02* D03* X6991Y4592D02* D03* X7083Y4560D02* D03* X7104Y4519D02* D03* X7119Y4493D02* D03* X7104Y4467D02* D03* X7119Y4441D02* D03* X7104Y4373D02* D03* X7119Y4347D02* D03* X7104Y4321D02* D03* X7119Y4295D02* D03* X7117Y4244D02* D03* X7119Y4212D02* D03* X7143Y4126D02* D03* X7115Y4141D02* D03* X7104Y4112D02* D03* X7118Y4085D02* D03* X7104Y4058D02* D03* X7115Y4030D02* D03* X7267Y3323D02* D03* Y3177D02* D03* X7293Y3132D02* D03* X7267Y3031D02* D03* X7258Y2945D02* D03* X7189Y2952D02* D03* X7135Y2906D02* D03* X7189Y2889D02* D03* Y2843D02* D03* X7258Y2913D02* D03* Y2882D02* D03* Y2850D02* D03* X7267Y2764D02* D03* X7104Y2794D02* D03* X7119Y2768D02* D03* Y2716D02* D03* X7104Y2742D02* D03* X7074Y2744D02* D03* X7051Y2722D02* D03* X7052Y2692D02* D03* X6939Y2698D02* D03* X6885Y2696D02* D03* X6837Y2695D02* D03* X6781Y2693D02* D03* X6726Y2694D02* D03* X6672Y2702D02* D03* X6659Y2658D02* D03* X6672Y2573D02* D03* X6726Y2567D02* D03* X6781Y2565D02* D03* X6837D02* D03* X6885Y2564D02* D03* X6934D02* D03* X7018Y2569D02* D03* X7104Y2597D02* D03* Y2649D02* D03* X7119Y2623D02* D03* Y2571D02* D03* X7109Y2510D02* D03* X7120Y2482D02* D03* X7109Y2454D02* D03* X7119Y2425D02* D03* X6871Y1740D02* D03* Y1786D02* D03* X6925D02* D03* X6971D02* D03* Y1740D02* D03* X6925D02* D03* Y1840D02* D03* X6971D02* D03* X7025D02* D03* Y1886D02* D03* Y1940D02* D03* Y1986D02* D03* Y2040D02* D03* Y2086D02* D03* Y2186D02* D03* Y2140D02* D03* X6971D02* D03* X6925Y2086D02* D03* X6771Y2340D02* D03* Y2386D02* D03* X6725D02* D03* Y2340D02* D03* Y2286D02* D03* X6771D02* D03* X6825D02* D03* Y2340D02* D03* Y2386D02* D03* X6871D02* D03* Y2340D02* D03* Y2440D02* D03* X6825D02* D03* X6771D02* D03* Y2475D02* D03* X6726Y2473D02* D03* X6725Y2440D02* D03* X6571D02* D03* X6625D02* D03* X6671Y2386D02* D03* Y2340D02* D03* Y2286D02* D03* X6571D02* D03* X6502Y2231D02* D03* X6459D02* D03* X6475Y2290D02* D03* Y2336D02* D03* X6450Y2620D02* D03* Y2580D02* D03* X6500Y2540D02* D03* X6450D02* D03* Y2500D02* D03* X6475Y2436D02* D03* X6410Y2480D02* D03* X6370D02* D03* X6375Y2390D02* D03* Y2290D02* D03* X6321D02* D03* X6275D02* D03* X6221D02* D03* X6175D02* D03* Y2336D02* D03* X6075D02* D03* X6021Y2290D02* D03* X5975D02* D03* Y2336D02* D03* X5921Y2290D02* D03* Y2336D02* D03* Y2390D02* D03* X5975D02* D03* Y2436D02* D03* X6050Y2480D02* D03* Y2520D02* D03* Y2560D02* D03* X6100D02* D03* Y2520D02* D03* Y2480D02* D03* X6150D02* D03* X6195D02* D03* X6240D02* D03* X6280D02* D03* X6320D02* D03* Y2520D02* D03* X6280D02* D03* X6240D02* D03* Y2560D02* D03* X6280D02* D03* X6320D02* D03* X6363Y2634D02* D03* X6296D02* D03* X6182Y2787D02* D03* X5975Y2769D02* D03* X5625D02* D03* X5645Y2605D02* D03* X5690D02* D03* X5600D02* D03* X5450D02* D03* X5275Y2769D02* D03* X5215Y2605D02* D03* X5173Y2566D02* D03* X5009Y2434D02* D03* X4948Y2448D02* D03* X4939Y2354D02* D03* X4986D02* D03* Y2229D02* D03* X4939D02* D03* X4924Y2201D02* D03* X4800Y2223D02* D03* X4772D02* D03* X4743D02* D03* X4700D02* D03* X4672D02* D03* X4643D02* D03* X4604Y2159D02* D03* X4643Y2108D02* D03* X4671D02* D03* X4700D02* D03* X4743D02* D03* X4771D02* D03* X4800D02* D03* X4835Y2014D02* D03* X4804D02* D03* X4771D02* D03* X4646D02* D03* X4615D02* D03* X4770Y1905D02* D03* X4815D02* D03* X4860D02* D03* X4905D02* D03* X4945D02* D03* X5044Y1740D02* D03* X5150Y1830D02* D03* X5185D02* D03* Y1865D02* D03* X5150D02* D03* X5087Y2128D02* D03* X5124D02* D03* X5162D02* D03* X5240Y2220D02* D03* Y2255D02* D03* Y2290D02* D03* X5365Y2321D02* D03* X5315D02* D03* X5287Y2289D02* D03* Y2256D02* D03* Y2223D02* D03* X5315Y2189D02* D03* X5365D02* D03* X5415D02* D03* X5401Y2128D02* D03* X5437D02* D03* X5473D02* D03* X5493Y2223D02* D03* Y2256D02* D03* Y2289D02* D03* X5464Y2324D02* D03* X5415Y2321D02* D03* X5754Y2189D02* D03* X5704D02* D03* X5717Y2128D02* D03* X5681D02* D03* X5645D02* D03* X5654Y2189D02* D03* X5625Y2223D02* D03* Y2256D02* D03* Y2289D02* D03* X5654Y2321D02* D03* X5704D02* D03* X5754D02* D03* X5803Y2324D02* D03* X5832Y2289D02* D03* Y2256D02* D03* Y2223D02* D03* X5921Y2236D02* D03* Y2190D02* D03* X5975D02* D03* Y2236D02* D03* X6021D02* D03* Y2190D02* D03* X6075D02* D03* Y2236D02* D03* X6214Y2109D02* D03* X6135Y2077D02* D03* Y2033D02* D03* X6075Y2136D02* D03* Y2090D02* D03* Y2036D02* D03* Y1990D02* D03* Y1936D02* D03* Y1890D02* D03* X6021Y1936D02* D03* Y1890D02* D03* Y1836D02* D03* Y1790D02* D03* X5975D02* D03* Y1836D02* D03* X5921Y1790D02* D03* Y1836D02* D03* X5870Y1840D02* D03* X5855Y1875D02* D03* Y1910D02* D03* X5975Y1936D02* D03* Y1890D02* D03* X5921D02* D03* Y1936D02* D03* Y1990D02* D03* Y2036D02* D03* X5936Y2080D02* D03* X5975Y2090D02* D03* Y2136D02* D03* X5921D02* D03* X6021D02* D03* Y2090D02* D03* Y2036D02* D03* Y1990D02* D03* X5975D02* D03* Y2036D02* D03* X6037Y1066D02* D03* X6028Y1216D02* D03* X6145D02* D03* X6187Y1141D02* D03* X6341D02* D03* X6337Y1230D02* D03* X6236Y1340D02* D03* X6221Y1390D02* D03* X6275D02* D03* X6321D02* D03* X6275Y1436D02* D03* X6321D02* D03* Y1490D02* D03* X6275D02* D03* X6175D02* D03* X6121Y1336D02* D03* X6021D02* D03* X5975D02* D03* X5921D02* D03* X5864Y1269D02* D03* X5783Y1263D02* D03* X5736D02* D03* Y1139D02* D03* X5783D02* D03* X5530Y1380D02* D03* X5560D02* D03* X5588D02* D03* X5630D02* D03* X5660D02* D03* X5688D02* D03* Y1265D02* D03* X5658D02* D03* X5630D02* D03* X5588D02* D03* X5558D02* D03* X5530D02* D03* X5410Y1289D02* D03* X5392Y1263D02* D03* X5344D02* D03* X5392Y1139D02* D03* X5344D02* D03* X5262Y1146D02* D03* X5211Y1277D02* D03* X5204Y1213D02* D03* X5065Y1234D02* D03* X5033Y1236D02* D03* X5001Y1234D02* D03* X4845Y1233D02* D03* X4869Y1387D02* D03* X4860Y1446D02* D03* X4929Y1565D02* D03* X4874Y1572D02* D03* X4771Y1564D02* D03* X4682Y1572D02* D03* X4420Y1446D02* D03* X4514Y1445D02* D03* X4609D02* D03* X4704Y1446D02* D03* X4750Y1399D02* D03* X4793D02* D03* X4686Y1269D02* D03* X4687Y1235D02* D03* X4639Y1245D02* D03* X4593Y1233D02* D03* X4514Y1121D02* D03* X4502Y1238D02* D03* X4435Y1233D02* D03* X4404D02* D03* X4373D02* D03* X4340D02* D03* X4310Y1235D02* D03* X4246D02* D03* X4184Y1237D02* D03* X4151D02* D03* X4120D02* D03* X4105Y1316D02* D03* X4089Y1234D02* D03* X3994D02* D03* X3867Y1235D02* D03* X3804D02* D03* X3752Y1241D02* D03* X3744Y1190D02* D03* X3529Y1234D02* D03* X3498D02* D03* X3435Y1241D02* D03* X3404D02* D03* X3372Y1268D02* D03* Y1234D02* D03* X3341Y1242D02* D03* X3388Y1438D02* D03* X3441Y1423D02* D03* X3472Y1420D02* D03* X3555Y1408D02* D03* X3553Y1566D02* D03* X3522Y1564D02* D03* X3580Y1580D02* D03* X3607Y1565D02* D03* X3854Y1559D02* D03* X3821Y1445D02* D03* X3851Y1416D02* D03* X4010Y1446D02* D03* X4105Y1445D02* D03* X4136Y1560D02* D03* X4168Y1561D02* D03* X4199D02* D03* X4221Y1625D02* D03* X4231Y1560D02* D03* X4263Y1446D02* D03* X4294Y1563D02* D03* X4325D02* D03* X4356D02* D03* X4388D02* D03* X4390Y1625D02* D03* X4499Y1740D02* D03* X4491Y1871D02* D03* X4635Y1905D02* D03* X4680D02* D03* X4725D02* D03* X4252Y1975D02* D03* X4359Y2014D02* D03* X4281Y2108D02* D03* X4251D02* D03* X4223D02* D03* X4181D02* D03* X4151D02* D03* X4123D02* D03* X4058Y2161D02* D03* X4066Y2244D02* D03* X4021D02* D03* X3924Y2260D02* D03* X4021Y2339D02* D03* X4066D02* D03* X4147D02* D03* X4192D02* D03* X4234Y2354D02* D03* X4282D02* D03* X4123Y2223D02* D03* X4153D02* D03* X4181D02* D03* X4223D02* D03* X4253D02* D03* X4281D02* D03* X4401Y2203D02* D03* X4419Y2229D02* D03* X4467D02* D03* X4547Y2225D02* D03* X4595D02* D03* X4419Y2354D02* D03* X4467D02* D03* X4547Y2350D02* D03* X4595D02* D03* X4585Y2494D02* D03* X4634D02* D03* X4657Y2350D02* D03* X4705D02* D03* X4755Y2365D02* D03* X4800D02* D03* X4925Y2769D02* D03* X4701Y2806D02* D03* X4559Y2950D02* D03* X4376Y3057D02* D03* X4305Y3046D02* D03* X4241Y3112D02* D03* X4240Y3166D02* D03* X4304Y3196D02* D03* X4359Y3169D02* D03* X4369Y3218D02* D03* X4377Y3142D02* D03* X4380Y3270D02* D03* X4331Y3278D02* D03* X4302Y3265D02* D03* X4379Y3442D02* D03* X4365Y3415D02* D03* X4297Y3428D02* D03* X4334Y3386D02* D03* X4335Y3356D02* D03* X4381Y3342D02* D03* X4559Y3305D02* D03* X4247Y2869D02* D03* X4299Y2918D02* D03* X4355D02* D03* X4389Y2835D02* D03* X4432Y2688D02* D03* X4356D02* D03* X4325Y2691D02* D03* X4172Y2688D02* D03* X4121D02* D03* X4079D02* D03* X4066Y2816D02* D03* X4096Y2903D02* D03* X4069Y2917D02* D03* X4010Y2908D02* D03* X3974Y2918D02* D03* X3932Y2811D02* D03* X3891Y2920D02* D03* X3819D02* D03* X3847Y3039D02* D03* X3877D02* D03* X3907Y3041D02* D03* X3938Y3110D02* D03* X3996Y3093D02* D03* Y3044D02* D03* X4126Y3137D02* D03* Y3167D02* D03* Y3197D02* D03* X4122Y3240D02* D03* X3997Y3252D02* D03* Y3323D02* D03* X4122Y3318D02* D03* Y3385D02* D03* Y3467D02* D03* Y3531D02* D03* X3998Y3465D02* D03* X4001Y3383D02* D03* X3920Y3415D02* D03* X3855Y3367D02* D03* X3791Y3401D02* D03* X3792Y3445D02* D03* X3743Y3440D02* D03* X3748Y3486D02* D03* X3692Y3490D02* D03* X3698Y3441D02* D03* Y3396D02* D03* X3748Y3392D02* D03* X3747Y3340D02* D03* X3695Y3341D02* D03* X3646D02* D03* X3643Y3387D02* D03* X3647Y3441D02* D03* X3648Y3485D02* D03* Y3541D02* D03* X3703Y3553D02* D03* X3740Y3607D02* D03* X3647Y3640D02* D03* X3588Y3697D02* D03* X3523Y3765D02* D03* X3486Y3791D02* D03* X3425Y3798D02* D03* X3363Y3794D02* D03* X3645Y3797D02* D03* X3591Y3796D02* D03* X3596Y3896D02* D03* X3505D02* D03* X3493Y4043D02* D03* X3506Y3991D02* D03* X3546Y3997D02* D03* X3547Y4040D02* D03* X3548Y4085D02* D03* X3597Y4043D02* D03* X3641Y4091D02* D03* X3675Y4221D02* D03* X3799Y4134D02* D03* X3831D02* D03* X3872Y4138D02* D03* X3875Y4187D02* D03* X3841Y4186D02* D03* X3875Y4424D02* D03* X3843Y4422D02* D03* X3855Y4457D02* D03* X3805Y4529D02* D03* X3816Y4490D02* D03* X3697Y4416D02* D03* X3560Y4446D02* D03* X3480Y4308D02* D03* X3416Y4538D02* D03* X3438Y4561D02* D03* X3487Y4562D02* D03* X3537Y4595D02* D03* X3587Y4642D02* D03* X3612Y4616D02* D03* X3637Y4665D02* D03* X3662Y4629D02* D03* X3678Y4567D02* D03* X3712Y4638D02* D03* X3763Y4848D02* D03* X4081Y4187D02* D03* X4108Y4072D02* D03* X4037Y4068D02* D03* Y4027D02* D03* X3909Y3933D02* D03* X3879Y3930D02* D03* X3831Y4006D02* D03* X3799D02* D03* X3751Y4048D02* D03* X3698D02* D03* X3693Y3993D02* D03* X3696Y3938D02* D03* X3735Y3896D02* D03* X3796Y3912D02* D03* X3794Y3846D02* D03* X3827Y3844D02* D03* X3798Y3772D02* D03* X3793Y3718D02* D03* X3820Y3684D02* D03* X3806Y3613D02* D03* X3816Y3584D02* D03* X3995Y3605D02* D03* X3993Y3546D02* D03* X3955Y3558D02* D03* X3899Y3608D02* D03* X3941Y3623D02* D03* X3909Y3658D02* D03* X3938Y3771D02* D03* X3980Y3787D02* D03* X3979Y3830D02* D03* X3944Y3816D02* D03* X4126Y3848D02* D03* X4196Y3951D02* D03* X4266Y3852D02* D03* X4303Y3665D02* D03* X4295Y3563D02* D03* X4296Y3494D02* D03* X4354Y3486D02* D03* X4377Y3509D02* D03* X4380Y3592D02* D03* X4568Y3669D02* D03* X4559Y3700D02* D03* Y4050D02* D03* X4560Y4387D02* D03* X4193Y4780D02* D03* X4319D02* D03* X4577Y4717D02* D03* X4907D02* D03* X5250Y4721D02* D03* X5600D02* D03* X5950D02* D03* X5971Y4360D02* D03* X5880Y4224D02* D03* X5941Y4235D02* D03* X5944Y4185D02* D03* X6016Y4132D02* D03* X5943Y4130D02* D03* X5876Y4150D02* D03* X5730Y4187D02* D03* X5729Y4232D02* D03* X5629Y4233D02* D03* Y4195D02* D03* X5470Y4152D02* D03* X5369Y4188D02* D03* X5390Y4226D02* D03* X5284Y4188D02* D03* X5291Y4230D02* D03* X5206D02* D03* X5105Y4164D02* D03* X5109Y4090D02* D03* X4998Y3999D02* D03* Y3909D02* D03* X4992Y3803D02* D03* X5049Y3652D02* D03* X5091D02* D03* Y3557D02* D03* X5049D02* D03* X4992Y3478D02* D03* X5088Y3433D02* D03* X5188Y3478D02* D03* X5284Y3474D02* D03* X5286Y3546D02* D03* X5349Y3650D02* D03* Y3750D02* D03* X5305Y3819D02* D03* X5216Y3643D02* D03* X5218Y3699D02* D03* X5188Y3803D02* D03* X5142Y3909D02* D03* Y3999D02* D03* X5291Y3404D02* D03* X5252Y3336D02* D03* X5175Y3351D02* D03* X5091Y3322D02* D03* X5049D02* D03* X5175Y3207D02* D03* X5252Y3262D02* D03* X5378Y3258D02* D03* Y3300D02* D03* X5460Y3353D02* D03* X5542Y3300D02* D03* Y3258D02* D03* X5618Y3231D02* D03* X5692D02* D03* X6022Y3470D02* D03* X5979Y3472D02* D03* X5936Y3447D02* D03* X5881Y3442D02* D03* X5850Y3444D02* D03* X5763Y3498D02* D03* X5815Y3444D02* D03* X5770Y3389D02* D03* X5768Y3300D02* D03* Y3258D02* D03* X5827Y3128D02* D03* X5858Y3325D02* D03* X5947Y3300D02* D03* Y3258D02* D03* X6057Y3296D02* D03* X6054Y3359D02* D03* X6037Y3150D02* D03* X6099Y3154D02* D03* X6131Y3365D02* D03* X6123Y3420D02* D03* X5978Y3581D02* D03* X5948Y3565D02* D03* X5900Y3596D02* D03* X5879Y3689D02* D03* X5942Y3676D02* D03* X6019Y3664D02* D03* X6067Y3673D02* D03* X6079Y3732D02* D03* X6025Y3810D02* D03* X5975D02* D03* X5946Y3776D02* D03* X5838Y3847D02* D03* X5928Y3954D02* D03* X5974Y4010D02* D03* X6072Y3954D02* D03* D049* X1984Y3825D02* D03* Y3726D02* D03* X1886D02* D03* X1528Y1787D02* D03* X1606Y1748D02* D03* X1685D02* D03* X1764D02* D03* Y1669D02* D03* X1685D02* D03* X1606D02* D03* X1528Y1630D02* D03* X1921Y1748D02* D03* X1843D02* D03* Y1669D02* D03* X2327Y1069D02* D03* X4374D02* D03* X5120Y1340D02* D03* X5135Y2844D02* D03* X5085Y2894D02* D03* X5135Y2944D02* D03* X5185Y2894D02* D03* Y3094D02* D03* X5235Y3044D02* D03* X5185Y2994D02* D03* X5235Y2944D02* D03* X5285Y2994D02* D03* X5335Y3044D02* D03* X5285Y3094D02* D03* X5385D02* D03* X5435Y3044D02* D03* X5385Y2994D02* D03* X5335Y2944D02* D03* X5285Y2894D02* D03* X5235Y2844D02* D03* X5335D02* D03* X5385Y2894D02* D03* X5435Y2944D02* D03* X5485Y2994D02* D03* X5535Y3044D02* D03* X5485Y3094D02* D03* X5435Y2844D02* D03* X5485Y2894D02* D03* X5535Y2944D02* D03* X5585Y2894D02* D03* X5535Y2844D02* D03* X5635D02* D03* X5685Y2894D02* D03* X5635Y2944D02* D03* X5585Y2994D02* D03* X5635Y3044D02* D03* X5585Y3094D02* D03* X5685D02* D03* X5735Y3044D02* D03* X5685Y2994D02* D03* X5735Y2944D02* D03* Y2844D02* D03* X5785Y2894D02* D03* X5835Y2844D02* D03* X5935D02* D03* X5885Y2894D02* D03* X5935Y2944D02* D03* X5985Y2894D02* D03* X6035Y2844D02* D03* X6085Y2894D02* D03* X6135Y2944D02* D03* X6185Y2994D02* D03* X6235Y3044D02* D03* X6185Y3094D02* D03* X6085D02* D03* X6135Y3044D02* D03* X6085Y2994D02* D03* X6035Y2944D02* D03* X5985Y2994D02* D03* X6035Y3044D02* D03* X5985Y3094D02* D03* X5885D02* D03* X5935Y3044D02* D03* X5885Y2994D02* D03* X5835Y2944D02* D03* X5785Y2994D02* D03* X5835Y3044D02* D03* X5785Y3094D02* D03* X6135Y2844D02* D03* X6185Y2894D02* D03* X6235Y2944D02* D03* X6285Y2994D02* D03* X6335Y3044D02* D03* X6285Y3194D02* D03* X6335Y3244D02* D03* X6385Y3194D02* D03* X6435Y3144D02* D03* X6385Y3094D02* D03* X6435Y3044D02* D03* X6385Y2994D02* D03* X6335Y2944D02* D03* X6285Y2894D02* D03* X6235Y2844D02* D03* X6335D02* D03* X6385Y2894D02* D03* X6435Y2944D02* D03* Y2844D02* D03* X5645Y3406D02* D03* Y3456D02* D03* Y3506D02* D03* Y3556D02* D03* Y3606D02* D03* Y3656D02* D03* Y3706D02* D03* Y3756D02* D03* Y3806D02* D03* Y3856D02* D03* Y3906D02* D03* Y3956D02* D03* Y4006D02* D03* Y4056D02* D03* Y4106D02* D03* X5545D02* D03* Y4056D02* D03* Y4006D02* D03* Y3956D02* D03* Y3906D02* D03* Y3856D02* D03* Y3806D02* D03* Y3756D02* D03* Y3706D02* D03* Y3656D02* D03* Y3606D02* D03* Y3556D02* D03* Y3506D02* D03* Y3456D02* D03* X4885Y3094D02* D03* X4935Y3044D02* D03* X4985Y2994D02* D03* X5035Y3044D02* D03* X4985Y3094D02* D03* X5085D02* D03* X5135Y3044D02* D03* X5085Y2994D02* D03* X5035Y2944D02* D03* X4985Y2894D02* D03* X5035Y2844D02* D03* X4935D02* D03* X4885Y2894D02* D03* X4835Y2844D02* D03* X4935Y2944D02* D03* X4885Y2994D02* D03* X4835Y3044D02* D03* X4785Y2994D02* D03* X4835Y2944D02* D03* X4785Y2894D02* D03* X4735Y2844D02* D03* X4635Y2944D02* D03* X4685Y2894D02* D03* X4735Y2944D02* D03* X4685Y2994D02* D03* X4635Y3044D02* D03* Y3244D02* D03* X4685Y3194D02* D03* X4635Y3144D02* D03* X4735D02* D03* X4685Y3094D02* D03* X4735Y3044D02* D03* X4785Y3094D02* D03* X4835Y3144D02* D03* X4885Y3194D02* D03* X4785D02* D03* X4735Y3244D02* D03* X4685Y3294D02* D03* X4635Y3344D02* D03* X4685Y3394D02* D03* X4635Y3444D02* D03* Y3544D02* D03* X4685Y3594D02* D03* X4635Y3644D02* D03* X4735D02* D03* X4685Y3694D02* D03* X4735Y3744D02* D03* X4785Y3694D02* D03* X4835Y3644D02* D03* X4885Y3694D02* D03* X4785Y3594D02* D03* X4835Y3544D02* D03* X4885Y3594D02* D03* Y3494D02* D03* Y3394D02* D03* X4835Y3444D02* D03* X4785Y3494D02* D03* X4735Y3544D02* D03* X4685Y3494D02* D03* X4735Y3444D02* D03* X4785Y3394D02* D03* X4735Y3344D02* D03* X4785Y3294D02* D03* X4835Y3244D02* D03* X4885Y3294D02* D03* X4835Y3344D02* D03* X4785Y3794D02* D03* X4835Y3744D02* D03* X4885Y3794D02* D03* X4835Y3844D02* D03* X4785Y3894D02* D03* X4735Y3844D02* D03* X4685Y3794D02* D03* X4635Y3744D02* D03* Y3844D02* D03* X4685Y3894D02* D03* X4635Y3944D02* D03* X4685Y3994D02* D03* X4635Y4044D02* D03* X4735D02* D03* X4685Y4094D02* D03* X4735Y4144D02* D03* X4785Y4094D02* D03* X4835Y4044D02* D03* X4885Y3994D02* D03* Y3894D02* D03* X4835Y3944D02* D03* X4785Y3994D02* D03* X4735Y3944D02* D03* X4635Y4144D02* D03* X4685Y4194D02* D03* X4635Y4244D02* D03* X4735D02* D03* X4685Y4294D02* D03* X4735Y4344D02* D03* X4785Y4294D02* D03* X4835Y4244D02* D03* X4885Y4094D02* D03* Y4194D02* D03* X4835Y4144D02* D03* X4785Y4194D02* D03* X4885Y4294D02* D03* X4835Y4344D02* D03* X4885Y4394D02* D03* X4785D02* D03* X4735Y4444D02* D03* X4685Y4394D02* D03* X4635Y4344D02* D03* Y4444D02* D03* X4685Y4494D02* D03* X4635Y4544D02* D03* X4685Y4594D02* D03* X4735Y4544D02* D03* X4785Y4594D02* D03* X4835Y4644D02* D03* X4885Y4594D02* D03* X4835Y4544D02* D03* X4785Y4494D02* D03* X4835Y4444D02* D03* X4885Y4494D02* D03* X4935Y4544D02* D03* X5035D02* D03* X4985Y4494D02* D03* X4935Y4444D02* D03* X4985Y4394D02* D03* X5035Y4444D02* D03* X5085Y4394D02* D03* X5135Y4444D02* D03* X5085Y4494D02* D03* X5135Y4544D02* D03* X5185Y4594D02* D03* X5235Y4544D02* D03* X5185Y4494D02* D03* X5235Y4444D02* D03* X5185Y4394D02* D03* X5335Y4644D02* D03* X5385Y4594D02* D03* X5435Y4644D02* D03* X5485Y4594D02* D03* X5535Y4644D02* D03* X5435Y4544D02* D03* X5385Y4494D02* D03* X5435Y4444D02* D03* X5385Y4394D02* D03* X5285D02* D03* X5335Y4444D02* D03* X5285Y4494D02* D03* X5335Y4544D02* D03* X5285Y4594D02* D03* X5235Y4644D02* D03* X5135D02* D03* X5085Y4594D02* D03* X5035Y4644D02* D03* X4985Y4594D02* D03* X4935Y4644D02* D03* X5485Y4394D02* D03* X5535Y4444D02* D03* X5485Y4494D02* D03* X5535Y4544D02* D03* X5585Y4494D02* D03* X5635Y4444D02* D03* X5585Y4394D02* D03* X5685D02* D03* X5735Y4444D02* D03* X5685Y4494D02* D03* X5735Y4544D02* D03* X5685Y4594D02* D03* X5635Y4544D02* D03* X5585Y4594D02* D03* X5635Y4644D02* D03* X5735D02* D03* X5785Y4594D02* D03* X5835Y4644D02* D03* X5885Y4594D02* D03* X5935Y4644D02* D03* X5985Y4594D02* D03* X5935Y4544D02* D03* X5885Y4494D02* D03* X5935Y4444D02* D03* X5885Y4394D02* D03* X5785D02* D03* X5835Y4444D02* D03* X5785Y4494D02* D03* X5835Y4544D02* D03* X5985Y4394D02* D03* X6035Y4444D02* D03* X5985Y4494D02* D03* X6035Y4544D02* D03* X6085Y4494D02* D03* X6135Y4444D02* D03* X6085Y4394D02* D03* X6185D02* D03* X6235Y4444D02* D03* X6185Y4494D02* D03* X6235Y4544D02* D03* X6135D02* D03* X6085Y4594D02* D03* X6035Y4644D02* D03* X6135D02* D03* X6185Y4594D02* D03* X6235Y4644D02* D03* X6285Y4594D02* D03* X6335Y4644D02* D03* X6385Y4594D02* D03* X6435Y4644D02* D03* X6335Y4444D02* D03* X6285Y4494D02* D03* X6335Y4544D02* D03* X6435D02* D03* X6385Y4494D02* D03* X6435Y4444D02* D03* X6385Y4394D02* D03* X6435Y4344D02* D03* X6385Y4294D02* D03* X6335Y4244D02* D03* X6285Y4294D02* D03* Y4194D02* D03* X6335Y4144D02* D03* X6285Y4094D02* D03* X6335Y4044D02* D03* X6385Y3994D02* D03* X6435Y3944D02* D03* X6385Y3894D02* D03* X6435Y3844D02* D03* Y3744D02* D03* X6385Y3694D02* D03* X6335Y3644D02* D03* X6285Y3694D02* D03* Y3594D02* D03* X6335Y3544D02* D03* X6385Y3594D02* D03* X6435Y3544D02* D03* Y3644D02* D03* Y3344D02* D03* X6385Y3294D02* D03* X6435Y3244D02* D03* X6335Y3144D02* D03* X6285Y3094D02* D03* X6235Y3144D02* D03* X6185Y3194D02* D03* X6235Y3244D02* D03* X6185Y3294D02* D03* X6235Y3344D02* D03* X6185Y3394D02* D03* X6235Y3444D02* D03* X6285Y3494D02* D03* X6335Y3444D02* D03* X6285Y3394D02* D03* Y3294D02* D03* X6335Y3344D02* D03* X6385Y3394D02* D03* X6435Y3444D02* D03* X6385Y3494D02* D03* X6185D02* D03* X6235Y3544D02* D03* X6185Y3594D02* D03* X6235Y3644D02* D03* X6185Y3694D02* D03* X6235Y3744D02* D03* X6185Y3794D02* D03* Y3894D02* D03* X6235Y3844D02* D03* X6285Y3794D02* D03* X6335Y3744D02* D03* X6385Y3794D02* D03* X6335Y3844D02* D03* X6285Y3894D02* D03* X6335Y3944D02* D03* X6285Y3994D02* D03* X6235Y3944D02* D03* X6185Y3994D02* D03* X6235Y4044D02* D03* X6185Y4094D02* D03* X6235Y4144D02* D03* X6185Y4194D02* D03* X6235Y4244D02* D03* X6185Y4294D02* D03* X6235Y4344D02* D03* X6285Y4394D02* D03* X6335Y4344D02* D03* X6435Y4244D02* D03* X6385Y4194D02* D03* X6435Y4144D02* D03* X6385Y4094D02* D03* X6435Y4044D02* D03* X6972Y1069D02* D03* D322* X1528Y1709D02* D03* D053* X1730Y2142D02* D03* X1652D02* D03* X1573D02* D03* Y2260D02* D03* X1652D02* D03* X1730Y2614D02* D03* X1652D02* D03* X1573D02* D03* Y2732D02* D03* X1652D02* D03* X1511Y3041D02* D03* Y3141D02* D03* Y3426D02* D03* Y3526D02* D03* X1814Y4091D02* D03* Y4189D02* D03* Y4268D02* D03* X2081Y4644D02* D03* D028* X1516Y2059D02* X1587D01* X1809Y2236D02* Y2165D01* X1587Y2343D02* X1516D01* X1587Y2531D02* X1516D01* Y2815D02* X1587D01* X1809Y2709D02* Y2638D01* D052* X4919Y1339D02* D03* X4819D02* D03* X4719D02* D03* X4619D02* D03* X4519D02* D03* X4419D02* D03* X4319D02* D03* X1834Y1521D02* D03* X2020Y3109D02* D03* Y3209D02* D03* Y3309D02* D03* Y3409D02* D03* X1920Y3359D02* D03* Y3259D02* D03* Y3159D02* D03* X2138Y4049D02* D03* X1954Y4780D02* D03* X4370Y3885D02* D03* Y3785D02* D03* X4332Y2800D02* D03* X5555Y2543D02* D03* X5969D02* D03* X6386D02* D03* X7083Y3398D02* D03* X6689Y3787D02* D03* X7083Y4177D02* D03* D048* X1734Y1471D02* D03* X1976Y1230D02* D03* Y1181D02* D03* X7346Y1157D02* D03* Y1236D02* D03* Y1315D02* D03* Y1394D02* D03* Y1472D02* D03* Y1551D02* D03* Y1630D02* D03* Y1709D02* D03* Y1787D02* D03* X7425Y1709D02* D03* Y1787D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1709D02* D03* X7583D02* D03* X7504D02* D03* Y1630D02* D03* X7425D02* D03* Y1551D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1630D02* D03* X7583D02* D03* X7661Y1866D02* D03* X7583D02* D03* X7504D02* D03* Y1945D02* D03* X7425D02* D03* Y1866D02* D03* X7346D02* D03* Y1945D02* D03* Y2024D02* D03* Y2102D02* D03* Y2181D02* D03* Y2260D02* D03* Y2339D02* D03* Y2417D02* D03* Y2496D02* D03* Y2575D02* D03* Y2654D02* D03* Y2732D02* D03* Y2811D02* D03* Y2890D02* D03* Y2969D02* D03* Y3047D02* D03* Y3126D02* D03* Y3205D02* D03* Y3283D02* D03* Y3362D02* D03* Y3441D02* D03* Y3520D02* D03* Y3598D02* D03* Y3677D02* D03* Y3756D02* D03* X7425Y3441D02* D03* Y3362D02* D03* X7504D02* D03* Y3441D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y3362D02* D03* Y3283D02* D03* Y3205D02* D03* Y3047D02* D03* Y2969D02* D03* Y2890D02* D03* Y2811D02* D03* Y2732D02* D03* Y2654D02* D03* Y2575D02* D03* Y2496D02* D03* X7583D02* D03* X7661D02* D03* Y2575D02* D03* X7583D02* D03* X7504D02* D03* Y2496D02* D03* X7425D02* D03* Y2575D02* D03* Y2732D02* D03* Y2654D02* D03* X7504D02* D03* Y2732D02* D03* X7583D02* D03* X7661D02* D03* Y2654D02* D03* X7583D02* D03* Y2811D02* D03* X7661D02* D03* Y2890D02* D03* X7583D02* D03* X7504D02* D03* Y2811D02* D03* X7425D02* D03* Y2890D02* D03* Y3047D02* D03* Y2969D02* D03* X7504D02* D03* Y3047D02* D03* X7583D02* D03* X7661D02* D03* Y2969D02* D03* X7583D02* D03* Y2339D02* D03* X7661D02* D03* Y2260D02* D03* X7583D02* D03* X7504D02* D03* X7425D02* D03* Y2417D02* D03* Y2339D02* D03* X7504D02* D03* Y2417D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y2339D02* D03* Y2260D02* D03* X7583Y1945D02* D03* X7661D02* D03* X7740D02* D03* Y1866D02* D03* Y1787D02* D03* Y1709D02* D03* Y1630D02* D03* Y1551D02* D03* Y1472D02* D03* Y1394D02* D03* Y1315D02* D03* Y1236D02* D03* X7661Y1315D02* D03* X7583D02* D03* X7425Y1394D02* D03* Y1472D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1394D02* D03* X7583D02* D03* X7504D02* D03* Y1315D02* D03* X7425D02* D03* Y1236D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y1157D02* D03* X7583D02* D03* X7504D02* D03* X7425D02* D03* X7583Y3205D02* D03* X7661D02* D03* Y3126D02* D03* X7583D02* D03* X7504D02* D03* Y3205D02* D03* X7425D02* D03* Y3126D02* D03* Y3283D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* Y3362D02* D03* X7583D02* D03* Y3520D02* D03* X7661D02* D03* Y3598D02* D03* X7583D02* D03* X7504D02* D03* Y3520D02* D03* X7425D02* D03* Y3598D02* D03* Y3756D02* D03* Y3677D02* D03* X7504D02* D03* Y3756D02* D03* X7583D02* D03* X7661D02* D03* Y3677D02* D03* X7583D02* D03* Y3835D02* D03* X7661D02* D03* Y3913D02* D03* X7583D02* D03* X7504D02* D03* Y3835D02* D03* X7425D02* D03* Y3913D02* D03* X7346Y3835D02* D03* Y3913D02* D03* Y3992D02* D03* Y4071D02* D03* X7425D02* D03* Y3992D02* D03* X7504D02* D03* Y4071D02* D03* X7583D02* D03* X7661D02* D03* Y3992D02* D03* X7583D02* D03* Y4307D02* D03* X7661D02* D03* Y4386D02* D03* X7583D02* D03* X7504D02* D03* Y4307D02* D03* X7425D02* D03* Y4386D02* D03* Y4228D02* D03* Y4150D02* D03* X7504D02* D03* Y4228D02* D03* X7583D02* D03* X7661D02* D03* Y4150D02* D03* X7583D02* D03* X7346D02* D03* Y4228D02* D03* Y4307D02* D03* Y4386D02* D03* Y4465D02* D03* Y4543D02* D03* Y4622D02* D03* Y4701D02* D03* Y4780D02* D03* X7425Y4543D02* D03* Y4465D02* D03* X7504D02* D03* Y4543D02* D03* X7583D02* D03* X7661D02* D03* Y4465D02* D03* X7583D02* D03* Y4622D02* D03* X7661D02* D03* Y4701D02* D03* X7583D02* D03* X7504D02* D03* Y4622D02* D03* X7425D02* D03* Y4701D02* D03* Y4780D02* D03* X7504D02* D03* X7583D02* D03* X7661D02* D03* X7740D02* D03* Y4701D02* D03* Y4622D02* D03* Y4543D02* D03* Y4465D02* D03* Y4386D02* D03* Y4307D02* D03* Y4228D02* D03* Y4150D02* D03* Y4071D02* D03* Y3992D02* D03* Y3913D02* D03* Y3835D02* D03* Y3756D02* D03* Y3677D02* D03* Y3598D02* D03* Y3520D02* D03* D047* X2327Y1787D02* D03* D03* Y1237D02* D03* D03* D068* X1641Y1217D02* D03* Y4720D02* D03* D065* X1707Y3970D02* D03* Y4487D02* D03* X2359Y4640D02* D03* X3940D02* D03* D058* X2640Y1340D02* D03* X1791Y2978D02* D03* Y3589D02* D03* D331* X1670Y3058D02* D03* Y3509D02* D03* D060* X4275Y4140D02* D03* X5346Y2524D02* D03* X6650Y4102D02* D03* D061* X7425Y2102D02* D03* X7661D02* D03* D056* X2359Y4522D02* D03* X3940D02* D03* D014* X3979Y3830D02* X4024Y3785D01* Y3595D01* X3999Y3570D01* X3967D01* X3955Y3558D01* X3941Y3623D02* X3931Y3633D01* X3856D01* X3848Y3641D01* X3774D01* X3740Y3607D01* X4389Y2835D02* X4442Y2782D01* X4875D01* X4887Y2794D01* X6175D01* X6182Y2787D01* X6113Y1836D02* X6874D01* X6897Y1813D01* X7267D01* Y1890D01* Y2035D01* Y2764D02* Y2618D01* Y2473D01* Y2327D01* Y2181D01* Y2035D01* Y1813D02* Y1744D01* Y1599D01* Y1331D02* Y1241D01* X7274Y1234D01* X7267Y2764D02* X7225Y2806D01* Y2989D01* X7267Y3031D01* Y3177D01* Y3323D01* Y3469D01* Y3614D01* Y3760D01* Y3905D01* Y4051D01* Y4197D01* Y4343D01* Y4488D01* D018* X6606Y1231D02* X6684Y1309D01* X7042D01* X7066Y1333D01* Y1402D01* X7164Y1500D01* X7215D01* X7235Y1480D01* X7258D01* X7284D01* X7316Y1512D01* X7533D01* X7543Y1522D01* Y1551D01* X7583D01* X7543D02* Y1969D01* X7520Y1992D01* Y2213D01* X7543Y2236D01* Y2811D01* X7583D01* X7543D02* Y2837D01* X7530Y2850D01* X7258D01* D01* Y2882D02* X7278D01* X7325Y2929D01* X7504D01* Y2890D02* Y2929D01* X7604D01* X7622Y2911D01* Y2237D01* X7567Y2182D01* Y2025D01* X7622Y1970D01* Y1371D01* X7605Y1354D01* X7504D01* Y1315D01* Y1354D02* X7325D01* X7294Y1385D01* Y1434D01* X7279Y1449D01* X7258D01* X7244D01* X7229Y1434D01* Y1374D01* X7127Y1272D01* X6891D01* X6850Y1231D01* D076* X1921Y1669D02* D03* X1886Y3825D02* D03* X4735Y4644D02* D03* X5545Y3406D02* D03* D080* X1730Y2260D02* D03* Y2732D02* D03* X1814Y4366D02* D03* X2179Y4516D02* D03* D081* X1809Y2236D02* D03* Y2165D02* D03* X1587Y2059D02* D03* X1516D02* D03* Y2343D02* D03* X1587D02* D03* Y2531D02* D03* X1516D02* D03* Y2815D02* D03* X1587D02* D03* X1809Y2709D02* D03* Y2638D02* D03* D079* X1834Y1421D02* D03* X1920Y3459D02* D03* X2138Y3949D02* D03* X1854Y4780D02* D03* X4370Y3985D02* D03* X4140Y2800D02* D03* X5019Y1339D02* D03* X5752Y2543D02* D03* X6165D02* D03* X6583D02* D03* X7083Y3594D02* D03* X6886Y3787D02* D03* X7083Y3980D02* D03* D075* X1976Y1280D02* D03* X7740Y1157D02* D03* Y3126D02* D03* M02*pcb2gcode-1.1.4-git20120902/testing/gerbv_example/ekf2/millproject000066400000000000000000000004721202063157500243450ustar00rootroot00000000000000dpi=1000 front=l3.grb back=l4.grb drill=drill0.exc offset=0.010 zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 # parameters for cutting out boards cutter-diameter=0.03937 zcut=-0.08 cut-feed=3 cut-speed=20000 cut-infeed=0.1 # drilling parameters zdrill=-0.08 zchange=0.8 drill-feed=3 drill-speed=20000 pcb2gcode-1.1.4-git20120902/testing/gerbv_example/jj/000077500000000000000000000000001202063157500216475ustar00rootroot00000000000000pcb2gcode-1.1.4-git20120902/testing/gerbv_example/jj/README.txt000066400000000000000000000010421202063157500233420ustar00rootroot00000000000000This is an example from Joachim Jansen (EKF Elektronik GmbH Industrial Computers & Information Technology) who kindly sent this files to point out some bugs in gerbv. When I (spe) had gone through them I had found at least four bugs. The files are: l1-orig.grb : The original file. Contains filled polygons with circles as outline and three layers. l1-?.grb: The three layers in separate files. Layer 1 is drawn, layer 2 is "carved out" from layer 1 and layer3 is then finally the top layer. $Id$pcb2gcode-1.1.4-git20120902/testing/gerbv_example/jj/l1-orig.grb000066400000000000000000003024551202063157500236260ustar00rootroot00000000000000G04 Visula Post-processor * G04 Date : Thu Aug 29 14:50:26 2002 * G04 File name : /disk1/jobs/ekf/c/cd1/rev0/postpr/spool/l1.off * %FSTAX24Y24*% %MOIN*% %SFA1.000B1.000*% %SRX1Y1I0.000J0.000*% %IPPOS*% G75* %ADD10C,0.0050*% %ADD11C,0.0070*% %ADD12C,0.0080*% %ADD13C,0.0080*% %ADD14C,0.0100*% %ADD15C,0.0120*% %ADD16C,0.0160*% %ADD17C,0.0200*% %ADD18C,0.0240*% %ADD19C,0.0550*% %ADD20C,0.0870*% %ADD21R,0.0550X0.0550*% %ADD22R,0.0980X0.0980*% %ADD23O,0.0120X0.0720*% %ADD24R,0.0050X0.0002*% %ADD25R,0.0730X0.0007*% %ADD26R,0.0050X0.0012*% %ADD27R,0.0050X0.0022*% %ADD28R,0.0050X0.0032*% %ADD29R,0.0016X0.0050*% %ADD30R,0.0147X0.0050*% %ADD31R,0.0149X0.0050*% %ADD32R,0.0177X0.0050*% %ADD33R,0.0203X0.0050*% %ADD34R,0.0587X0.0050*% %ADD35R,0.0050X0.0052*% %ADD36R,0.0609X0.0068*% %ADD37R,0.0050X0.0072*% %ADD38R,0.0090X0.0080*% %ADD39R,0.0050X0.0082*% %ADD40R,0.0050X0.0093*% %ADD41R,0.0120X0.0093*% %ADD42R,0.0940X0.0102*% %ADD43R,0.0320X0.0108*% %ADD44R,0.0068X0.0120*% %ADD45R,0.0149X0.0120*% %ADD46R,0.0504X0.0120*% %ADD47R,0.0150X0.0620*% %ADD48R,0.0160X0.0240*% %ADD49R,0.0050X0.0182*% %ADD50R,0.1030X0.0200*% %ADD51R,0.0120X0.0212*% %ADD52R,0.0920X0.0240*% %ADD53R,0.0050X0.0252*% %ADD54R,0.0120X0.0282*% %ADD55R,0.0050X0.0292*% %ADD56R,0.0300X0.0350*% %ADD57R,0.0050X0.0312*% %ADD58R,0.0058X0.0320*% %ADD59R,0.0320X0.0320*% %ADD60R,0.0320X0.0320*% %ADD61R,0.0050X0.0332*% %ADD62R,0.0007X0.0350*% %ADD63R,0.0350X0.0500*% %ADD64R,0.0050X0.0364*% %ADD65R,0.0050X0.0372*% %ADD66R,0.0050X0.0392*% %ADD67R,0.0400X0.0510*% %ADD68R,0.0630X0.0400*% %ADD69R,0.0400X0.0630*% %ADD70R,0.0980X0.0400*% %ADD71R,0.0400X0.0980*% %ADD72R,0.0050X0.0422*% %ADD73R,0.0050X0.0432*% %ADD74R,0.0050X0.0472*% %ADD75R,0.0050X0.0522*% %ADD76R,0.0050X0.0582*% %ADD77R,0.0050X0.0622*% %ADD78R,0.0940X0.0630*% %ADD79R,0.0630X0.0940*% %ADD80R,0.0050X0.0672*% %ADD81R,0.0050X0.0692*% %ADD82R,0.0050X0.0792*% %ADD83R,0.0053X0.0980*% %ADD84R,0.1420X0.1180*% %ADD85R,0.2760X0.1380*% %ADD86R,0.1380X0.2760*% %LPD*% %LNl1_off_d1*% G75* G36* G01X072847Y028362D02* X072654D01* Y028677* X069150* Y024228* X072847* Y028362* G37* G36* G01X050291Y023756D02* X049819Y024228D01* X049701* Y025291* X049425* Y025961* X047732* Y024583* X047299* Y023874* X047732* Y023008* X047339* Y022299* X047732* Y021433* X047339* Y020724* X047732* Y019858* X047339* Y019150* X047732* Y018283* X047339* Y017654* X047693* X047850Y017496* Y016000* X048047Y015803* X049150* Y016787* X049504* X049858Y017142* X050409* Y017260* X051276Y018126* X051433* X051551Y018008* Y017850* X051079Y017378* Y017142* X051433* Y017260* X052299Y018126* X052535* X052811Y017850* Y017417* X053559* Y017732* X053677Y017850* X053874* X053992Y017732* Y017417* X059661* Y017496* X059780Y017614* X059976* X060449Y017142* X061433* X063638Y014937* Y013756* X064622* Y011236* X067732* X068283Y011787* Y013480* X067929Y013835* Y014504* X068283Y014858* Y018480* X067142* Y018835* X067535* Y020213* X065961* Y023598* X067535* Y025331* X065961* Y027969* X064701* Y030921* X062339* Y029307* X063756* X064307Y028756* Y025921* X063087Y024701* Y023205* X062732* Y023323* X062024Y024031* X061748* X061472Y023756* X061079* Y023362* X060961Y023244* X060764* X060252Y023756* X059701* X059465Y023992* X052732* Y024228* X050370* Y024189* X050567Y023992* Y023874* X050449Y023756* X050291* G37* %LPC*% %LNl1_off_c1*% G75* G36* G01X071400Y027189D02* G02I000000J000191D01* G37* G36* G01X065370Y026039D02* G02I000000J000355D01* G37* G36* G01Y013638D02* G02I000000J000354D01* G37* G36* G01Y019740D02* G02I000000J000354D01* G37* G36* G01Y023874D02* G02I000000J000354D01* G37* G36* G01X064504Y022457D02* Y023244D01* X064858* Y022457* X064504* G37* G36* G01Y024031D02* Y024819D01* X064858* Y024031* X064504* G37* G36* G01Y020882D02* Y021669D01* X064858* Y020882* X064504* G37* G36* G01X062732Y021669D02* Y022457D01* X063087* Y021669* X062732* G37* G36* G01Y020094D02* Y020882D01* X063087* Y020094* X062732* G37* G36* G01Y018520D02* Y019307D01* X063087* Y018520* X062732* G37* G36* G01Y016945D02* Y017732D01* X063087* Y016945* X062732* G37* G36* G01X064504Y019307D02* Y020094D01* X064858* Y019307* X064504* G37* G36* G01Y017732D02* Y018520D01* X064858* Y017732* X064504* G37* G36* G01X064898Y016945D02* Y016157D01* X064465* Y016945* X064898* G37* G36* G01X049504Y023795D02* Y024661D01* X049150* Y023795* X049504* G37* G36* G01Y022220D02* Y023087D01* X049150* Y022220* X049504* G37* G36* G01Y020646D02* Y021512D01* X049150* Y020646* X049504* G37* G36* G01Y019071D02* Y019937D01* X049150* Y019071* X049504* G37* G36* G01Y017496D02* Y018362D01* X049150* Y017496* X049504* G37* G36* G01X057807Y019162D02* X057907Y019262D01* X057987* X058027Y019302* Y019602* X058637* Y019672* X058737Y019772* X058887* X058987Y019672* Y019522* X058887Y019422* X058807* X058777Y019392* Y019092* X058157* Y019022* X058047Y018912* X057907* X057807Y019012* Y019162* G37* G36* G01X056665D02* X056765Y019262D01* X056845* X056885Y019302* Y019602* X057495* Y019672* X057595Y019772* X057745* X057845Y019672* Y019522* X057745Y019422* X057665* X057635Y019392* Y019092* X057015* Y019022* X056905Y018912* X056765* X056665Y019012* Y019162* G37* G36* G01X055524D02* X055624Y019262D01* X055704* X055744Y019302* Y019602* X056354* Y019672* X056454Y019772* X056604* X056704Y019672* Y019522* X056604Y019422* X056524* X056494Y019392* Y019092* X055874* Y019022* X055764Y018912* X055624* X055524Y019012* Y019162* G37* G36* G01X054382D02* X054482Y019262D01* X054562* X054602Y019302* Y019602* X055212* Y019672* X055312Y019772* X055462* X055562Y019672* Y019522* X055462Y019422* X055382* X055352Y019392* Y019092* X054732* Y019022* X054622Y018912* X054482* X054382Y019012* Y019162* G37* G36* G01X053240D02* X053340Y019262D01* X053420* X053460Y019302* Y019602* X054070* Y019672* X054170Y019772* X054320* X054420Y019672* Y019522* X054320Y019422* X054240* X054210Y019392* Y019092* X053590* Y019022* X053480Y018912* X053340* X053240Y019012* Y019162* G37* G36* G01Y021091D02* X053340Y021191D01* X053420* X053460Y021231* Y021531* X054070* Y021601* X054170Y021701* X054320* X054420Y021601* Y021451* X054320Y021351* X054240* X054210Y021321* Y021021* X053590* Y020951* X053480Y020841* X053340* X053240Y020941* Y021091* G37* G36* G01X054382D02* X054482Y021191D01* X054562* X054602Y021231* Y021531* X055212* Y021601* X055312Y021701* X055462* X055562Y021601* Y021451* X055462Y021351* X055382* X055352Y021321* Y021021* X054732* Y020951* X054622Y020841* X054482* X054382Y020941* Y021091* G37* G36* G01X055524D02* X055624Y021191D01* X055704* X055744Y021231* Y021531* X056354* Y021601* X056454Y021701* X056604* X056704Y021601* Y021451* X056604Y021351* X056524* X056494Y021321* Y021021* X055874* Y020951* X055764Y020841* X055624* X055524Y020941* Y021091* G37* G36* G01X056665D02* X056765Y021191D01* X056845* X056885Y021231* Y021531* X057495* Y021601* X057595Y021701* X057745* X057845Y021601* Y021451* X057745Y021351* X057665* X057635Y021321* Y021021* X057015* Y020951* X056905Y020841* X056765* X056665Y020941* Y021091* G37* G36* G01X057807D02* X057907Y021191D01* X057987* X058027Y021231* Y021531* X058637* Y021601* X058737Y021701* X058887* X058987Y021601* Y021451* X058887Y021351* X058807* X058777Y021321* Y021021* X058157* Y020951* X058047Y020841* X057907* X057807Y020941* Y021091* G37* G36* G01Y023020D02* X057907Y023120D01* X057987* X058027Y023160* Y023460* X058637* Y023530* X058737Y023630* X058887* X058987Y023530* Y023380* X058887Y023280* X058807* X058777Y023250* Y022950* X058157* Y022880* X058047Y022770* X057907* X057807Y022870* Y023020* G37* G36* G01X056665D02* X056765Y023120D01* X056845* X056885Y023160* Y023460* X057495* Y023530* X057595Y023630* X057745* X057845Y023530* Y023380* X057745Y023280* X057665* X057635Y023250* Y022950* X057015* Y022880* X056905Y022770* X056765* X056665Y022870* Y023020* G37* G36* G01X055524D02* X055624Y023120D01* X055704* X055744Y023160* Y023460* X056354* Y023530* X056454Y023630* X056604* X056704Y023530* Y023380* X056604Y023280* X056524* X056494Y023250* Y022950* X055874* Y022880* X055764Y022770* X055624* X055524Y022870* Y023020* G37* G36* G01X054382D02* X054482Y023120D01* X054562* X054602Y023160* Y023460* X055212* Y023530* X055312Y023630* X055462* X055562Y023530* Y023380* X055462Y023280* X055382* X055352Y023250* Y022950* X054732* Y022880* X054622Y022770* X054482* X054382Y022870* Y023020* G37* G36* G01X051213Y023994D02* X051313Y024094D01* X051433* X051653Y023874* X051703* X051813Y023764* Y023714* X052033Y023494* Y023374* X051933Y023274* X051813* X051603Y023484* X051553* X051423Y023614* Y023664* X051213Y023874* Y023994* G37* G36* G01X053240Y023020D02* X053340Y023120D01* X053420* X053460Y023160* Y023460* X054070* Y023530* X054170Y023630* X054320* X054420Y023530* Y023380* X054320Y023280* X054240* X054210Y023250* Y022950* X053590* Y022880* X053480Y022770* X053340* X053240Y022870* Y023020* G37* G36* G01X061925Y017162D02* X061715Y017372D01* Y017505* X061802Y017592* X061935* X062155Y017372* X062205* X062315Y017262* Y017212* X062535Y016992* Y016872* X062435Y016772* X062315* X062105Y016982* X062055* X061925Y017112* Y017162* G37* G36* G01X061710Y018490D02* X061810Y018590D01* X061930* X062150Y018370* X062200* X062310Y018260* Y018210* X062530Y017990* Y017870* X062430Y017770* X062310* X062100Y017980* X062050* X061920Y018110* Y018160* X061710Y018370* Y018490* G37* G36* G01X060713Y018494D02* X060813Y018594D01* X060933* X061153Y018374* X061203* X061313Y018264* Y018214* X061533Y017994* Y017874* X061433Y017774* X061313* X061103Y017984* X061053* X060923Y018114* Y018164* X060713Y018374* Y018494* G37* G36* G01X060210Y017990D02* X060310Y018090D01* X060430* X060650Y017870* X060700* X060810Y017760* Y017710* X061030Y017490* Y017370* X060930Y017270* X060810* X060600Y017480* X060550* X060420Y017610* Y017660* X060210Y017870* Y017990* G37* G36* G01X059528Y018613D02* X059669D01* X059690Y018590* X059940* X060023Y018500* Y018371* X059933Y018281* X059691* X059669Y018260* X059514* X059429Y018344* Y018514* X059528Y018613* G37* G36* G01X061713Y019494D02* X061813Y019594D01* X061933* X062153Y019374* X062203* X062313Y019264* Y019214* X062533Y018994* Y018874* X062433Y018774* X062313* X062103Y018984* X062053* X061923Y019114* Y019164* X061713Y019374* Y019494* G37* G36* G01Y020494D02* X061813Y020594D01* X061933* X062153Y020374* X062203* X062313Y020264* Y020214* X062533Y019994* Y019874* X062433Y019774* X062313* X062103Y019984* X062053* X061923Y020114* Y020164* X061713Y020374* Y020494* G37* G36* G01Y021494D02* X061813Y021594D01* X061933* X062153Y021374* X062203* X062313Y021264* Y021214* X062533Y020994* Y020874* X062433Y020774* X062313* X062103Y020984* X062053* X061923Y021114* Y021164* X061713Y021374* Y021494* G37* G36* G01X062251Y022304D02* X062351Y022204D01* X062350Y022170* X062520Y022000* X062521Y021874* X062429Y021783* X062302* X062131Y021954* X062101* X061991Y022064* Y022184* X062111Y022304* X062251* G37* G36* G01X060713Y019494D02* X060813Y019594D01* X060933* X061153Y019374* X061203* X061313Y019264* Y019214* X061533Y018994* Y018874* X061433Y018774* X061313* X061103Y018984* X061053* X060923Y019114* Y019164* X060713Y019374* Y019494* G37* G36* G01Y020494D02* X060813Y020594D01* X060933* X061153Y020374* X061203* X061313Y020264* Y020214* X061533Y019994* Y019874* X061433Y019774* X061313* X061103Y019984* X061053* X060923Y020114* Y020164* X060713Y020374* Y020494* G37* G36* G01Y021494D02* X060813Y021594D01* X060933* X061153Y021374* X061203* X061313Y021264* Y021214* X061533Y020994* Y020874* X061433Y020774* X061313* X061103Y020984* X061053* X060923Y021114* Y021164* X060713Y021374* Y021494* G37* G36* G01Y022494D02* X060813Y022594D01* X060933* X061153Y022374* X061203* X061313Y022264* Y022214* X061533Y021994* Y021874* X061433Y021774* X061313* X061103Y021984* X061053* X060923Y022114* Y022164* X060713Y022374* Y022494* G37* G36* G01X061213Y022994D02* X061313Y023094D01* X061433* X061653Y022874* X061703* X061813Y022764* Y022714* X062033Y022494* Y022374* X061933Y022274* X061813* X061603Y022484* X061553* X061423Y022614* Y022664* X061213Y022874* Y022994* G37* G36* G01X061713Y023494D02* X061813Y023594D01* X061933* X062153Y023374* X062203* X062313Y023264* Y023214* X062533Y022994* Y022874* X062433Y022774* X062313* X062103Y022984* X062053* X061923Y023114* Y023164* X061713Y023374* Y023494* G37* G36* G01X059713Y019494D02* X059813Y019594D01* X059933* X060153Y019374* X060203* X060313Y019264* Y019214* X060533Y018994* Y018874* X060433Y018774* X060313* X060103Y018984* X060053* X059923Y019114* Y019164* X059713Y019374* Y019494* G37* G36* G01Y020494D02* X059813Y020594D01* X059933* X060153Y020374* X060203* X060313Y020264* Y020214* X060533Y019994* Y019874* X060433Y019774* X060313* X060103Y019984* X060053* X059923Y020114* Y020164* X059713Y020374* Y020494* G37* G36* G01Y021494D02* X059813Y021594D01* X059933* X060153Y021374* X060203* X060313Y021264* Y021214* X060533Y020994* Y020874* X060433Y020774* X060313* X060103Y020984* X060053* X059923Y021114* Y021164* X059713Y021374* Y021494* G37* G36* G01Y022494D02* X059813Y022594D01* X059933* X060153Y022374* X060203* X060313Y022264* Y022214* X060533Y021994* Y021874* X060433Y021774* X060313* X060103Y021984* X060053* X059923Y022114* Y022164* X059713Y022374* Y022494* G37* G36* G01Y023494D02* X059813Y023594D01* X059933* X060153Y023374* X060203* X060313Y023264* Y023214* X060533Y022994* Y022874* X060433Y022774* X060313* X060103Y022984* X060053* X059923Y023114* Y023164* X059713Y023374* Y023494* G37* G36* G01X049713Y018494D02* X049813Y018594D01* X049933* X050153Y018374* X050203* X050313Y018264* Y018214* X050533Y017994* Y017874* X050433Y017774* X050313* X050103Y017984* X050053* X049923Y018114* Y018164* X049713Y018374* Y018494* G37* G36* G01X050213Y018994D02* X050313Y019094D01* X050433* X050653Y018874* X050703* X050813Y018764* Y018714* X051033Y018494* Y018374* X050933Y018274* X050813* X050603Y018484* X050553* X050423Y018614* Y018664* X050213Y018874* Y018994* G37* G36* G01X051213D02* X051313Y019094D01* X051433* X051653Y018874* X051703* X051813Y018764* Y018714* X052033Y018494* Y018374* X051933Y018274* X051813* X051603Y018484* X051553* X051423Y018614* Y018664* X051213Y018874* Y018994* G37* G36* G01X051713Y019494D02* X051813Y019594D01* X051933* X052153Y019374* X052203* X052313Y019264* Y019214* X052533Y018994* Y018874* X052433Y018774* X052313* X052103Y018984* X052053* X051923Y019114* Y019164* X051713Y019374* Y019494* G37* G36* G01X050210Y019990D02* X050310Y020090D01* X050430* X050650Y019870* X050700* X050810Y019760* Y019710* X051030Y019490* Y019370* X050930Y019270* X050810* X050600Y019480* X050550* X050420Y019610* Y019660* X050210Y019870* Y019990* G37* G36* G01X051713Y020494D02* X051813Y020594D01* X051933* X052153Y020374* X052203* X052313Y020264* Y020214* X052533Y019994* Y019874* X052433Y019774* X052313* X052103Y019984* X052053* X051923Y020114* Y020164* X051713Y020374* Y020494* G37* G36* G01X050710Y020490D02* X050810Y020590D01* X050930* X051150Y020370* X051200* X051310Y020260* Y020210* X051530Y019990* Y019870* X051430Y019770* X051310* X051100Y019980* X051050* X050920Y020110* Y020160* X050710Y020370* Y020490* G37* G36* G01X051713Y021494D02* X051813Y021594D01* X051933* X052153Y021374* X052203* X052313Y021264* Y021214* X052533Y020994* Y020874* X052433Y020774* X052313* X052103Y020984* X052053* X051923Y021114* Y021164* X051713Y021374* Y021494* G37* G36* G01X050713D02* X050813Y021594D01* X050933* X051153Y021374* X051203* X051313Y021264* Y021214* X051533Y020994* Y020874* X051433Y020774* X051313* X051103Y020984* X051053* X050923Y021114* Y021164* X050713Y021374* Y021494* G37* G36* G01X049713D02* X049813Y021594D01* X049933* X050153Y021374* X050203* X050313Y021264* Y021214* X050533Y020994* Y020874* X050433Y020774* X050313* X050103Y020984* X050053* X049923Y021114* Y021164* X049713Y021374* Y021494* G37* G36* G01X051713Y022494D02* X051813Y022594D01* X051933* X052153Y022374* X052203* X052313Y022264* Y022214* X052533Y021994* Y021874* X052433Y021774* X052313* X052103Y021984* X052053* X051923Y022114* Y022164* X051713Y022374* Y022494* G37* G36* G01X050713D02* X050813Y022594D01* X050933* X051153Y022374* X051203* X051313Y022264* Y022214* X051533Y021994* Y021874* X051433Y021774* X051313* X051103Y021984* X051053* X050923Y022114* Y022164* X050713Y022374* Y022494* G37* G36* G01X049713D02* X049813Y022594D01* X049933* X050153Y022374* X050203* X050313Y022264* Y022214* X050533Y021994* Y021874* X050433Y021774* X050313* X050103Y021984* X050053* X049923Y022114* Y022164* X049713Y022374* Y022494* G37* G36* G01X050710Y023490D02* X050810Y023590D01* X050930* X051150Y023370* X051200* X051310Y023260* Y023210* X051530Y022990* Y022870* X051430Y022770* X051310* X051100Y022980* X051050* X050920Y023110* Y023160* X050710Y023370* Y023490* G37* G36* G01X049710D02* X049810Y023590D01* X049930* X050150Y023370* X050200* X050310Y023260* Y023210* X050530Y022990* Y022870* X050430Y022770* X050310* X050100Y022980* X050050* X049920Y023110* Y023160* X049710Y023370* Y023490* G37* G36* G01X052712Y022755D02* X052571D01* X052543Y022783* X052302* X052217Y022868* Y022997* X052307Y023087* X052550* X052571Y023108* X052726* X052811Y023024* Y022854* X052712Y022755* G37* G36* G01X052368Y023775D02* G02I000000J000160D01* G37* G36* G01X049980Y020070D02* X049880Y020170D01* Y020210* X049710Y020380* Y020500* X049800Y020590* X049930* X050100Y020420* X050130* X050240Y020310* Y020190* X050120Y020070* X049980* G37* G36* G01Y019070D02* X049880Y019170D01* Y019210* X049710Y019380* Y019500* X049800Y019590* X049930* X050100Y019420* X050130* X050240Y019310* Y019190* X050120Y019070* X049980* G37* G36* G01X049868Y017275D02* G02I000000J000160D01* G37* %LPD*% %LNl1_off_d2*% G75* G36* G01X072847Y019661D02* X072417D01* Y017654* X072847* Y019661* G37* G36* G01Y028441D02* X072732D01* Y030528* X072847* Y028441* G37* G36* G01X064780Y028047D02* Y031952D01* X072654* Y029504* X066906* Y028244* X065961* Y028047* X064780* G37* G36* G01X072705Y011260D02* G03X072740Y011225I000017J-000018D01* G01X072847Y011332* Y011402* X072705Y011260* G37* G36* G01X072847Y013312D02* X072652Y013118D01* G03X072688Y013082I000018J-000018* G01X072847Y013242* Y013312* G37* G36* G01X072742Y012443D02* G03X072778Y012408I000018J-000018D01* G01X072847Y012477* Y012548* X072742Y012443* G37* G36* G01X072260Y012688D02* G02Y012738I000000J000025D01* G01Y012688* G37* G36* G01X072830Y014820D02* G02X072847Y014819I000000J-000100D01* G01Y014621* G02X072830Y014620I-000017J000099* G01Y014820* G37* G36* G01X071800Y014620D02* G02Y014820I000000J000100D01* G01Y014620* G37* G36* G01X072847Y014819D02* G03X072792Y014758I-000017J-000099D01* G01X072847Y014812* Y014819* G37* G36* G01X072644Y014075D02* G02Y014125I000000J000025D01* G01Y014075* G37* G36* G01X070700Y010205D02* G03X070650I-000025J000000D01* G01X070700* G37* G36* G01X070444D02* G03X070394I-000025J000000D01* G01X070444* G37* G36* G01X072492D02* G03X072442I-000025J000000D01* G01X072492* G37* G36* G01X072847Y029728D02* X072840Y029700D01* X072847* Y029728* G37* G36* G01X072840Y029350D02* X072847Y029322D01* Y029350* X072840* G37* G36* G01X072847Y030078D02* X072840Y030050D01* X072847* Y030078* G37* G36* G01X072840Y029700D02* X072847Y029672D01* Y029700* X072840* G37* G36* G01X072847Y030428D02* X072840Y030400D01* X072847* Y030428* G37* G36* G01X072840Y030050D02* X072847Y030022D01* Y030050* X072840* G37* G36* G01X071247Y010205D02* G03X071127I-000060J000000D01* G01X071247* G37* G36* G01X072847Y019740D02* X072339D01* Y017811* X070291* Y018559* X069150* Y023047* X072847* Y019740* G37* G36* G01X066039Y020291D02* Y023047D01* X069071* Y020291* X066039* G37* G36* G01X069071Y025409D02* X066039D01* Y028165* X069071* Y025409* G37* G36* G01X054845Y031660D02* G03X054895I000025J000000D01* G01X054845* G37* G36* G01X057805Y031920D02* G03X057855I000025J000000D01* G01X057805* G37* G36* G01X057552Y031678D02* G03X057588Y031642I000018J-000018D01* G01X057848Y031902* G03X057812Y031938I-000018J000018* G01X057552Y031678* G37* G36* G01X057905Y031870D02* G03X057955I000025J000000D01* G01X057905* G37* G36* G01X056853Y031952D02* X056887D01* X056853* G37* G36* G01X053677Y028783D02* G03X053683Y028777I000003J-000003D01* G01X056858Y031952* X056846* X053677Y028783* G37* G36* G01X057652Y031478D02* G03X057688Y031442I000018J-000018D01* G01X058197Y031952* X058127* X057652Y031478* G37* G36* G01X057738Y031942D02* X057744Y031952D01* X057677* X057502Y031778* G03X057538Y031742I000018J-000018* G01X057738Y031942* G37* G36* G01X057696Y031952D02* X057744D01* X057696* G37* G36* G01X053245Y031330D02* G03X053295I000025J000000D01* G01X053245* G37* G36* G01X054945Y031580D02* G03X054995I000025J000000D01* G01X054945* G37* G36* G01X050985Y031770D02* G03X051035I000025J000000D01* G01X050985* G37* G36* G01X048070Y010140D02* X040270Y017940D01* X048070Y010140* G37* G36* G01X058865Y013531D02* G03X058871Y013525I000003J-000003D01* G01X055483Y010137* G03X055477Y010143I-000003J000003* G01X058865Y013531* G37* G36* G01X051125Y031700D02* G03X051175I000025J000000D01* G01X051125* G37* G36* G01X051325Y031530D02* G03X051375I000025J000000D01* G01X051325* G37* G36* G01X051225Y031640D02* G03X051275I000025J000000D01* G01X051225* G37* G36* G01X051425Y031370D02* G03X051475I000025J000000D01* G01X051425* G37* G36* G01X051635Y031160D02* G03X051685I000025J000000D01* G01X051635* G37* G36* G01X051535Y031260D02* G03X051585I000025J000000D01* G01X051535* G37* G36* G01X052815Y031620D02* G03X052865I000025J000000D01* G01X052815* G37* G36* G01X052944Y031589D02* G03X052994I000025J000000D01* G01X052944* G37* G36* G01X053345Y031280D02* G03X053395I000025J000000D01* G01X053345* G37* G36* G01X053045Y031520D02* G03X053095I000025J000000D01* G01X053045* G37* G36* G01X053145Y031430D02* G03X053195I000025J000000D01* G01X053145* G37* G36* G01X056225Y031950D02* G03X056275I000025J000000D01* G01X056225* G37* G36* G01X053560Y029260D02* X056250Y031950D01* X056275Y031952* X056225* G03X056250Y031950I000025J-000002* G01X053560Y029260* G37* G36* G01X055395Y031430D02* G03X055445I000025J000000D01* G01X055395* G37* G36* G01X053618Y029022D02* G03X053622Y029018I000002J-000002D01* G01X056556Y031952* X056548* X053618Y029022* G37* G36* G01X053510Y029360D02* X056102Y031952D01* X053510Y029360* G37* G36* G01X055075Y031560D02* G03X055125I000025J000000D01* G01X055075* G37* G36* G01X056325Y031900D02* G03X056375I000025J000000D01* G01X056325* G37* G36* G01X053658Y028912D02* G03X053662Y028908I000002J-000002D01* G01X056707Y031952* X056697* X053658Y028912* G37* G36* G01X055295Y031480D02* G03X055345I000025J000000D01* G01X055295* G37* G36* G01X055195Y031530D02* G03X055245I000025J000000D01* G01X055195* G37* G36* G01X058425Y031940D02* G03X058475I000025J000000D01* G01X058425* G37* G36* G01X057787Y031243D02* G03X057753Y031277I-000017J000017D01* G01X058428Y031952* G03X058467Y031923I000022J-000012* G01X057787Y031243* G37* G36* G01X059062Y031778D02* G03X059098Y031742I000018J-000018D01* G01X059307Y031952* X059237* X059062Y031778* G37* G36* G01X058535Y031900D02* G03X058585I000025J000000D01* G01X058535* G37* G36* G01X059375Y031930D02* G03X059425I000025J000000D01* G01X059375* G37* G36* G01X059112Y031678D02* G03X059148Y031642I000018J-000018D01* G01X059418Y031912* G03X059412Y031952I-000018J000018* G01X059388* G03X059382Y031948I000012J-000022* G01X059112Y031678* G37* G36* G01X057702Y031378D02* G03X057738Y031342I000018J-000018D01* G01X058347Y031952* X058277* X057702Y031378* G37* G36* G01X059475Y031880D02* G03X059525I000025J000000D01* G01X059475* G37* G36* G01X059338Y031252D02* G03X059322Y031268I-000008J000008D01* G01X060006Y031952* X060038* X059338Y031252* G37* G36* G01X059290Y031350D02* G03X059270Y031370I-000010J000010D01* G01X059853Y031952* X059891* X059290Y031350* G37* G36* G01X059377Y031163D02* G03X059383Y031157I000003J-000003D01* G01X060178Y031952* X060166* X059377Y031163* G37* G36* G01X059427Y031063D02* G03X059433Y031057I000003J-000003D01* G01X060328Y031952* X060316* X059427Y031063* G37* G36* G01X059527Y030863D02* G03X059533Y030857I000003J-000003D01* G01X060628Y031952* X060616* X059527Y030863* G37* G36* G01X059627Y030663D02* G03X059633Y030657I000003J-000003D01* G01X060928Y031952* X060916* X059627Y030663* G37* G36* G01X059577Y030763D02* G03X059583Y030757I000003J-000003D01* G01X060778Y031952* X060766* X059577Y030763* G37* G36* G01X057368Y028248D02* X061071Y031952D01* X061073* X057368Y028248* G37* G36* G01X057641Y028369D02* G03X057639Y028371I-000001J000001D01* G01X061219Y031952* X061225* X057641Y028369* G37* G36* G01X062137Y031952D02* X062120Y031945D01* Y031952* X062137* G37* G36* G01X061390Y031945D02* X061373Y031952D01* X061390* Y031945* G37* G36* G01X058023Y028597D02* G03X058017Y028603I-000003J000003D01* G01X061365Y031952* X061373* X061407* X061379* X058023Y028597* G37* G36* G01X062182Y031858D02* G03X062158Y031882I-000012J000012D01* G01X062228Y031952* X062276* X062182Y031858* G37* G36* G01X059241Y031449D02* G03X059219Y031471I-000011J000011D01* G01X059699Y031952* X059745* X059241Y031449* G37* G36* G01X059477Y030963D02* G03X059483Y030957I000003J-000003D01* G01X060478Y031952* X060466* X059477Y030963* G37* G36* G01X062533Y031167D02* G03X062527Y031173I-000003J000003D01* G01X063306Y031952* X063318* X062533Y031167* G37* G36* G01X062425Y031365D02* G03X062415Y031375I-000005J000005D01* G01X062992Y031952* X063012* X062425Y031365* G37* G36* G01X062376Y031464D02* G03X062364Y031476I-000006J000006D01* G01X062840Y031952* X062864* X062376Y031464* G37* G36* G01X062474Y031266D02* G03X062466Y031274I-000004J000004D01* G01X063144Y031952* X063160* X062474Y031266* G37* G36* G01X062327Y031563D02* G03X062313Y031577I-000007J000007D01* G01X062687Y031952* X062717* X062327Y031563* G37* G36* G01X062279Y031661D02* G03X062261Y031679I-000009J000009D01* G01X062535Y031952* X062570* X062279Y031661* G37* G36* G01X062230Y031760D02* G03X062210Y031780I-000010J000010D01* G01X062381Y031952* X062423* X062230Y031760* G37* G36* G01X058844Y031952D02* X058904D01* X058844* G37* G36* G01X057269D02* X057329D01* X057269* G37* G36* G01X055694D02* X055755D01* X055694* G37* G36* G01X054483Y031670D02* G03X054603I000060J000000D01* G01X054483* G37* G36* G01X052515D02* G03X052635I000060J000000D01* G01X052515* G37* G36* G01X049986Y031952D02* X050046D01* X049986* G37* G36* G01X050576D02* X050637D01* X050576* G37* G36* G01X049365Y031740D02* G03X049485I000060J000000D01* G01X049365* G37* G36* G01X038209Y016551D02* X039530Y015230D01* X038209Y016551* G37* G36* G01Y016576D02* G02Y016526I000000J-000025D01* G01Y016576* G37* G36* G01X038304Y016792D02* G03X038219Y016708I-000043J-000042D01* G01X038418Y016509* G03X038502Y016594I000042J000042* G01X038304Y016792* G37* G36* G01X038261Y016810D02* G02Y016690I000000J-000060D01* G01Y016810* G37* G36* G01X038697Y015036D02* G02Y014916I000000J-000060D01* G01Y015036* G37* G36* G01X038343Y031670D02* G02Y031550I000000J-000060D01* G01Y031670* G37* G36* G01X038340Y016015D02* G02Y015965I000000J-000025D01* G01Y016015* G37* G36* G01X038370Y015585D02* G02Y015535I000000J-000025D01* G01Y015585* G37* G36* G01X038343Y031242D02* G02Y031192I000000J-000025D01* G01Y031242* G37* G36* G01X065476Y010112D02* X065379Y010133D01* X065281Y010118* X065264Y010112* X065476* G37* G36* G01X072847Y018325D02* X072800Y018240D01* X072832Y018148* X072847Y018135* Y018325* G37* G36* G01Y011536D02* X072821Y011442D01* X072847Y011384* Y011536* G37* G36* G01X038193Y016240D02* Y016320D01* Y016240* G37* G36* G01Y015720D02* Y015800D01* Y015720* G37* G36* G01Y015275D02* X038219Y015368D01* X038193Y015425* Y015275* G37* G36* G01X038283Y020213D02* G02Y020133I000000J-000040D01* G01Y020213* G37* D18* G01X070900Y028550D03* X069350D03* X070900Y026500D03* Y028109D03* X069350Y026900D03* Y026500D03* X070900Y026900D03* X070500Y026500D03* X070900Y027309D03* X070500Y028550D03* Y027709D03* Y028109D03* X069350Y027700D03* Y028100D03* Y027300D03* X070500Y027309D03* X070900Y027709D03* X070500Y026900D03* X071400Y027380D03* X067180Y028990D03* X070900Y020400D03* Y021200D03* Y020000D03* Y022400D03* Y021600D03* X069350Y022800D03* Y022400D03* X070900Y022800D03* Y020800D03* X070500Y022800D03* X070900Y022000D03* X070500Y022400D03* Y022000D03* Y021200D03* Y021600D03* X069350Y022000D03* Y021600D03* Y020800D03* Y021200D03* Y020000D03* Y020400D03* X070500Y020000D03* Y020400D03* Y020800D03* X070900Y024500D03* Y025300D03* X070500Y024500D03* X069350Y025700D03* Y026100D03* X070500D03* Y025300D03* Y025700D03* X070900Y024900D03* X069350Y025300D03* X070900Y026100D03* X069350Y024900D03* Y024500D03* X070900Y025700D03* X070500Y024900D03* X064677Y022248D03* Y023453D03* Y021878D03* Y023823D03* Y020303D03* Y020673D03* X068070Y023820D03* X067340Y024090D03* X064677Y019886D03* Y022666D03* Y023035D03* Y024610D03* Y024240D03* Y021091D03* Y021460D03* X069350Y018800D03* X070500D03* X070900Y019200D03* Y018800D03* X070500Y019200D03* Y019600D03* X070900D03* X069350D03* Y019200D03* X064677Y018729D03* Y019098D03* Y017154D03* Y017523D03* X071320Y016810D03* X071760Y017630D03* X069310Y018300D03* X067320Y018660D03* X070610Y014370D03* X071130Y015030D03* Y015710D03* X069500Y014700D03* X068490Y014600D03* Y014890D03* X067340Y018970D03* X070800Y015710D03* X069530D03* X068640Y018300D03* X072610Y015600D03* Y015140D03* X064677Y017941D03* Y018311D03* Y016736D03* Y016366D03* Y019516D03* X069500Y014030D03* X072670Y013100D03* X071810Y013170D03* X071330Y014030D03* X068490Y014310D03* Y014020D03* X068800D03* X072350Y013100D03* X069840Y014030D03* X072035Y011169D03* X072530Y012420D03* X070910Y012350D03* X070810Y013180D03* X071247Y011169D03* X064400Y013380D03* Y013000D03* X062914Y019516D03* Y016736D03* Y021460D03* Y021091D03* Y018311D03* Y016366D03* Y022666D03* Y019886D03* Y023035D03* Y017941D03* X062643Y014937D03* X062914Y018729D03* Y019098D03* Y023453D03* Y023823D03* Y022248D03* Y021878D03* X062840Y013030D03* X062914Y017154D03* Y017523D03* Y020673D03* Y020303D03* X062790Y013990D03* X062690Y025435D03* X062910Y027430D03* X062122Y017182D03* X062116Y023690D03* X062120Y016680D03* Y017680D03* X062116Y020690D03* Y019690D03* Y021690D03* Y018690D03* Y022690D03* X061895Y012980D03* X062557Y024621D03* X062182Y022124D03* X062116Y018180D03* X061620Y024680D03* X062116Y023180D03* Y021180D03* X061870Y027200D03* X062116Y020180D03* X061620Y025680D03* X062564Y014242D03* X061616Y022680D03* X062116Y019180D03* X062113Y024687D03* X061616Y026690D03* Y026190D03* X061113Y023183D03* X061120Y017680D03* X061116Y022690D03* Y020690D03* Y019690D03* Y018690D03* Y021690D03* X061107Y012980D03* X061116Y020180D03* Y021180D03* Y018180D03* Y014680D03* Y019180D03* Y022180D03* X061123Y016180D03* X061120Y016680D03* X061123Y024683D03* X061116Y026190D03* X060620Y023180D03* X060616Y023680D03* Y017680D03* X060320Y012980D03* X060620Y026180D03* Y024680D03* Y016680D03* Y015680D03* X060616Y016190D03* X060613Y024183D03* Y025187D03* X060116Y021690D03* X060130Y017670D03* X060120Y018680D03* X060116Y019690D03* X060123Y018187D03* X060116Y020690D03* Y022690D03* X059603Y018437D03* X060116Y021180D03* Y020180D03* X059616Y014680D03* X060116Y017180D03* Y023180D03* X059690Y013030D03* X059620Y026680D03* X060116Y022180D03* Y019180D03* X059620Y025180D03* X060116Y015680D03* X060120Y016180D03* X060160Y027260D03* X060100Y016710D03* X059613Y016683D03* X059630Y015680D03* X059623Y015187D03* X059613Y024183D03* X060113Y024687D03* X058813Y022269D03* Y020340D03* Y018411D03* Y023450D03* Y019592D03* X059116Y016680D03* X058813Y021521D03* X058866Y024170D03* X059113Y017183D03* X059150Y016150D03* X059123Y015687D03* X059370Y014160D03* X057983Y021767D03* Y019838D03* Y017909D03* X058370Y027200D03* X057983Y022948D03* Y019090D03* X058620Y025680D03* X058370Y014160D03* X057983Y021019D03* X058616Y015680D03* X058123Y016687D03* X056842Y017909D03* Y021767D03* X057672Y022269D03* Y020340D03* X056842Y019838D03* X057672Y018411D03* X057620Y026180D03* X056770Y013160D03* X056842Y021019D03* X057672Y021521D03* X057616Y015180D03* X057620Y024680D03* X057672Y019592D03* X056842Y019090D03* X056870Y027200D03* X056842Y022948D03* X057672Y023450D03* X057616Y016680D03* X055700Y019830D03* X056530Y020340D03* X055700Y017909D03* X056530Y018411D03* Y022269D03* X055700Y021767D03* Y022948D03* X056530Y023450D03* X056616Y014680D03* X055620Y015180D03* X056620Y025180D03* X056530Y021521D03* X055700Y021019D03* X056120Y026180D03* X055700Y019090D03* X056530Y019592D03* X056616Y016180D03* X055866Y024170D03* X055620Y016680D03* X056370Y014030D03* X055388Y020340D03* Y018411D03* Y022269D03* X055116Y025180D03* X054801Y028210D03* X055388Y021521D03* Y023450D03* Y019592D03* X055116Y026680D03* X054870Y014160D03* X054247Y020340D03* Y022269D03* X054558Y019838D03* X054247Y018411D03* X054558Y017909D03* Y021767D03* X054116Y026180D03* X054558Y021019D03* X054247Y019592D03* X054116Y024680D03* X054558Y022948D03* Y019090D03* X054370Y017200D03* X054247Y023450D03* X054620Y015680D03* X054543Y031670D03* X054247Y021521D03* X054630Y026170D03* X053417Y019838D03* Y021767D03* Y017909D03* X053116Y025680D03* X053417Y019090D03* X053620Y014680D03* X053417Y022948D03* Y021019D03* X052870Y017200D03* X053450Y027240D03* X053620Y016180D03* X053760Y017650D03* X052116Y022690D03* Y023690D03* Y021690D03* Y020690D03* Y019690D03* Y018690D03* X052633Y022933D03* X052116Y022180D03* Y019180D03* X052570Y031670D03* X052120Y016180D03* X052116Y026190D03* X052616Y024680D03* X052620Y015180D03* X051950Y027240D03* X052116Y021180D03* X052120Y017680D03* X052116Y020180D03* X052603Y017673D03* X052123Y017183D03* X051116Y022690D03* Y019690D03* Y021690D03* X051613Y017683D03* X051116Y018690D03* Y020690D03* Y023690D03* X051616Y025680D03* X051116Y024680D03* X051120Y017680D03* Y016680D03* X051116Y022180D03* Y020180D03* Y021180D03* Y023180D03* X051616Y023680D03* X051870Y014100D03* X051120Y015180D03* X051616Y018680D03* X051310Y014100D03* X051620Y016180D03* X051133Y015697D03* Y016197D03* X050613Y017683D03* X050880Y013190D03* X050616Y026680D03* Y018680D03* Y019680D03* X050630Y017170D03* X050640Y016670D03* X050750Y014120D03* X050620Y014720D03* X050110Y023690D03* X050116Y017690D03* Y019690D03* Y020690D03* Y018690D03* Y022690D03* Y021690D03* Y022180D03* Y025680D03* Y018180D03* Y023180D03* X050054Y019246D03* X049786Y027240D03* X050054Y020246D03* X050116Y021180D03* X050120Y015680D03* X050116Y024180D03* X050070Y014730D03* X050130Y016670D03* X049323Y016957D03* Y025201D03* Y018532D03* Y021681D03* Y022051D03* Y020107D03* Y023626D03* Y018901D03* Y023256D03* Y017327D03* Y020476D03* Y024831D03* Y018114D03* Y017744D03* Y022838D03* Y022469D03* Y019319D03* Y019689D03* Y024044D03* Y024413D03* Y016539D03* Y016170D03* Y020894D03* Y021264D03* X049430Y031740D03* X048070Y015950D03* X047559Y017327D03* Y019689D03* Y021264D03* Y022469D03* Y017744D03* Y018114D03* Y024044D03* Y024413D03* Y020894D03* Y022838D03* Y019319D03* Y016957D03* Y022051D03* Y021681D03* Y020476D03* Y020107D03* Y024831D03* Y025201D03* Y023626D03* Y023256D03* X047550Y015270D03* X047559Y018901D03* Y018532D03* X047520Y015860D03* X047030Y023440D03* X046940Y018520D03* X047030Y023030D03* X046370Y016945D03* X046110Y024750D03* X046340Y016140D03* X046110Y026720D03* X044470Y023760D03* X043800Y018820D03* X044470Y023130D03* X044680Y019680D03* X045110Y019190D03* X044120Y020190D03* X044700Y018740D03* X044110Y024840D03* X043520D03* X042800Y014820D03* X041190Y024690D03* Y021050D03* X041230Y019920D03* X041200Y020500D03* Y023740D03* X039830Y030690D03* X039890Y027110D03* X039870Y027430D03* X039850Y030330D03* X039910Y015120D03* X039940Y014730D03* X039380Y028060D03* X039770Y028050D03* X038820Y015350D03* X039010Y026490D03* X038840Y016220D03* X039070Y028850D03* X038850Y020250D03* X038370Y017140D03* X039010Y028060D03* X039040Y029640D03* X039130Y016210D03* X039120Y015350D03* X039140Y020250D03* X038340Y015990D03* X038370Y015560D03* X039040Y030430D03* D16* X060570Y027130D03* X060550Y025610D03* X059660Y025730D03* X060020Y025100D03* X060070Y025730D03* X059210Y024610D03* X058660Y025140D03* X059040Y025630D03* X058070Y016140D03* X058040Y024620D03* X058210Y024790D03* X058540Y024590D03* X057370Y014090D03* X057570Y015730D03* X056670Y017150D03* X057590Y016210D03* X057020Y016270D03* X056730Y024570D03* X057610Y025170D03* X057160Y025680D03* X057640Y025660D03* X056730Y024790D03* X056000Y013340D03* X056013Y015790D03* X055670Y016260D03* X056580Y015610D03* X056190Y016090D03* X056170Y016740D03* X055560Y025610D03* X055680Y025130D03* X056210Y024610D03* X055540Y026110D03* X055790Y025610D03* X055580Y026710D03* X056560Y025620D03* X055170Y015740D03* X055120Y016670D03* X055070Y016240D03* X055170Y024210D03* X055070Y024750D03* X054070Y016740D03* X054180Y015740D03* X054630Y016710D03* X054660Y014730D03* X054120Y025170D03* X054630Y024700D03* X054110Y025670D03* X054570Y025110D03* X054180Y016240D03* X054550Y015170D03* X053540Y016770D03* X053190Y016620D03* X053060Y015750D03* X053050Y016240D03* X053160Y015210D03* X052910Y024140D03* X053210Y024150D03* X053760Y024210D03* X053070Y025220D03* X053060Y026250D03* X053570Y025740D03* X053610Y015760D03* X053560Y015250D03* X052550Y025240D03* X052110Y025550D03* X052190Y024630D03* X051190Y025660D03* X051610Y024700D03* X051690Y025110D03* X050620Y015680D03* X050650Y016190D03* X051060Y028150D03* X050880Y027200D03* X050680Y024620D03* X050560Y025110D03* X050210Y024630D03* X050163Y025140D03* X049610Y025440D03* X049700Y026610D03* X045590Y023980D03* X044990D03* X039320Y010660D03* X038340Y010990D03* Y014080D03* X039010Y010490D03* Y014120D03* X038690Y011170D03* X038680Y014100D03* D20* X044307Y010843D03* D19* X065370Y024228D03* Y020094D03* Y013992D03* Y026394D03* X064386Y031512D03* X069937Y012890D03* Y017024D03* D17* X062368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X061868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X061368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X060868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X060368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X059868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X059368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X058868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X058368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X057868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X057368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X056868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X056368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X055868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X055368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X054868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X054368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X053868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X053368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X052868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X052368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X051868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X051368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X050868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X050368Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X049868Y026935D03* Y026435D03* Y025935D03* Y025435D03* Y024935D03* Y024435D03* Y023935D03* Y023435D03* Y022935D03* Y022435D03* Y021935D03* Y021435D03* Y020935D03* Y020435D03* Y019935D03* Y019435D03* Y018935D03* Y018435D03* Y017935D03* Y017435D03* Y016935D03* Y016435D03* Y015935D03* Y015435D03* Y014935D03* Y014435D03* X038283Y019583D02* D12* Y020173D01* D34* X072553Y012713D03* D50* X072315Y014720D03* D33* X072746Y014100D03* D40* X070675Y010158D03* X070419D03* X072467D03* D62* X072843Y029525D03* Y029875D03* Y030225D03* D41* X071187Y010158D03* D55* X054870Y031806D03* D28* X057830Y031936D03* D39* X057930Y031911D03* D77* X053270Y031641D03* D65* X054970Y031766D03* D49* X051010Y031861D03* D53* X051150Y031826D03* D72* X051350Y031741D03* D57* X051250Y031796D03* D76* X051450Y031661D03* D82* X051660Y031556D03* D81* X051560Y031606D03* D61* X052840Y031786D03* D64* X052969Y031770D03* D80* X053370Y031616D03* D73* X053070Y031736D03* D75* X053170Y031691D03* D24* X056250Y031951D03* D75* X055420Y031691D03* D66* X055100Y031756D03* D35* X056350Y031926D03* D74* X055320Y031716D03* D72* X055220Y031741D03* D26* X058450Y031946D03* D35* X058560Y031926D03* D27* X059400Y031941D03* D37* X059500Y031916D03* D25* X061755Y031949D03* D54* X054543Y031811D03* X052575D03* D51* X049425Y031846D03* D29* X038201Y016551D03* D44* X038227Y016750D03* D46* X038445Y014976D03* D45* X038268Y031610D03* D30* X038267Y015990D03* D32* X038282Y015560D03* D31* X038268Y031217D03* D58* X072818Y014386D03* Y013598D03* D83* X072820Y018323D03* D43* X050606Y031898D03* X049425D03* X050016D03* X057299D03* X058874D03* X054543D03* X052575D03* X055724D03* D42* X045961Y010163D03* D36* X038498Y031918D03* D38* X038238Y020173D03* X048953Y010488D02* D13* X049740D01* X048953Y011276D02* Y010488D01* X063283Y027969D02* X062496D01* X063283Y027181D02* Y027969D01* D22* X071630Y018323D03* D21* X065370Y022260D03* Y018126D03* Y015961D03* Y011827D03* Y028362D03* X066354Y031512D03* X067969Y012890D03* Y017024D03* X068970Y013850D02* D10* X068800Y014020D01* X068970Y011620D02* Y013850D01* X067910Y010560D02* X068970Y011620D01* X063360Y010560D02* X067910D01* X061550Y012370D02* X063360Y010560D01* X061550Y016117D02* Y012370D01* X061868Y016435D02* X061550Y016117D01* X068870Y013640D02* X068490Y014020D01* X068870Y011680D02* Y013640D01* X067850Y010660D02* X068870Y011680D01* X063410Y010660D02* X067850D01* X061680Y012390D02* X063410Y010660D01* X061680Y015747D02* Y012390D01* X061868Y015935D02* X061680Y015747D01* X068080Y014480D02* X068490Y014890D01* X068080Y013820D02* Y014480D01* X068550Y013350D02* X068080Y013820D01* X068550Y011900D02* Y013350D01* X067610Y010960D02* X068550Y011900D01* X063590Y010960D02* X067610D01* X062290Y012260D02* X063590Y010960D01* X062290Y014080D02* Y012260D01* X062170Y014200D02* X062290Y014080D01* X062170Y015133D02* Y014200D01* X061868Y015435D02* X062170Y015133D01* X068180Y014290D02* X068490Y014600D01* X068180Y013880D02* Y014290D01* X068660Y013400D02* X068180Y013880D01* X068660Y011840D02* Y013400D01* X067680Y010860D02* X068660Y011840D01* X063530Y010860D02* X067680D01* X062190Y012200D02* X063530Y010860D01* X062190Y014000D02* Y012200D01* X062050Y014140D02* X062190Y014000D01* X062050Y014753D02* Y014140D01* X061868Y014935D02* X062050Y014753D01* X068290Y014110D02* X068490Y014310D01* X068290Y013920D02* Y014110D01* X068770Y013440D02* X068290Y013920D01* X068770Y011780D02* Y013440D01* X067750Y010760D02* X068770Y011780D01* X063470Y010760D02* X067750D01* X062090Y012140D02* X063470Y010760D01* X062090Y013910D02* Y012140D01* X061868Y014132D02* X062090Y013910D01* X061868Y014435D02* Y014132D01* X072722Y010205D02* Y011242D01* X071380Y011380D02* X070090D01* X071650Y011110D02* X071380Y011380D01* X071650Y010865D02* Y011110D01* X071955Y010560D02* X071650Y010865D01* X071955Y010205D02* Y010560D01* X070770Y010760D02* X070130D01* X070931Y010599D02* X070770Y010760D01* X070931Y010205D02* Y010599D01* X071380Y010900D02* X070120D01* X071699Y010581D02* X071380Y010900D01* X071699Y010205D02* Y010581D01* X071450Y011530D02* X070100D01* X071800Y011180D02* X071450Y011530D01* X071800Y010970D02* Y011180D01* X072211Y010559D02* X071800Y010970D01* X072211Y010205D02* Y010559D01* X067530Y018660D02* X067320D01* X067770Y018900D02* X067530Y018660D01* X067770Y020120D02* Y018900D01* X066748Y021142D02* X067770Y020120D01* X069209Y013739D02* X069500Y014030D01* X069209Y013598D02* Y013739D01* X068070Y024938D02* Y023820D01* X066748Y026260D02* X068070Y024938D01* X072760Y012032D02* Y012425D01* X072260Y011531D02* X072760Y012032D01* X071806Y013166D02* X071810Y013170D01* X072260Y012713D02* X071806Y013166D01* X070606Y014370D02* X070610D01* X070606Y014642D02* Y014370D01* X072644Y014100D02* X072358Y014386D01* X071768* X071412Y014030D02* X071330D01* X071768Y014386D02* X071412Y014030D01* X053190Y029980D02* X054870Y031660D01* X044420Y029980D02* X053190D01* X042190Y027750D02* X044420Y029980D01* X042190Y021530D02* Y027750D01* X045300Y018420D02* X042190Y021530D01* X045300Y015550D02* Y018420D01* X048430Y012420D02* X045300Y015550D01* X053450Y012420D02* X048430D01* X054620Y013590D02* X053450Y012420D01* X054620Y014530D02* Y013590D01* X054500Y014650D02* X054620Y014530D01* X054083Y014650D02* X054500D01* X053868Y014435D02* X054083Y014650D01* X056880Y031660D02* X057570D01* X053770Y028550D02* X056880Y031660D01* X053130Y028550D02* X053770D01* X052980Y028400D02* X053130Y028550D01* X051530Y028400D02* X052980D01* X050190Y027060D02* X051530Y028400D01* X050190Y026613D02* Y027060D01* X050368Y026435D02* X050190Y026613D01* X057620Y031560D02* X057930Y031870D01* X056930Y031560D02* X057620D01* X053820Y028450D02* X056930Y031560D01* X053180Y028450D02* X053820D01* X053030Y028300D02* X053180Y028450D01* X051870Y028300D02* X053030D01* X051080Y027510D02* X051870Y028300D01* X051080Y026147D02* Y027510D01* X050868Y025935D02* X051080Y026147D01* X051450Y028780D02* X053680D01* X050070Y027400D02* X051450Y028780D01* X050070Y026233D02* Y027400D01* X050368Y025935D02* X050070Y026233D01* X056980Y031460D02* X057670D01* X053870Y028350D02* X056980Y031460D01* X053260Y028350D02* X053870D01* X053110Y028200D02* X053260Y028350D01* X052030Y028200D02* X053110D01* X051190Y027360D02* X052030Y028200D01* X051190Y026613D02* Y027360D01* X051368Y026435D02* X051190Y026613D01* Y025613D02* Y025660D01* X051368Y025435D02* X051190Y025613D01* X051570Y028660D02* X051060Y028150D01* X053720Y028660D02* X051570D01* X056820Y031760D02* X053720Y028660D01* X057520Y031760D02* X056820D01* X052120Y030180D02* X053270Y031330D01* X044320Y030180D02* X052120D01* X041980Y027840D02* X044320Y030180D01* X041980Y018530D02* Y027840D01* X048290Y012220D02* X041980Y018530D01* X053890Y012220D02* X048290D01* X055570Y013900D02* X053890Y012220D01* X055570Y014540D02* Y013900D01* X055470Y014640D02* X055570Y014540D01* X055180Y014640D02* X055470D01* X055050Y014770D02* X055180Y014640D01* X055050Y015253D02* Y014770D01* X054868Y015435D02* X055050Y015253D01* X053270Y029880D02* X054970Y031580D01* X044470Y029880D02* X053270D01* X042300Y027710D02* X044470Y029880D01* X042300Y021570D02* Y027710D01* X045400Y018470D02* X042300Y021570D01* X045400Y015600D02* Y018470D01* X048480Y012520D02* X045400Y015600D01* X053268Y012520D02* X048480D01* X054368Y013620D02* X053268Y012520D01* X054368Y014435D02* Y013620D01* X050540Y031300D02* X051010Y031770D01* X043540Y031300D02* X050540D01* X040270Y028030D02* X043540Y031300D01* X040270Y017940D02* Y028030D01* X055480Y010140D02* X048070D01* X058868Y014435D02* Y013528D01* X050650Y031200D02* X051150Y031700D01* X043610Y031200D02* X050650D01* X040370Y027960D02* X043610Y031200D01* X040370Y018010D02* Y027960D01* X048140Y010240D02* X040370Y018010D01* X055420Y010240D02* X048140D01* X058630Y013450D02* X055420Y010240D01* X058630Y014673D02* Y013450D01* X058368Y014935D02* X058630Y014673D01* X050820Y031000D02* X051350Y031530D01* X043750Y031000D02* X050820D01* X040570Y027820D02* X043750Y031000D01* X040570Y018180D02* Y027820D01* X047340Y011410D02* X040570Y018180D01* X056220Y011410D02* X047340D01* X057640Y012830D02* X056220Y011410D01* X057640Y014560D02* Y012830D01* X057750Y014670D02* X057640Y014560D01* X057980Y014670D02* X057750D01* X058130Y014820D02* X057980Y014670D01* X058130Y015173D02* Y014820D01* X057868Y015435D02* X058130Y015173D01* X050710Y031100D02* X051250Y031640D01* X043660Y031100D02* X050710D01* X040470Y027910D02* X043660Y031100D01* X040470Y018070D02* Y027910D01* X048200Y010340D02* X040470Y018070D01* X055370Y010340D02* X048200D01* X057868Y012838D02* X055370Y010340D01* X057868Y014435D02* Y012838D01* X050980Y030900D02* X051450Y031370D01* X043820Y030900D02* X050980D01* X040690Y027770D02* X043820Y030900D01* X040690Y018290D02* Y027770D01* X047470Y011510D02* X040690Y018290D01* X056100Y011510D02* X047470D01* X057190Y012600D02* X056100Y011510D01* X057190Y014757D02* Y012600D01* X057368Y014935D02* X057190Y014757D01* X051200Y030700D02* X051660Y031160D01* X043990Y030700D02* X051200D01* X041450Y028160D02* X043990Y030700D01* X041450Y017990D02* Y028160D01* X047730Y011710D02* X041450Y017990D01* X054680Y011710D02* X047730D01* X056170Y013200D02* X054680Y011710D01* X056170Y014990D02* Y013200D01* X056390Y015210D02* X056170Y014990D01* X056643Y015210D02* X056390D01* X056868Y015435D02* X056643Y015210D01* X051100Y030800D02* X051560Y031260D01* X043930Y030800D02* X051100D01* X040810Y027680D02* X043930Y030800D01* X040810Y018390D02* Y027680D01* X047590Y011610D02* X040810Y018390D01* X055980Y011610D02* X047590D01* X057050Y012680D02* X055980Y011610D01* X057050Y014753D02* Y012680D01* X056868Y014935D02* X057050Y014753D01* X054470Y011810D02* X056000Y013340D01* X047870Y011810D02* X054470D01* X041550Y018130D02* X047870Y011810D01* X041550Y028100D02* Y018130D01* X044050Y030600D02* X041550Y028100D01* X051820Y030600D02* X044050D01* X052840Y031620D02* X051820Y030600D01* X051860Y030480D02* X052969Y031589D01* X044110Y030480D02* X051860D01* X041650Y028020D02* X044110Y030480D01* X041650Y018210D02* Y028020D01* X047950Y011910D02* X041650Y018210D01* X054310Y011910D02* X047950D01* X056070Y013670D02* X054310Y011910D01* X056070Y014733D02* Y013670D01* X055868Y014935D02* X056070Y014733D01* X052170Y030080D02* X053370Y031280D01* X044370Y030080D02* X052170D01* X042080Y027790D02* X044370Y030080D01* X042080Y018600D02* Y027790D01* X048360Y012320D02* X042080Y018600D01* X053710Y012320D02* X048360D01* X055368Y013978D02* X053710Y012320D01* X055368Y014435D02* Y013978D01* X051930Y030380D02* X053070Y031520D01* X044190Y030380D02* X051930D01* X041760Y027950D02* X044190Y030380D01* X041760Y018320D02* Y027950D01* X048070Y012010D02* X041760Y018320D01* X054110Y012010D02* X048070D01* X055868Y013768D02* X054110Y012010D01* X055868Y014435D02* Y013768D01* X052020Y030280D02* X053170Y031430D01* X044240Y030280D02* X052020D01* X041880Y027920D02* X044240Y030280D01* X041880Y018430D02* Y027920D01* X048200Y012110D02* X041880Y018430D01* X053970Y012110D02* X048200D01* X055690Y013830D02* X053970Y012110D01* X055690Y014640D02* Y013830D01* X055570Y014760D02* X055690Y014640D01* X055290Y014760D02* X055570D01* X055190Y014860D02* X055290Y014760D01* X055190Y015257D02* Y014860D01* X055368Y015435D02* X055190Y015257D01* X051370Y016433D02* X051133Y016197D01* X051368Y016435D02* X051370Y016433D01* Y015933D02* X051133Y015697D01* X051368Y015935D02* X051370Y015933D01* X044910Y029260D02* X053560D01* X042940Y027290D02* X044910Y029260D01* X042940Y022410D02* Y027290D01* X046010Y019340D02* X042940Y022410D01* X046010Y016000D02* Y019340D01* X048470Y013540D02* X046010Y016000D01* X051630Y013540D02* X048470D01* X052070Y013980D02* X051630Y013540D01* X052070Y015337D02* Y013980D01* X052173Y015440D02* X052070Y015337D01* X052173Y015740D02* Y015440D01* X052368Y015935D02* X052173Y015740D01* X053450Y029460D02* X055420Y031430D01* X044760Y029460D02* X053450D01* X042730Y027430D02* X044760Y029460D01* X042730Y022320D02* Y027430D01* X045810Y019240D02* X042730Y022320D01* X045810Y015880D02* Y019240D01* X048750Y012940D02* X045810Y015880D01* X051418Y012940D02* X048750D01* X052368Y013890D02* X051418Y012940D01* X052368Y014435D02* Y013890D01* X045030Y029020D02* X053620D01* X043140Y027130D02* X045030Y029020D01* X043140Y022520D02* Y027130D01* X046280Y019380D02* X043140Y022520D01* X046280Y017820D02* Y019380D01* X046910Y017190D02* X046280Y017820D01* X046910Y015400D02* Y017190D01* X048570Y013740D02* X046910Y015400D01* X051280Y013740D02* X048570D01* X051560Y014020D02* X051280Y013740D01* X051560Y014830D02* Y014020D01* X051630Y014900D02* X051560Y014830D01* X051630Y015197D02* Y014900D01* X051868Y015435D02* X051630Y015197D01* X044850Y029360D02* X053510D01* X042830Y027340D02* X044850Y029360D01* X042830Y022370D02* Y027340D01* X045910Y019290D02* X042830Y022370D01* X045910Y015950D02* Y019290D01* X048420Y013440D02* X045910Y015950D01* X051720Y013440D02* X048420D01* X052170Y013890D02* X051720Y013440D01* X052170Y015237D02* Y013890D01* X052368Y015435D02* X052170Y015237D01* X053300Y029760D02* X055100Y031560D01* X044520Y029760D02* X053300D01* X042410Y027650D02* X044520Y029760D01* X042410Y021610D02* Y027650D01* X045500Y018520D02* X042410Y021610D01* X045500Y015680D02* Y018520D01* X048560Y012620D02* X045500Y015680D01* X052420Y012620D02* X048560D01* X053150Y013350D02* X052420Y012620D01* X053150Y014717D02* Y013350D01* X053368Y014935D02* X053150Y014717D01* X053580Y029130D02* X056350Y031900D01* X044970Y029130D02* X053580D01* X043040Y027200D02* X044970Y029130D01* X043040Y022470D02* Y027200D01* X046130Y019380D02* X043040Y022470D01* X046130Y016030D02* Y019380D01* X048520Y013640D02* X046130Y016030D01* X051360Y013640D02* X048520D01* X051670Y013950D02* X051360Y013640D01* X051670Y014737D02* Y013950D01* X051868Y014935D02* X051670Y014737D01* X045090Y028910D02* X053660D01* X043240Y027060D02* X045090Y028910D01* X043240Y022570D02* Y027060D01* X046380Y019430D02* X043240Y022570D01* X046380Y017900D02* Y019430D01* X047010Y017270D02* X046380Y017900D01* X047010Y015470D02* Y017270D01* X048630Y013850D02* X047010Y015470D01* X050900Y013850D02* X048630D01* X051080Y014030D02* X050900Y013850D01* X051080Y014647D02* Y014030D01* X051368Y014935D02* X051080Y014647D01* X053400Y029560D02* X055320Y031480D01* X044650Y029560D02* X053400D01* X042610Y027520D02* X044650Y029560D01* X042610Y022290D02* Y027520D01* X045710Y019190D02* X042610Y022290D01* X045710Y015810D02* Y019190D01* X048680Y012840D02* X045710Y015810D01* X052120Y012840D02* X048680D01* X052640Y013360D02* X052120Y012840D01* X052640Y014707D02* Y013360D01* X052868Y014935D02* X052640Y014707D01* X053350Y029660D02* X055220Y031530D01* X044590Y029660D02* X053350D01* X042510Y027580D02* X044590Y029660D01* X042510Y022240D02* Y027580D01* X045610Y019140D02* X042510Y022240D01* X045610Y015740D02* Y019140D01* X048610Y012740D02* X045610Y015740D01* X052190Y012740D02* X048610D01* X052868Y013418D02* X052190Y012740D01* X052868Y014435D02* Y013418D01* X057867Y015937D02* X058070Y016140D01* X057868Y015935D02* X057867Y015937D01* X057080Y031260D02* X057770D01* X053820Y028000D02* X057080Y031260D01* X052210Y028000D02* X053820D01* X051550Y027340D02* X052210Y028000D01* X051550Y026253D02* Y027340D01* X051868Y025935D02* X051550Y026253D01* X058570Y031760D02* X059080D01* X057870Y031060D02* X058570Y031760D01* X057190Y031060D02* X057870D01* X055150Y029020D02* X057190Y031060D01* X055150Y028130D02* Y029020D01* X054820Y027800D02* X055150Y028130D01* X052760Y027800D02* X054820D01* X052160Y027200D02* X052760Y027800D01* X052160Y026800D02* Y027200D01* X052300Y026660D02* X052160Y026800D01* X052430Y026660D02* X052300D01* X052623Y026467D02* X052430Y026660D01* X052623Y026190D02* Y026467D01* X052368Y025935D02* X052623Y026190D01* X057820Y031160D02* X058560Y031900D01* X057140Y031160D02* X057820D01* X055050Y029070D02* X057140Y031160D01* X055050Y028180D02* Y029070D01* X054770Y027900D02* X055050Y028180D01* X052320Y027900D02* X054770D01* X051670Y027250D02* X052320Y027900D01* X051670Y026633D02* Y027250D01* X051868Y026435D02* X051670Y026633D01* X058620Y031660D02* X059130D01* X057920Y030960D02* X058620Y031660D01* X057240Y030960D02* X057920D01* X055250Y028970D02* X057240Y030960D01* X055250Y028060D02* Y028970D01* X054890Y027700D02* X055250Y028060D01* X052840Y027700D02* X054890D01* X052368Y027228D02* X052840Y027700D01* X052368Y026935D02* Y027228D01* X057030Y031360D02* X057720D01* X053920Y028250D02* X057030Y031360D01* X053330Y028250D02* X053920D01* X053180Y028100D02* X053330Y028250D01* X052120Y028100D02* X053180D01* X051368Y027348D02* X052120Y028100D01* X051368Y026935D02* Y027348D01* X059180Y031560D02* X059500Y031880D01* X058670Y031560D02* X059180D01* X057970Y030860D02* X058670Y031560D01* X057290Y030860D02* X057970D01* X055350Y028920D02* X057290Y030860D01* X055350Y028010D02* Y028920D01* X054940Y027600D02* X055350Y028010D01* X053220Y027600D02* X054940D01* X052868Y027248D02* X053220Y027600D01* X052868Y026935D02* Y027248D01* X058820Y031260D02* X059330D01* X058120Y030560D02* X058820Y031260D01* X057450Y030560D02* X058120D01* X055650Y028760D02* X057450Y030560D01* X055650Y027850D02* Y028760D01* X055050Y027250D02* X055650Y027850D01* X054270Y027250D02* X055050D01* X054130Y027110D02* X054270Y027250D01* X054130Y026850D02* Y027110D01* X053970Y026690D02* X054130Y026850D01* X053810Y026690D02* X053970D01* X053640Y026520D02* X053810Y026690D01* X053640Y026163D02* Y026520D01* X053868Y025935D02* X053640Y026163D01* X058770Y031360D02* X059280D01* X058070Y030660D02* X058770Y031360D01* X057400Y030660D02* X058070D01* X055550Y028810D02* X057400Y030660D01* X055550Y027910D02* Y028810D01* X055040Y027400D02* X055550Y027910D01* X053930Y027400D02* X055040D01* X053650Y027120D02* X053930Y027400D01* X053650Y026717D02* Y027120D01* X053368Y026435D02* X053650Y026717D01* X058880Y031160D02* X059380D01* X058180Y030460D02* X058880Y031160D01* X057500Y030460D02* X058180D01* X055750Y028710D02* X057500Y030460D01* X055750Y027800D02* Y028710D01* X055380Y027430D02* X055750Y027800D01* X055380Y026947D02* Y027430D01* X055368Y026935D02* X055380Y026947D01* X058930Y031060D02* X059430D01* X058230Y030360D02* X058930Y031060D01* X057550Y030360D02* X058230D01* X055868Y028678D02* X057550Y030360D01* X055868Y026935D02* Y028678D01* X059040Y030860D02* X059530D01* X058340Y030160D02* X059040Y030860D01* X057650Y030160D02* X058340D01* X056550Y029060D02* X057650Y030160D01* X056550Y026117D02* Y029060D01* X056368Y025935D02* X056550Y026117D01* X059140Y030660D02* X059630D01* X058440Y029960D02* X059140Y030660D01* X057750Y029960D02* X058440D01* X057130Y029340D02* X057750Y029960D01* X057130Y026697D02* Y029340D01* X056868Y026435D02* X057130Y026697D01* X059090Y030760D02* X059580D01* X058390Y030060D02* X059090Y030760D01* X057700Y030060D02* X058390D01* X056670Y029030D02* X057700Y030060D01* X056670Y026133D02* Y029030D01* X056868Y025935D02* X056670Y026133D01* X057368Y026935D02* Y028248D01* X057640Y026707D02* Y028370D01* X057368Y026435D02* X057640Y026707D01* X058020Y027087D02* Y028600D01* X057868Y026935D02* X058020Y027087D01* X061440Y031870D02* X062170D01* X058130Y028560D02* X061440Y031870D01* X058130Y026197D02* Y028560D01* X057868Y025935D02* X058130Y026197D01* X057862Y024442D02* X058040Y024620D01* X057868Y024435D02* X057862Y024442D01* X058720Y031460D02* X059230D01* X058020Y030760D02* X058720Y031460D01* X057340Y030760D02* X058020D01* X055450Y028870D02* X057340Y030760D01* X055450Y027960D02* Y028870D01* X054990Y027500D02* X055450Y027960D01* X053390Y027500D02* X054990D01* X053050Y027160D02* X053390Y027500D01* X053050Y026617D02* Y027160D01* X052868Y026435D02* X053050Y026617D01* X058980Y030960D02* X059480D01* X058280Y030260D02* X058980Y030960D01* X057600Y030260D02* X058280D01* X056400Y029060D02* X057600Y030260D01* X056400Y026967D02* Y029060D01* X056368Y026935D02* X056400Y026967D01* X057872Y016939D02* X058123Y016687D01* X057868Y016935D02* X057872Y016939D01* X060365Y024939D02* X060113Y024687D01* X060368Y024935D02* X060365Y024939D01* X061810Y031170D02* X062530D01* X059920Y029280D02* X061810Y031170D01* X059920Y027160D02* Y029280D01* X060050Y027030D02* X059920Y027160D01* X060050Y026617D02* Y027030D01* X059868Y026435D02* X060050Y026617D01* X061710Y031370D02* X062420D01* X059640Y029300D02* X061710Y031370D01* X059640Y027570D02* Y029300D01* X059160Y027090D02* X059640Y027570D01* X059160Y026143D02* Y027090D01* X059368Y025935D02* X059160Y026143D01* X061660Y031470D02* X062370D01* X059540Y029350D02* X061660Y031470D01* X059540Y027650D02* Y029350D01* X059053Y027163D02* X059540Y027650D01* X059053Y026620D02* Y027163D01* X058868Y026435D02* X059053Y026620D01* X061760Y031270D02* X062470D01* X059740Y029250D02* X061760Y031270D01* X059740Y027520D02* Y029250D01* X059390Y027170D02* X059740Y027520D01* X059390Y026957D02* Y027170D01* X059368Y026935D02* X059390Y026957D01* X061610Y031570D02* X062320D01* X058980Y028940D02* X061610Y031570D01* X058980Y027250D02* Y028940D01* X058868Y027138D02* X058980Y027250D01* X058868Y026935D02* Y027138D01* X061550Y031670D02* X062270D01* X058880Y029000D02* X061550Y031670D01* X058880Y027390D02* Y029000D01* X058670Y027180D02* X058880Y027390D01* X058670Y026237D02* Y027180D01* X058368Y025935D02* X058670Y026237D01* X061490Y031770D02* X062220D01* X058760Y029040D02* X061490Y031770D01* X058760Y027440D02* Y029040D01* X058570Y027250D02* X058760Y027440D01* X058570Y026637D02* Y027250D01* X058368Y026435D02* X058570Y026637D01* X060547Y025613D02* X060550Y025610D01* X060368Y025435D02* X060547Y025613D01* X060365Y015939D02* X060616Y016190D01* X060368Y015935D02* X060365Y015939D01* X060372Y026932D02* X060570Y027130D01* X060368Y026935D02* X060372Y026932D01* X060160Y026643D02* Y027260D01* X060368Y026435D02* X060160Y026643D01* X060372Y016432D02* X060120Y016180D01* X060368Y016435D02* X060372Y016432D01* X061365Y026439D02* X061616Y026690D01* X061368Y026435D02* X061365Y026439D01* Y025939D02* X061616Y026190D01* X061368Y025935D02* X061365Y025939D01* X060865Y025439D02* X060613Y025187D01* X060868Y025435D02* X060865Y025439D01* Y025939D02* X061116Y026190D01* X060868Y025935D02* X060865Y025939D01* Y023932D02* X060613Y024183D01* X060868Y023935D02* X060865Y023932D01* X060872Y024432D02* X061123Y024683D01* X060868Y024435D02* X060872Y024432D01* X061372Y016932D02* X061120Y016680D01* X061368Y016935D02* X061372Y016932D01* X060872Y015932D02* X060620Y015680D01* X060868Y015935D02* X060872Y015932D01* Y016932D02* X060620Y016680D01* X060868Y016935D02* X060872Y016932D01* X059365D02* X059113Y017183D01* X059368Y016935D02* X059365Y016932D01* X059377Y024443D02* X059210Y024610D01* X059368Y024435D02* X059377Y024443D01* X059940Y014160D02* X059370D01* X060120Y014340D02* X059940Y014160D01* X060120Y014690D02* Y014340D01* X059872Y014939D02* X060120Y014690D01* X059868Y014935D02* X059872Y014939D01* X059865Y023932D02* X059613Y024183D01* X059868Y023935D02* X059865Y023932D01* X059867Y025933D02* X060070Y025730D01* X059868Y025935D02* X059867Y025933D01* X059862Y024942D02* X060020Y025100D01* X059868Y024935D02* X059862Y024942D01* X059367Y025437D02* X059660Y025730D01* X059368Y025435D02* X059367Y025437D01* X059372Y015439D02* X059623Y015187D01* X059368Y015435D02* X059372Y015439D01* Y015938D02* X059630Y015680D01* X059368Y015935D02* X059372Y015938D01* X059865Y016432D02* X059613Y016683D01* X059868Y016435D02* X059865Y016432D01* X058872Y015939D02* X059123Y015687D01* X058868Y015935D02* X058872Y015939D01* X058857Y025447D02* X059040Y025630D01* X058868Y025435D02* X058857Y025447D01* X058867Y024933D02* X058660Y025140D01* X058868Y024935D02* X058867Y024933D01* X058377Y024427D02* X058540Y024590D01* X058368Y024435D02* X058377Y024427D01* X058362Y024942D02* X058210Y024790D01* X058368Y024935D02* X058362Y024942D01* X058867Y016433D02* X059150Y016150D01* X058868Y016435D02* X058867Y016433D01* X054330Y015170D02* X054550D01* X054065Y015435D02* X054330Y015170D01* X053868Y015435D02* X054065D01* X054382Y024922D02* X054570Y025110D01* X054368Y024935D02* X054382Y024922D01* X056387Y015417D02* X056580Y015610D01* X056368Y015435D02* X056387Y015417D01* X056372Y025432D02* X056560Y025620D01* X056368Y025435D02* X056372Y025432D01* X056872Y024932D02* X056730Y024790D01* X056868Y024935D02* X056872Y024932D01* X057867Y025433D02* X057640Y025660D01* X057868Y025435D02* X057867Y025433D01* X057387Y025453D02* X057160Y025680D01* X057368Y025435D02* X057387Y025453D01* X057372Y024932D02* X057610Y025170D01* X057368Y024935D02* X057372Y024932D01* X056867Y024433D02* X056730Y024570D01* X056868Y024435D02* X056867Y024433D01* X056862Y016428D02* X057020Y016270D01* X056868Y016435D02* X056862Y016428D01* X057367Y016433D02* X057590Y016210D01* X057368Y016435D02* X057367Y016433D01* X056877Y016943D02* X056670Y017150D01* X056868Y016935D02* X056877Y016943D01* X057367Y015933D02* X057570Y015730D01* X057368Y015935D02* X057367Y015933D01* X057370Y014435D02* Y014090D01* X057368Y014435D02* X057370D01* X055862Y026428D02* X055580Y026710D01* X055868Y026435D02* X055862Y026428D01* X055868Y015935D02* X056013Y015790D01* X055845Y016435D02* X055670Y016260D01* X055868Y016435D02* X055845D01* X056357Y015923D02* X056190Y016090D01* X056368Y015935D02* X056357Y015923D01* X056367Y016937D02* X056170Y016740D01* X056368Y016935D02* X056367Y016937D01* X055872Y024938D02* X055680Y025130D01* X055868Y024935D02* X055872Y024938D01* X056377Y024443D02* X056210Y024610D01* X056368Y024435D02* X056377Y024443D01* X055868Y025532D02* X055790Y025610D01* X055868Y025435D02* Y025532D01* X055367Y015937D02* X055170Y015740D01* X055368Y015935D02* X055367Y015937D01* X054862Y016942D02* X054630Y016710D01* X054868Y016935D02* X054862Y016942D01* X055368Y016918D02* X055120Y016670D01* X055368Y016935D02* Y016918D01* X054867Y014937D02* X054660Y014730D01* X054868Y014935D02* X054867Y014937D01* X054872Y016438D02* X055070Y016240D01* X054868Y016435D02* X054872Y016438D01* X054882Y024448D02* X054630Y024700D01* X054868Y024435D02* X054882Y024448D01* X055382Y024422D02* X055170Y024210D01* X055368Y024435D02* X055382Y024422D01* X054877Y024943D02* X055070Y024750D01* X054868Y024935D02* X054877Y024943D01* X055377Y025427D02* X055560Y025610D01* X055368Y025435D02* X055377Y025427D01* X055367Y025937D02* X055540Y026110D01* X055368Y025935D02* X055367Y025937D01* X052862Y016428D02* X053050Y016240D01* X052868Y016435D02* X052862Y016428D01* Y025428D02* X053070Y025220D01* X052868Y025435D02* X052862Y025428D01* X053372Y015438D02* X053560Y015250D01* X053368Y015435D02* X053372Y015438D01* X053785Y015935D02* X053610Y015760D01* X053868Y015935D02* X053785D01* X054372Y016432D02* X054180Y016240D01* X054368Y016435D02* X054372Y016432D01* X053872Y025438D02* X053570Y025740D01* X053868Y025435D02* X053872Y025438D01* X054345Y025435D02* X054110Y025670D01* X054368Y025435D02* X054345D01* X053372Y025938D02* X053060Y026250D01* X053368Y025935D02* X053372Y025938D01* X053603Y025170D02* X054120D01* X053368Y024935D02* X053603Y025170D01* X053868Y024318D02* X053760Y024210D01* X053868Y024435D02* Y024318D01* X053368Y024308D02* X053210Y024150D01* X053368Y024435D02* Y024308D01* X053050Y024280D02* X052910Y024140D01* X053050Y024540D02* Y024280D01* X052868Y024722D02* X053050Y024540D01* X052868Y024935D02* Y024722D01* X054372Y015932D02* X054180Y015740D01* X054368Y015935D02* X054372Y015932D01* X053350Y015210D02* X053160D01* X053470Y015090D02* X053350Y015210D01* X053690Y015090D02* X053470D01* X053760Y015160D02* X053690Y015090D01* X054143Y015160D02* X053760D01* X054368Y014935D02* X054143Y015160D01* X053872Y016938D02* X054070Y016740D01* X053868Y016935D02* X053872Y016938D01* X052872Y015938D02* X053060Y015750D01* X052868Y015935D02* X052872Y015938D01* X053187Y016617D02* X053190Y016620D01* X053368Y016435D02* X053187Y016617D01* X053760Y017327D02* X053372Y016938D01* X053760Y017650D02* Y017327D01* X053368Y016935D02* X053372Y016938D01* X053540Y016770D02* X053372Y016938D01* X052377Y024443D02* X052190Y024630D01* X052368Y024435D02* X052377Y024443D01* X051867Y024933D02* X051690Y025110D01* X051868Y024935D02* X051867Y024933D01* X051872Y024438D02* X051610Y024700D01* X051868Y024435D02* X051872Y024438D01* X052110Y025260D02* Y025550D01* X052050Y025200D02* X052110Y025260D01* X051830Y025200D02* X052050D01* X051730Y025300D02* X051830Y025200D01* X051570Y025300D02* X051730D01* X051480Y025210D02* X051570Y025300D01* X051480Y025047D02* Y025210D01* X051368Y024935D02* X051480Y025047D01* X052362Y025428D02* X052550Y025240D01* X052368Y025435D02* X052362Y025428D01* X051872Y016932D02* X052123Y017183D01* X051868Y016935D02* X051872Y016932D01* X052367Y017437D02* X052603Y017673D01* X052368Y017435D02* X052367Y017437D01* X051872Y016432D02* X051620Y016180D01* X051868Y016435D02* X051872Y016432D01* X051310Y014377D02* Y014100D01* X051368Y014435D02* X051310Y014377D01* X049550Y016617D02* X049868Y016935D01* X049550Y015970D02* Y016617D01* X048852Y015272D02* X049550Y015970D01* X048539Y015272D02* X048852D01* X046170Y021401D02* X046177Y021394D01* X046170Y019790D02* Y021401D01* X046480Y019480D02* X046170Y019790D01* X046480Y018040D02* Y019480D01* X046990Y017530D02* X046480Y018040D01* X047660Y017530D02* X046990D01* X047760Y017430D02* X047660Y017530D01* X047760Y015980D02* Y017430D01* X048240Y015500D02* X047760Y015980D01* X048240Y015070D02* Y015500D01* X048460Y014850D02* X048240Y015070D01* X049430Y014850D02* X048460D01* X049840Y015260D02* X049430Y014850D01* X050693Y015260D02* X049840D01* X050868Y015435D02* X050693Y015260D01* X050750Y014317D02* Y014120D01* X050868Y014435D02* X050750Y014317D01* X050877Y025427D02* X050560Y025110D01* X050868Y025435D02* X050877Y025427D01* X050867Y024433D02* X050680Y024620D01* X050868Y024435D02* X050867Y024433D01* X049697Y026607D02* X049700Y026610D01* X049868Y026435D02* X049697Y026607D01* X049610Y025435D02* Y025440D01* X049868Y025435D02* X049610D01* X050880Y026935D02* Y027200D01* X050868Y026935D02* X050880D01* X050368Y024935D02* X050163Y025140D01* X050387Y024453D02* X050210Y024630D01* X050368Y024435D02* X050387Y024453D01* X050620Y015050D02* Y014720D01* X050530Y015140D02* X050620Y015050D01* X050073Y015140D02* X050530D01* X049868Y014935D02* X050073Y015140D01* X050367Y016433D02* X050130Y016670D01* X050368Y016435D02* X050367Y016433D01* X050275Y014935D02* X050070Y014730D01* X050368Y014935D02* X050275D01* X050372Y016938D02* X050640Y016670D01* X050368Y016935D02* X050372Y016938D01* X050867Y016933D02* X050630Y017170D01* X050868Y016935D02* X050867Y016933D01* X046415Y016945D02* X046370D01* X046415D02* X046669* X046415D01* X046472Y022161D02* Y022280D01* X046177Y021866D02* X046472Y022161D01* Y023200D02* X046210D01* X046472Y023028D02* Y023200D01* X046177D02* X046210D01* X046177Y023441D02* Y023200D01* X046210Y023028D02* Y023200D01* X046217Y023028D02* X046210D01* X046433Y021650D02* X046177Y021394D01* X046552Y021650D02* X046433D01* X046768Y021866D02* X046552Y021650D01* X039320Y014090D02* Y010660D01* X039530Y014300D02* X039320Y014090D01* X039530Y015230D02* Y014300D01* X038993Y027673D02* X039380Y028060D01* X038343Y027673D02* X038993D01* X039520Y027800D02* X039770Y028050D01* X039340Y027800D02* X039520D01* X038820Y027280D02* X039340Y027800D01* X038343Y027280D02* X038820D01* X039040Y030429D02* Y030430D01* X038343Y030429D02* X039040D01* X039287Y017142D02* X039010Y014120* Y010490D01* X038340Y014080D02* Y010990D01* X038680Y011170D02* X038690D01* X038680Y014100D02* Y011170D01* X072350Y013590D02* D15* Y013100D01* X072358Y013598D02* X072350Y013590D01* X066809Y024621D02* X067340Y024090D01* X066748Y024559D02* X066809Y024621D01* X069799Y013989D02* X069840Y014030D01* X069799Y013598D02* Y013989D01* X066809Y019501D02* X067340Y018970D01* X066748Y019441D02* X066809Y019501D01* X067181Y028990D02* X067180D01* X067181Y029248D02* Y028990D01* X072260Y010944D02* X072035Y011169D01* X072260Y010941D02* Y010944D01* X058240Y021276D02* X058402D01* X057983Y021019D02* X058240Y021276D01* Y019346D02* X058402D01* X057983Y019090D02* X058240Y019346D01* Y023205D02* X057983Y022948D01* X058402Y023205D02* X058240D01* Y018165D02* X058402D01* X057983Y017909D02* X058240Y018165D01* Y020094D02* X058402D01* X057983Y019838D02* X058240Y020094D01* Y022024D02* X058402D01* X057983Y021767D02* X058240Y022024D01* X062279Y029130D02* X061984Y029425D01* X063570Y029130D02* X062279D01* X064110Y028590D02* X063570Y029130D01* X064110Y025990D02* Y028590D01* X062830Y024710D02* X064110Y025990D01* X062830Y024470D02* Y024710D01* X062520Y024160D02* X062830Y024470D01* X061593Y024160D02* X062520D01* X061368Y023935D02* X061593Y024160D01* X061603Y025170D02* X061368Y024935D01* X062930Y025170D02* X061603D01* X063880Y026120D02* X062930Y025170D01* X063880Y028370D02* Y026120D01* X063340Y028910D02* X063880Y028370D01* X061318Y028910D02* X063340D01* X060803Y029425D02* X061318Y028910D01* X062115Y022689D02* X062116Y022690D01* X062115Y018689D02* X062116Y018690D01* X062115Y021689D02* X062116Y021690D01* X062115Y019689D02* X062116Y019690D01* X062115Y020689D02* X062116Y020690D01* X062122Y016682D02* X062120Y016680D01* X062115Y023689D02* X062116Y023690D01* X062920Y014120D02* X062790Y013990D01* X062920Y015390D02* Y014120D01* X062372Y015938D02* X062920Y015390D01* X062368Y015935D02* X062372Y015938D01* X061906Y029504D02* Y030370D01* X061984Y029425D02* X061906Y029504D01* X063268Y028362D02* X062850D01* X063650Y027980D02* X063268Y028362D01* X063650Y026270D02* Y027980D01* X063070Y025690D02* X063650Y026270D01* X062123Y025690D02* X063070D01* X061868Y025435D02* X062123Y025690D01* X062811Y028402D02* X062850Y028362D01* X061984Y028402D02* X062811D01* X060803D02* Y029425D01* X060620Y023180D02* X060622Y023182D01* X061116Y022690D02* X061115Y022689D01* Y023182D02* X061113Y023183D01* X061122Y017682D02* X061120Y017680D01* X061115Y020689D02* X061116Y020690D01* X061115Y019689D02* X061116Y019690D01* X061115Y018689D02* X061116Y018690D01* X061115Y021689D02* X061116Y021690D01* X060115Y021689D02* X060116Y021690D01* X060123Y018187D02* X060122Y018189D01* Y018682D02* X060120Y018680D01* X060115Y019689D02* X060116Y019690D01* X060115Y020689D02* X060116Y020690D01* X060115Y022689D02* X060116Y022690D01* X058568Y022024D02* X058813Y022269D01* X058402Y022024D02* X058568D01* Y020094D02* X058813Y020340D01* X058402Y020094D02* X058568D01* Y018165D02* X058813Y018411D01* X058402Y018165D02* X058568D01* Y023205D02* X058402D01* X058813Y023450D02* X058568Y023205D01* Y019346D02* X058813Y019592D01* X058402Y019346D02* X058568D01* Y021276D02* X058813Y021521D01* X058402Y021276D02* X058568D01* X056284Y019346D02* X056118D01* X056530Y019592D02* X056284Y019346D01* Y021276D02* X056530Y021521D01* X056118Y021276D02* X056284D01* Y023205D02* X056118D01* X056530Y023450D02* X056284Y023205D01* Y022024D02* X056530Y022269D01* X056118Y022024D02* X056284D01* Y018165D02* X056118D01* X056530Y018411D02* X056284Y018165D01* Y020094D02* X056118D01* X056530Y020340D02* X056284Y020094D01* X056368Y014030D02* X056370D01* X056368Y014435D02* Y014030D01* X057426Y018165D02* X057260D01* X057672Y018411D02* X057426Y018165D01* X057098D02* X056842Y017909D01* X057260Y018165D02* X057098D01* X057426Y022024D02* X057260D01* X057672Y022269D02* X057426Y022024D01* X057098D02* X056842Y021767D01* X057260Y022024D02* X057098D01* Y020094D02* X057260D01* X056842Y019838D02* X057098Y020094D01* X057426D02* X057672Y020340D01* X057260Y020094D02* X057426D01* Y021276D02* X057260D01* X057672Y021521D02* X057426Y021276D01* X057098D02* X056842Y021019D01* X057260Y021276D02* X057098D01* Y019346D02* X057260D01* X056842Y019090D02* X057098Y019346D01* X057426D02* X057672Y019592D01* X057260Y019346D02* X057426D01* Y023205D02* X057260D01* X057672Y023450D02* X057426Y023205D01* X057098D02* X056842Y022948D01* X057260Y023205D02* X057098D01* X055956Y019346D02* X055700Y019090D01* X056118Y019346D02* X055956D01* Y021276D02* X056118D01* X055700Y021019D02* X055956Y021276D01* Y023205D02* X055700Y022948D01* X056118Y023205D02* X055956D01* Y022024D02* X056118D01* X055700Y021767D02* X055956Y022024D01* Y018165D02* X055700Y017909D01* X056118Y018165D02* X055956D01* X055700Y019838D02* Y019830D01* X055956Y020094D02* X055700Y019838D01* X056118Y020094D02* X055956D01* X055143Y019346D02* X055388Y019592D01* X054976Y019346D02* X055143D01* X054815D02* X054976D01* X054558Y019090D02* X054815Y019346D01* X055143Y023205D02* X055388Y023450D01* X054976Y023205D02* X055143D01* X054815D02* X054976D01* X054558Y022948D02* X054815Y023205D01* Y021276D02* X054558Y021019D01* X054976Y021276D02* X054815D01* X055143D02* X054976D01* X055388Y021521D02* X055143Y021276D01* Y022024D02* X055388Y022269D01* X054976Y022024D02* X055143D01* X054815D02* X054976D01* X054558Y021767D02* X054815Y022024D01* Y018165D02* X054558Y017909D01* X054976Y018165D02* X054815D01* X055143D02* X054976D01* X055388Y018411D02* X055143Y018165D01* Y020094D02* X055388Y020340D01* X054976Y020094D02* X055143D01* X054815D02* X054976D01* X054558Y019838D02* X054815Y020094D01* X054001D02* X053835D01* X054247Y020340D02* X054001Y020094D01* X053673D02* X053417Y019838D01* X053835Y020094D02* X053673D01* Y022024D02* X053835D01* X053417Y021767D02* X053673Y022024D01* X054001D02* X054247Y022269D01* X053835Y022024D02* X054001D01* Y018165D02* X053835D01* X054247Y018411D02* X054001Y018165D01* X053673D02* X053417Y017909D01* X053835Y018165D02* X053673D01* Y019346D02* X053835D01* X053417Y019090D02* X053673Y019346D01* X054001D02* X054247Y019592D01* X053835Y019346D02* X054001D01* X053673Y023205D02* X053835D01* X053417Y022948D02* X053673Y023205D01* X054001D02* X054247Y023450D01* X053835Y023205D02* X054001D01* Y021276D02* X053835D01* X054247Y021521D02* X054001Y021276D01* X053673D02* X053417Y021019D01* X053835Y021276D02* X053673D01* X052575Y031670D02* X052570D01* X052115Y022689D02* X052116Y022690D01* X052115Y023689D02* X052116Y023690D01* X051615Y017682D02* X051613Y017683D01* X052115Y021689D02* X052116Y021690D01* X052115Y020689D02* X052116Y020690D01* X052115Y019689D02* X052116Y019690D01* X052115Y018689D02* X052116Y018690D01* X049425Y031740D02* X049430D01* X051115Y020689D02* X051116Y020690D01* X050115Y020689D02* X050116Y020690D01* X050112Y023692D02* X050110Y023690D01* X051115Y022689D02* X051116Y022690D01* X050115Y022689D02* X050116Y022690D01* X051115Y021689D02* X051116Y021690D01* X051115Y023689D02* X051116Y023690D01* X050613Y017683D02* X050615Y017682D01* X050115Y017689D02* X050116Y017690D01* X050115Y019689D02* X050116Y019690D01* X050115Y018689D02* X050116Y018690D01* X051115Y019689D02* X051116Y019690D01* X051115Y018689D02* X051116Y018690D01* X047419Y015961D02* X047520Y015860D01* X047260Y015961D02* X047419D01* X047547Y016945D02* X047559Y016957D01* X047260Y016945D02* X047547D01* X047186Y021264D02* X047559D01* X047056Y021394D02* X047186Y021264D01* X046768Y021394D02* X047056D01* X047550Y015272D02* Y015270D01* X047949Y015272D02* X047550D01* X047030Y023441D02* Y023440D01* X046768Y023441D02* X047030D01* X046113Y026720D02* X046110D01* X046113Y027172D02* Y026720D01* X047030Y023028D02* Y023030D01* X046728Y023028D02* X047030D01* X046720D02* X046728D01* X046720Y022780D02* Y023028D01* X046560Y022620D02* X046720Y022780D01* X046380Y022620D02* X046560D01* X046217Y022457D02* X046380Y022620D01* X046217Y022280D02* Y022457D01* X046113Y024750D02* X046110D01* X046113Y025222D02* Y024750D01* X046363D02* X046113D01* X046363Y025222D02* Y024750D01* X045863D02* X046110D01* X045863Y025222D02* Y024750D01* X046519Y015961D02* X046340Y016140D01* X046669Y015961D02* X046519D01* X043520Y024840D02* Y025114* Y024840D01* X043800Y018366D02* Y018820D01* X043560Y018126D02* X043800Y018366D01* X044110Y024840D02* Y025114* Y024840D01* X044700Y018166D02* Y018740D01* X044660Y018126D02* X044700Y018166D01* X038343Y030823D02* X039500D01* X039070Y028854D02* Y028850D01* X038343Y028854D02* X039070D01* X039010Y026492D02* Y026490D01* X038343Y026492D02* X039010D01* X039500Y026886D02* Y026905D01* X038343Y026886D02* X039500D01* X039003Y028067D02* X039010Y028060D01* X038343Y028067D02* X039003D01* X039040Y029642D02* Y029640D01* X038343Y029642D02* X039040D01* X039830Y030640D02* Y030690D01* X039647Y030823D02* X039830Y030640D01* X039500Y030823D02* X039647D01* X039500Y030795D02* Y030823D01* X039685Y026905D02* X039890Y027110D01* X039500Y026905D02* X039685D01* X039287Y020397D02* X039140Y020250D01* X039287Y020567D02* Y020397D01* Y015183D02* X039120Y015350D01* X039287Y014976D02* Y015183D01* Y016367D02* X039130Y016210D01* X039287Y016551D02* Y016367D01* X039850Y030360D02* Y030330D01* X039695Y030205D02* X039850Y030360D01* X039500Y030205D02* X039695D01* X039870Y027420D02* Y027430D01* X039795Y027495D02* X039870Y027420D01* X039500Y027495D02* X039795D01* X038370Y017142D02* Y017140D01* X038697Y017142D02* X038370D01* X038697Y020403D02* X038850Y020250D01* X038697Y020567D02* Y020403D01* Y016363D02* X038840Y016220D01* X038697Y016551D02* Y016363D01* X038460Y016551D02* X038697D01* Y015227D02* X038820Y015350D01* X038697Y014976D02* Y015227D01* X069500Y014386D02* D14* Y014700D01* X069504Y014386D02* X069500D01* X072416Y015600D02* Y015370D01* X072610Y015600D02* X072416D01* Y015370D02* Y015360D01* Y015140D02* X072610D01* X072416Y015360D02* Y015140D01* X060097Y016707D02* X060100Y016710D01* X059868Y016935D02* X060097Y016707D01* X054632Y026172D02* X054630Y026170D01* X054868Y025935D02* X054632Y026172D01* X050887Y015953D02* X050650Y016190D01* X050868Y015935D02* X050887Y015953D01* X050372Y015432D02* X050620Y015680D01* X050368Y015435D02* X050372Y015432D01* X044990Y024234D02* Y023980D01* X044996Y024228D02* X044990Y024234D01* X044996Y024546D02* Y024228D01* X045113Y024663D02* X044996Y024546D01* X045113Y025222D02* Y024663D01* X045590Y024530D02* Y024225D01* X045363Y024757D02* X045590Y024530D01* X045363Y025222D02* Y024757D01* X045590Y023980D02* Y024225D01* X045587Y024228D02* X045590Y024225D01* X044110Y025705D02* X044863D01* X043520D02* X044110D01* X044863Y027172D02* Y025705D01* Y025222D02* Y025705D01* X071316Y016314D02* D17* Y015710D01* X071276Y016354D02* X071316Y016314D01* X071130Y015710D02* X071316D01* X070272Y015232D02* X070606D01* X070213Y015173D02* X070272Y015232D01* X069898Y015173D02* X070213D01* X071186Y015240D02* X071306Y015360D01* X070614Y015240D02* X071186D01* X070606Y015232D02* X070614Y015240D01* X071306Y015214D02* Y015360D01* X071800Y014720D02* X071306Y015214D01* Y015360D02* X071316Y015370D01* X071001Y014210D02* X071170Y014379D01* X071001Y013819D02* Y014210D01* X071320Y013500D02* X071001Y013819D01* X071320Y012880D02* Y013500D01* X072078Y012122D02* X071320Y012880D01* X072260Y012122D02* X072078D01* X071177Y014386D02* X071170Y014379D01* X071316Y015136D02* Y015370D01* X071170Y014990D02* X071316Y015136D01* X071170Y014379D02* Y014990D01* X071316Y015370D02* Y015710D01* X072420Y015364D02* Y015620* Y015364D01* X072063Y015977D02* X072420Y015620D01* X072063Y016354D02* Y015977D01* X051368Y022435D02* X051115Y022689D01* X051368Y019435D02* X051115Y019689D01* X051368Y021435D02* X051115Y021689D01* X051368Y018435D02* X051115Y018689D01* X051368Y020435D02* X051115Y020689D01* X051368Y023435D02* X051115Y023689D01* X051368Y024435D02* X051120Y024683D01* X051368Y017935D02* X051117Y017683D01* X051368Y016935D02* X051117Y016683D01* X051368Y021935D02* X051120Y022183D01* X051368Y019935D02* X051120Y020183D01* X051368Y020935D02* X051120Y021183D01* X051368Y022935D02* X051120Y023183D01* X051368Y015435D02* X051117Y015183D01* X060368Y021435D02* X060115Y021689D01* X060368Y023435D02* X060622Y023182D01* X060368Y017435D02* X059868Y017935D01* X060122Y018189D02* X060368Y018435D01* X060122Y018682* X060368Y019435D02* X060115Y019689D01* X060368Y020435D02* X060115Y020689D01* X060368Y022435D02* X060115Y022689D01* X060368Y023935D02* X060620Y023683D01* X060368Y017935D02* X060620Y017683D01* X060368Y020935D02* X060120Y021183D01* X060368Y019935D02* X060120Y020183D01* X060368Y016935D02* X060120Y017183D01* X060368Y022935D02* X060120Y023183D01* X060368Y025935D02* X060617Y026183D01* X060368Y021935D02* X060120Y022183D01* X060368Y024435D02* X060617Y024683D01* X060368Y018935D02* X060120Y019183D01* X060368Y015435D02* X060120Y015683D01* X061620Y022683D02* X061616Y022680D01* X061868Y022435D02* X061620Y022683D01* X061368Y022935D02* X061620Y022683D01* X061617Y025683D02* X061620Y025680D01* X061368Y025435D02* X061617Y025683D01* X061868Y025935D02* X061617Y025683D01* Y024683D02* X061620Y024680D01* X061368Y024435D02* X061617Y024683D01* X061868Y024935D02* X061617Y024683D01* X062120Y019183D02* X062116Y019180D01* X062368Y018935D02* X062120Y019183D01* X061868Y019435D02* X062120Y019183D01* X062563Y014241D02* X062564Y014242D01* X062368Y014435D02* X062563Y014241D01* X061868Y017435D02* X062122Y017182D01* X062368Y016935D02* X062122Y017182D01* X062120Y020183D02* X062116Y020180D01* X062368Y019935D02* X062120Y020183D01* X061868Y020435D02* X062120Y020183D01* X061868Y027200D02* X061870D01* X061868Y026935D02* Y027200D01* X062120Y021183D02* X062116Y021180D01* X062368Y020935D02* X062120Y021183D01* X061868Y021435D02* X062120Y021183D01* X062801Y023935D02* X062914Y023823D01* X062368Y023935D02* X062801D01* X062120Y023183D02* X062116Y023180D01* X062368Y022935D02* X062120Y023183D01* X061868Y023435D02* X062120Y023183D01* Y018183D02* X062116Y018180D01* X062368Y017935D02* X062120Y018183D01* X061868Y018435D02* X062120Y018183D01* X062181Y022122D02* X062182Y022124D01* X062368Y021935D02* X062181Y022122D01* X062643Y014935D02* Y014937D01* X062368Y014935D02* X062643D01* X062555Y024622D02* X062557Y024621D01* X062368Y024435D02* X062555Y024622D01* X061868Y022935D02* X062115Y022689D01* X062368Y022435D02* X062115Y022689D01* X061868Y018935D02* X062115Y018689D01* X062368Y018435D02* X062115Y018689D01* X062368Y021435D02* X062115Y021689D01* X061868Y021935D02* X062115Y021689D01* X061868Y019935D02* X062115Y019689D01* X062368Y019435D02* X062115Y019689D01* X061868Y020935D02* X062115Y020689D01* X062368Y020435D02* X062115Y020689D01* X061868Y016935D02* X062122Y016682D01* X062368Y016435D02* X062122Y016682D01* X061868Y023935D02* X062115Y023689D01* X062368Y023435D02* X062115Y023689D01* X061868Y017935D02* X062368Y017435D01* X061368Y023435D02* X061115Y023182D01* X060622D02* X060868Y022935D01* X061368Y022435D02* X061115Y022689D01* X060868Y022935* X061115Y023182* X061368Y017435D02* X061122Y017682D01* X060868Y017935D02* X061122Y017682D01* X061368Y020435D02* X061115Y020689D01* X060868Y020935D02* X061115Y020689D01* X061368Y019435D02* X061115Y019689D01* X060868Y019935D02* X061115Y019689D01* X061368Y018435D02* X061115Y018689D01* X060868Y018935D02* X061115Y018689D01* X061368Y021435D02* X061115Y021689D01* X060868Y021935D02* X061115Y021689D01* X060868Y023435D02* X060620Y023683D01* X060616Y023680* X060868Y017435D02* X060620Y017683D01* X060616Y017680* X060868Y020435D02* X061120Y020183D01* X061368Y019935D02* X061120Y020183D01* X061116Y020180* X061368Y020935D02* X061120Y021183D01* X060868Y021435D02* X061120Y021183D01* X061116Y021180* X061368Y017935D02* X061120Y018183D01* X060868Y018435D02* X061120Y018183D01* X061116Y018180* X060868Y014935D02* X061120Y014683D01* X061368Y014435D02* X061120Y014683D01* X061116Y014680* X060868Y026435D02* X060617Y026183D01* X060620Y026180* X060868Y024935D02* X060617Y024683D01* X060620Y024680* X060868Y019435D02* X061120Y019183D01* X061368Y018935D02* X061120Y019183D01* X061116Y019180* X060868Y022435D02* X061120Y022183D01* X061368Y021935D02* X061120Y022183D01* X061116Y022180* X061368Y015935D02* X061123Y016180D01* X060868Y016435D02* X061123Y016180D01* X059120Y016683D02* X059116Y016680D01* X059368Y016435D02* X059120Y016683D01* X058868Y016935D02* X059120Y016683D01* X059868Y021935D02* X060115Y021689D01* X059868Y018935D02* X060122Y018682D01* X059868Y017935D02* X060122Y018189D01* X059868Y019935D02* X060115Y019689D01* X059868Y020935D02* X060115Y020689D01* X059868Y022935D02* X060115Y022689D01* X059603Y018435D02* Y018437D01* X059868Y018435D02* X059603D01* X059868Y021435D02* X060120Y021183D01* X060116Y021180* X059868Y020435D02* X060120Y020183D01* X060116Y020180* X059868Y014435D02* X059620Y014683D01* X059368Y014935D02* X059620Y014683D01* X059616Y014680* X059868Y017435D02* X060120Y017183D01* X060116Y017180* X059868Y023435D02* X060120Y023183D01* X060116Y023180* X059368Y026435D02* X059617Y026683D01* X059868Y026935D02* X059617Y026683D01* X059620Y026680* X059868Y022435D02* X060120Y022183D01* X060116Y022180* X059868Y019435D02* X060120Y019183D01* X060116Y019180* X059868Y025435D02* X059617Y025183D01* X059368Y024935D02* X059617Y025183D01* X059620Y025180* X059868Y015935D02* X060120Y015683D01* X060116Y015680* X058368Y027200D02* X058370D01* X058368Y026935D02* Y027200D01* X058868Y025935D02* X058617Y025683D01* X058368Y025435D02* X058617Y025683D01* X058620Y025680* X058368Y014160D02* X058370D01* X058368Y014435D02* Y014160D01* X058868Y024170D02* X058866D01* X058868Y024435D02* Y024170D01* X058368Y015935D02* X058620Y015683D01* X058868Y015435D02* X058620Y015683D01* X058616Y015680* X054368Y025935D02* X054120Y026183D01* X054368Y024435D02* X054120Y024683D01* X054368Y017200D02* X054370D01* X054368Y016935D02* Y017200D01* Y015435D02* X054617Y015683D01* X056368Y016435D02* X056620Y016183D01* X056368Y026435D02* X056117Y026183D01* X056368Y024935D02* X056617Y025183D01* X056368Y014935D02* X056620Y014683D01* X056868Y014435D02* X056620Y014683D01* X056616Y014680* X056868Y025435D02* X056617Y025183D01* X056620Y025180* X057868Y026435D02* X057617Y026183D01* X057368Y025935D02* X057617Y026183D01* X057620Y026180* X057868Y014935D02* X057620Y015183D01* X057368Y015435D02* X057620Y015183D01* X057616Y015180* X057368Y024435D02* X057617Y024683D01* X057868Y024935D02* X057617Y024683D01* X057620Y024680* X056868Y027200D02* X056870D01* X056868Y026935D02* Y027200D01* Y015935D02* X056620Y016183D01* X056616Y016180* X057868Y016435D02* X057620Y016683D01* X057368Y016935D02* X057620Y016683D01* X057616Y016680* X055368Y014935D02* X055617Y015183D01* X055868Y015435D02* X055617Y015183D01* X055620Y015180* X055368Y016435D02* X055617Y016683D01* X055868Y016935D02* X055617Y016683D01* X055620Y016680* X055868Y024170D02* X055866D01* X055868Y024435D02* Y024170D01* X056117Y026183D02* X056120Y026180D01* X055868Y025935D02* X056117Y026183D01* X054868Y014160D02* X054870D01* X054868Y014435D02* Y014160D01* X054617Y015683D02* X054620Y015680D01* X054868Y015935D02* X054617Y015683D01* X055120Y026683D02* X055116Y026680D01* X054868Y026935D02* X055120Y026683D01* X055368Y026435D02* X055120Y026683D01* Y025183D02* X055116Y025180D01* X054868Y025435D02* X055120Y025183D01* X055368Y024935D02* X055120Y025183D01* X052868Y017200D02* X052870D01* X052868Y016935D02* Y017200D01* Y015435D02* X052617Y015183D01* X052868Y024435D02* X052620Y024683D01* X052868Y025935D02* X053120Y025683D01* X053868Y026435D02* X054120Y026183D01* X054116Y026180* X053368Y025435D02* X053120Y025683D01* X053116Y025680* X053868Y024935D02* X054120Y024683D01* X054116Y024680* X053868Y014935D02* X053617Y014683D01* X053368Y014435D02* X053617Y014683D01* X053620Y014680* X053368Y027158D02* X053450Y027240D01* X053368Y026935D02* Y027158D01* X053868Y016435D02* X053617Y016183D01* X053368Y015935D02* X053617Y016183D01* X053620Y016180* X051868Y022935D02* X052115Y022689D01* X052368Y022435D02* X052115Y022689D01* X052368Y023435D02* X052115Y023689D01* X051868Y023935D02* X052115Y023689D01* X051868Y017935D02* X051615Y017682D01* X051368Y017435D02* X051615Y017682D01* X052368Y021435D02* X052115Y021689D01* X051868Y021935D02* X052115Y021689D01* X052368Y020435D02* X052115Y020689D01* X051868Y020935D02* X052115Y020689D01* X052368Y019435D02* X052115Y019689D01* X051868Y019935D02* X052115Y019689D01* X051868Y018935D02* X052115Y018689D01* X052368Y018435D02* X052115Y018689D01* X052633Y022935D02* Y022933D01* X052368Y022935D02* X052633D01* X052368Y021935D02* X052120Y022183D01* X051868Y022435D02* X052120Y022183D01* X052116Y022180* X051868Y019435D02* X052120Y019183D01* X052368Y018935D02* X052120Y019183D01* X052116Y019180* X051368Y025935D02* X051620Y025683D01* X051868Y025435D02* X051620Y025683D01* X051616Y025680* X051868Y015935D02* X052117Y016183D01* X052368Y016435D02* X052117Y016183D01* X052120Y016180* Y026187D02* X052116Y026190D01* X052368Y026435D02* X052120Y026187D01* X052368Y024935D02* X052620Y024683D01* X052616Y024680* X052368Y014935D02* X052617Y015183D01* X052620Y015180* X051868Y027158D02* X051950Y027240D01* X051868Y026935D02* Y027158D01* X051368Y023935D02* X051620Y023683D01* X051868Y023435D02* X051620Y023683D01* X051616Y023680* X051868Y014100D02* X051870D01* X051868Y014435D02* Y014100D01* X052368Y020935D02* X052120Y021183D01* X051868Y021435D02* X052120Y021183D01* X052116Y021180* X052368Y017935D02* X052117Y017683D01* X051868Y017435D02* X052117Y017683D01* X052120Y017680* X051868Y020435D02* X052120Y020183D01* X052368Y019935D02* X052120Y020183D01* X052116Y020180* X051868Y018435D02* X051620Y018683D01* X051368Y018935D02* X051620Y018683D01* X051616Y018680* X050868Y020935D02* X051115Y020689D01* X050368Y020435D02* X050115Y020689D01* X049868Y020935D02* X050115Y020689D01* X049868Y021935D02* X050368Y021435D01* Y023435D02* X050112Y023692D01* X049868Y023935D02* X050112Y023692D01* X050868Y022935D02* X051115Y022689D01* X050368Y022435D02* X050115Y022689D01* X049868Y022935D02* X050115Y022689D01* X050868Y021935D02* X051115Y021689D01* X050868Y023935D02* X051115Y023689D01* X050868Y024935D02* X051120Y024683D01* X051116Y024680* X049868Y022435D02* X050120Y022183D01* X050368Y021935D02* X050120Y022183D01* X050116Y022180* X049868Y025935D02* X050120Y025683D01* X050368Y025435D02* X050120Y025683D01* X050116Y025680* X050868Y026435D02* X050620Y026683D01* X050368Y026935D02* X050620Y026683D01* X050616Y026680* X050868Y022435D02* X051120Y022183D01* X051116Y022180* X049868Y023435D02* X050120Y023183D01* X050368Y022935D02* X050120Y023183D01* X050116Y023180* X050868Y021435D02* X051120Y021183D01* X051116Y021180* X049868Y027158D02* X049786Y027240D01* X049868Y026935D02* Y027158D01* X050868Y023435D02* X051120Y023183D01* X051116Y023180* X050368Y020935D02* X050120Y021183D01* X049868Y021435D02* X050120Y021183D01* X050116Y021180* X049868Y024435D02* X050120Y024183D01* X050368Y023935D02* X050120Y024183D01* X050116Y024180* X049868Y017935D02* X050115Y017689D01* X050868Y017935D02* X050615Y017682D01* X050368Y017435* X050115Y017689* X049868Y019935D02* X050115Y019689D01* X050368Y019435D02* X050115Y019689D01* X050368Y018435D02* X050115Y018689D01* X049868Y018935D02* X050115Y018689D01* X050868Y019935D02* X051115Y019689D01* X050868Y018935D02* X051115Y018689D01* X050868Y017435D02* X051117Y017683D01* X051120Y017680* X050868Y016435D02* X051117Y016683D01* X051120Y016680* X049868Y018435D02* X050120Y018183D01* X050368Y017935D02* X050120Y018183D01* X050116Y018180* X050868Y020435D02* X051120Y020183D01* X051116Y020180* X050055Y019248D02* X050054Y019246D01* X049868Y019435D02* X050055Y019248D01* Y020248D02* X050054Y020246D01* X049868Y020435D02* X050055Y020248D01* X050868Y018435D02* X050620Y018683D01* X050368Y018935D02* X050620Y018683D01* X050616Y018680* X050868Y019435D02* X050620Y019683D01* X050368Y019935D02* X050620Y019683D01* X050616Y019680* X049868Y015435D02* X050117Y015683D01* X050368Y015935D02* X050117Y015683D01* X050120Y015680* X050868Y014935D02* X051117Y015183D01* X051120Y015180* X062365Y024939D02* D11* X062113Y024687D01* X062368Y024935D02* X062365Y024939D01* X062368Y025435D02* X062690D01* D23* X044613Y027172D03* X044863D03* X045113D03* X045363D03* X045613D03* X045863D03* X046113D03* X046363D03* Y025222D03* X046113D03* X045863D03* X045613D03* X045363D03* X045113D03* X044863D03* X044613D03* D60* X067181Y029248D03* Y029839D03* D59* X072358Y014386D03* Y013598D03* X071768Y014386D03* X071177D03* D60* X072260Y012713D03* Y012122D03* X070606Y014642D03* Y015232D03* X072260Y010941D03* Y011531D03* D59* X069799Y013598D03* X069209D03* X047949Y015272D03* X048539D03* X039287Y014976D03* X038697D03* X039287Y016551D03* X038697D03* X039287Y020567D03* X038697D03* X039287Y019858D03* X038697D03* D60* X039500Y027495D03* Y026905D03* D59* X039287Y017142D03* X038697D03* X039287D03* X039878D03* X038697Y019268D03* X039287D03* Y018677D03* X038697D03* X046177Y021394D03* X046768D03* X047260Y016945D03* X046669D03* X046177Y023441D03* X046768D03* X045587Y024228D03* X044996D03* X046669Y015961D03* X047260D03* X046177Y021866D03* X046768D03* X044209Y012024D03* X043618D03* D60* X044110Y025114D03* Y025705D03* D59* X042732Y012811D03* X042142D03* X044209D03* X043618D03* D60* X043520Y025705D03* Y025114D03* X039500Y030205D03* Y030795D03* D52* X038343Y031610D03* Y031217D03* Y030823D03* Y030429D03* Y030035D03* Y029642D03* Y029248D03* Y028854D03* Y028461D03* Y028067D03* Y027673D03* Y027280D03* Y026886D03* Y026492D03* Y026098D03* Y025705D03* Y025311D03* Y024917D03* Y024524D03* D79* X072416Y015370D03* X071316D03* D78* X045961Y010999D03* D79* X044660Y018126D03* X043560D03* D78* X041256Y015822D03* Y014722D03* D48* X046728Y022280D03* X046472D03* X046217D03* Y023028D03* X046472D03* X046728D03* D63* X040941Y011866D03* X041846D03* X042752D03* D67* X072063Y016354D03* X071276D03* D68* X054976Y021276D03* Y020094D03* X056118Y021276D03* Y020094D03* X054976Y019346D03* Y018165D03* X056118Y023205D03* Y022024D03* X054976Y023205D03* Y022024D03* X056118Y019346D03* Y018165D03* X058402Y019346D03* Y018165D03* Y021276D03* Y020094D03* D69* X060803Y028402D03* X061984D03* X060803Y029425D03* X061984D03* D68* X058402Y023205D03* Y022024D03* D71* X061906Y030370D03* X063087D03* D70* X062850Y028362D03* Y029543D03* D68* X057260Y021276D03* Y020094D03* Y019346D03* Y018165D03* Y023205D03* Y022024D03* X053835Y023205D03* Y022024D03* Y021276D03* Y020094D03* Y019346D03* Y018165D03* D47* X070419Y010205D03* X070675D03* X070931D03* X071187D03* X071443D03* X071699D03* X071955D03* X072211D03* X072467D03* X072722D03* D84* X066748Y024559D03* Y026260D03* Y019441D03* Y021142D03* D85* X070094Y030291D03* D86* X068283Y026787D03* X072299D03* X068283Y021669D03* X072299D03* D56* X069504Y014386D03* X069110Y015173D03* X069898D03* M00* M02* pcb2gcode-1.1.4-git20120902/testing/gerbv_example/jj/millproject000066400000000000000000000001471202063157500241200ustar00rootroot00000000000000dpi=500 back=l1-orig.grb offset=0.5 zwork=-0.008 zsafe=0.08 mill-feed=6 mill-speed=30000 zchange=1.0 pcb2gcode-1.1.4-git20120902/testing/test.py000066400000000000000000000040461202063157500177610ustar00rootroot00000000000000 import sys import subprocess import threading testProjects = ['./gerbv_example/dan', \ './gerbv_example/am-test', \ './gerbv_example/eaglecad1', \ './gerbv_example/jj'] class Builder(threading.Thread): def __init__(self, project_dir, output_dir_name ): threading.Thread.__init__(self) self._project_dir = project_dir self._output_dir_name = output_dir_name def run(self): build_project( self._project_dir, self._output_dir_name ) def build_project( project_dir, output_dir_name ): prog_path = subprocess.check_output('pwd')[0:-1] + '/../pcb2gcode' subprocess.Popen( args=prog_path, cwd=project_dir ).wait() subprocess.Popen( args='mkdir -p '+output_dir_name+' && mv *.ngc '+output_dir_name, \ cwd=project_dir, shell=True ).wait() def check_project( project_dir ): ret = subprocess.call(['diff', '-q', project_dir+'/old', project_dir+'/new']) if ret != 0: print 'ERROR: differences found in test project ' + project_dir subprocess.call(['meld', project_dir+'/old', project_dir+'/new']) else: print 'No differences found.' def clean_project( project_dir ): subprocess.call(['rm', '-rf', project_dir+'/old', project_dir+'/new', project_dir+'/*.png']) def build_projects( output_dir_name ): builders = [] for project in testProjects: print 'Building ' + project builder = Builder( project, output_dir_name ) builders.append(builder) builder.start() for builder in builders: builder.join() def check_projects(): for project in testProjects: print 'Checking ' + project check_project( project ) def clean_projects(): for project in testProjects: print 'Cleaning up.' clean_project( project ) if sys.argv[1] == 'buildold': build_projects('old') elif sys.argv[1] == 'buildnew': build_projects('new') elif sys.argv[1] == 'cmp': check_projects() elif sys.argv[1] == 'clean': clean_projects()