pax_global_header00006660000000000000000000000064151565660700014525gustar00rootroot0000000000000052 comment=fea9c0d9ecb5b8aecdf26554b26c1df6286526df libssc/000077500000000000000000000000001515656607000123505ustar00rootroot00000000000000libssc/.gitmodules000066400000000000000000000003031515656607000145210ustar00rootroot00000000000000[submodule "libqmi"] path = libqmi url = https://gitlab.freedesktop.org/mobile-broadband/libqmi.git [submodule "mocking/qrtr"] path = mocking/qrtr url = https://github.com/linux-msm/qrtr.git libssc/CHANGELOG.md000066400000000000000000000122521515656607000141630ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased ## [0.4.2] - 2026-03-18 ### Fixed - Tests are more reliable in CI/CD. ## [0.4.1] - 2026-03-01 ### Changed - Increased discovery timeout to 100s. ## [0.4.0] - 2026-01-11 ### Improved - Updated build instructions. ### Added - Extract mount matrix and apply it for accelerometers. ### Fixed - Cleaned up white space. - Fixed 2 memory leaks caused. - Properly close QMI client. - Do not initialize variables if not needed. - Do not check for `NULL` when not needed. - Move Xiaomi Davinci struct to private header. - Add symbol list to avoid exposing more symbols. - Deprecation warning of protobuf-c tool. - Do not run tests if `Q_IPCRTR protocol` is not available. - Skip tests on ARMv7/armhf due to floating point problems with protobuf-c decoding. - Fix printf formats for sensor UIDs. - ABI of compass signal. - Reworked synchronous handling. ## [0.3.0] - 2025-12-26 ### Added - Gyroscope sensor support. - Vala bindings generation. - GObject introspection generation. ### Fixed - Thread symbol leaking into global scope. ### Changed - Drop reporting threads as these are not necessary. ## [0.2.2] - 2025-02-21 ### Fixed - Load libqrtr on Debian correctly for mocking SSC. - Use `g_assert_no_error` in tests. - Let meson look for Python instead of specifying the binary name when mocking. - Add `g_cond` for report threads to avoid race conditions. ## [0.2.1] - 2025-01-12 ### Fixed - Mocking Protobuf messages are now stored in the right directory. - Mocking binary and data are now installed in the right directory. ## [0.2.0] - 2025-01-11 ### Added - Unittests for CI/CD. - Mocking SSC DSP with ssc-server to emulate DSP on non-Qualcomm environments. - Release instructions in RELEASE.md. - Set `G_LOG_DOMAIN` during build to 'libssc' for easier debugging. - Wait for DSP to become available during boot. ### Changed - Reduced API surface. All private interfaces are now excluded from public usage. - API is now solely exposed through `libssc.h`. - Use proper GErrors instead of g\_warning for errors. ### Fixed - Passing GTask in libssc-sensor was missing. - Light sensor intensity is always positive, reject negative measurements. - Proximity sensor will always output a measurement now when opened. - Document availability sensor attribute and specify QMI header length. - Path to protoc and protoc-c for compiling ProtoBuff messages. - Public headers are now correctly installed. - Sync API race conditions. ## [0.1.6] - 2024-06-08 ### Fixed - Ownership of GError is now properly performed when using GTasks. - Handle access denied to address family AF\_QIPCRTR in lockdown mode. - Fix verbose argument for enabling debug mode in ssccli. - Race condition if the sensor is rapidly probed by opening and closing it. ## [0.1.5] - 2024-05-17 ### Fixed - Fixed LICENSE to properly indicate GPLv3. - Add architecture diagram referenced in reverse engineering notes. - Fix .so library name to avoid twice 'lib': liblibssc.so ### Added - Timeout parameter for ssccli. - Flush stdout after each sensor measurement in ssccli. - Add support for proximity sensor of xiaomi-davinci (SM7150). ### Changed - Expanded README with proper description and link to landing page. - Added build instructions to README. - Added custom domain for landing page in README. ## [0.1.4] - 2023-08-19 ### Fixed - Link with math library. - Assert QMI client not NULL during sensor disposing. ### Added - Define unknown type in QMI Report messages as Report Type. ### Changed - Update to latest libqmi API changes. - Search for sensors with a non-zero sample rate such as sensors on Pixel 3A. ## [0.1.3] - 2023-05-20 ### Fixed - Release QMI client before sensor disposing. ## [0.1.2] - 2023-05-20 ### Fixed - Segfault with unknown parameter. - Segfault during sensor disposing. ## [0.1.1] - 2023-05-01 ### Fixed - Fix format-security warning. ## [0.1.0] - 2023-05-01 Initial release. [0.1.0]: https://codeberg.org/DylanVanAssche/libssc/compare/01fe59f06aa107a556dd2cdf33e65fd6378eaf32...0.1.0 [0.1.1]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.0...0.1.1 [0.1.2]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.1...0.1.2 [0.1.3]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.2...0.1.3 [0.1.4]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.3...0.1.4 [0.1.5]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.4...0.1.5 [0.1.6]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.5...0.1.6 [0.2.0]: https://codeberg.org/DylanVanAssche/libssc/compare/0.1.6...v0.2.0 [0.2.1]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.2.0...v0.2.1 [0.2.2]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.2.1...v0.2.2 [0.3.0]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.2.2...v0.3.0 [0.4.0]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.3.0...v0.4.0 [0.4.1]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.4.0...v0.4.1 [0.4.2]: https://codeberg.org/DylanVanAssche/libssc/compare/v0.4.1...v0.4.2 libssc/LICENSE000066400000000000000000001045151515656607000133630ustar00rootroot00000000000000 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 . libssc/README.md000066400000000000000000000047321515656607000136350ustar00rootroot00000000000000# libssc `libssc` is a library to expose the sensors managed by the Qualcomm Sensor Core found in many Qualcomm System-on-Chips (SoCs) from 2018 and onwards. Qualcomm SoCs feature a Sensor Lower Power Island (SLPI) to offload sensors to a dedicated Digital Signal Processor (DSP) for optimizing power consumption and reducing the tasks of the main CPU. This way, the main CPU may enter full suspend while the DSP can detect proximity from the proximity sensor and wake up the main CPU. Direct access to the sensors is prohibited by the hypervisor, thus the only way to access sensors on these SoCs is by talking to the DSP managing these sensors. Libssc performs this task and exposes the sensors as a GLib-based library which allows seamless integration with the existing Linux ecosystem. _Qualcomm, Sensor Low Power Island (SLPI), and Qualcomm Sensor Core are registed trademarks of QUALCOMM Incorporated. Any rights therein are reserved to QUALCOMM Incorporated. Any use by the libssc project is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between QUALCOMM Incorporated and the libssc project._ ## Documentation General information about libssc, documentation, and other information can be found at [https://libssc.dylanvanassche.be](https://libssc.dylanvanassche.be). ## Building `libssc` uses the Meson build system with a minimal list of external dependencies: - `libqmi >=1.33.4` - `glib >= 2.56` - `protobuf-c` `libssc` tests requires an additional dependency to compile the ProtoBuf messages for simulating the DSP QMI responses: - `protobuf` - `python-gobject3` - `qrtr-libs` ``` meson setup _build meson compile -C _build ``` Tests can be executed with: ``` meson test -C _build ``` ## Linking against libssc Use `pkg-config` in your favorite build system to link against `libssc`. The library is called `libssc`, in Meson it looks like this: ``` libssc_dep = dependency('libssc') ``` ## Lockdown Systemd features a lockdown feature to reduce access to resources for services. If `libssc` is used in a service such as `iio-sensor-proxy`, make sure access to the address family `AF_QIPCRTR` otherwise access to the QRTR bus is prohibited. ## Tests Libssc has tests with and without the SSC mocking server to verify also the behavior of libssc when the QMI service is not present. ## License Available under the [GPLv3 license](./LICENSE).
Copyright (c) by libssc Authors (2022-2026) libssc/RELEASE.md000066400000000000000000000004211515656607000137470ustar00rootroot00000000000000# Release instructions 1. Update [CHANGELOG.md](CHANGELOG.md) with the latest changes 2. Update version tag in `meson.build`. 3. Update SSC Server version in `mocking/ssc-server`. 4. Tag an annotated release with semantic versioning: `git tag -s -m "libssc X.Y.Z" vX.Y.Z` libssc/data/000077500000000000000000000000001515656607000132615ustar00rootroot00000000000000libssc/data/meson.build000066400000000000000000000037761515656607000154400ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-or-later # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # msgs_inc = include_directories('.') msgs = [ 'common', 'sensor-suid', 'sensor-proximity', 'sensor-light', 'sensor-accelerometer', 'sensor-magnetometer', 'sensor-rotationvector', 'sensor-gyroscope', ] sources_gen = [] headers_gen = [] python_gen = [] foreach m: msgs name = 'ssc-' + m # C protobuf_c_gen = custom_target ( name + '_c', input: name + '.proto', output: [name + '.pb-c.c', name + '.pb-c.h'], command: [protocc_tool, '--proto_path=@CURRENT_SOURCE_DIR@', '--c_out=@OUTDIR@', '@INPUT@'], install: true, install_dir: [false, libssc_glib_pkgincludedir] ) sources_gen += protobuf_c_gen[0] headers_gen += protobuf_c_gen[1] # Python python_name = 'ssc_' + m.replace('-', '_') protobuf_python_gen = custom_target ( python_name + '_py', input: name + '.proto', output: [python_name + '_pb2.py'], command: [protoc_tool, '-I=@CURRENT_SOURCE_DIR@', '--python_out=@OUTDIR@', '@INPUT@'], install: true, install_dir: [libssc_mocking_dir] ) python_gen += protobuf_python_gen[0] endforeach generated_dep = declare_dependency( sources: sources_gen + headers_gen + python_gen, include_directories: includes, dependencies: deps ) deps += generated_dep libssc/data/ssc-common.proto000066400000000000000000000101161515656607000164230ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Each message has a sensor UID to specify which sensor * should receive the message. UIDs are 128bit, but ProtoBuf * is limited to 64bit values, thus they are split into uid_low * and uid_high. */ message SscUid { required fixed64 low = 1; required fixed64 high = 2; } /* * Client configuration * @processor: a value from the SscProcessorType enum. Default APPS (1). * @suspend_mode: a value from the SscSuspendType enum. Default WAKEUP (0). * @no_wakeup_msg_ids: list of messages that do not cause a wakeup. */ message SscClientConfig { required int32 processor = 1 [default = 1]; required int32 suspend_mode = 2 [default = 0]; } /* * Client request body * @unknown: optional * @msg: the actual sensor request, specific for each sensor. * @is_passive: request is passive or not. Active triggers sensor activation. */ message SscClientRequestBody { optional bytes unknown = 1; optional bytes msg = 2; optional bool is_passive = 3 [default = false]; } /* * Client request * @uid: UID of the sensor. * @msg_id: ID of the message. * @config: configuration for the wakeups of the client. * @request: request for the sensor */ message SscClientRequest { required SscUid uid = 1; required fixed32 msg_id = 2; required SscClientConfig config = 3; required SscClientRequestBody request = 4; } /* * Client response body * @msg_id: ID of the message. * @timestamp: DSP internal timer, 19.2 MHz. * @msg: the actual response of the sensor, sensor specific. */ message SscClientResponseBody { required fixed32 msg_id = 1; required fixed64 timestamp = 2; required bytes msg = 3; } /* * Client response * @uid: UID of the sensor. * @response: list of responses. */ message SscClientResponse { required SscUid uid = 1; repeated SscClientResponseBody response = 2; } /* * Sensor attribute request * @enable_updates: setting this property to true will enable updates for attributes. */ message SscAttrRequest { optional bool enable_updates = 2; } /* * Sensor attribute value array * @element: element of the attribute value array. */ message SscAttrValueArray { repeated SscAttrValue element = 1; } /* * Sensor attribute value * Depending on the attribute one of the optional values will be included. * @a: attribute value array data. * @s: string value data. * @f: floating point value data. * @i: integer value data. * @b: boolean value data. */ message SscAttrValue { optional SscAttrValueArray a = 1; optional string s = 2; optional float f = 3; optional fixed64 i = 4; optional bool b = 5; } /* * Sensor attribute value array * @v: element of the value array */ message SscAttrArrayValue { repeated SscAttrValue v = 1; } /* * Sensor attribute * @id: Attribute ID. * @value: Attribute value. */ message SscAttr { required int32 id = 1; required SscAttrArrayValue value_array = 2; } /* * Sensor attribute response * @attr: list of attributes for a sensor. */ message SscAttrResponse { repeated SscAttr attr = 1; } /* * Sensor enable config request * @sample_rate: requested sample rate in Hz. */ message SscEnableConfigRequest { required float sample_rate = 1; } /* * Sensor config response * @sample_rate: actual sample rate in Hz. * @mode: the sensor's operation mode. */ message SscConfigResponse { optional float sample_rate = 1; optional string mode = 5; } libssc/data/ssc-sensor-accelerometer.proto000066400000000000000000000021541515656607000212570ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Accelerometer Sensor specific response data. * @acceleration: acceleration per axis in m/s²: X-axis [0], Y-axis [1], Z-axis [2]. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscAccelerometerResponse { repeated float acceleration = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-gyroscope.proto000066400000000000000000000021521515656607000204550ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2025 Vasiliy Doylov * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Gyroscope Sensor specific response data. * @velocity: velocity per axis in m/s: X-axis [0], Y-axis [1], Z-axis [2]. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscGyroscopeResponse { repeated float velocity = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-light.proto000066400000000000000000000021001515656607000175430ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Light Sensor specific response data. * @intensity: intensity in Lux [0] or raw sensor value [1]. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscLightResponse { repeated float intensity = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-magnetometer.proto000066400000000000000000000021561515656607000211360ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Magnetometer Sensor specific response data. * @magnetic_field: magnetic field per axis in µT: X-axis [0], Y-axis [1], Z-axis [2]. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscMagnetometerResponse { repeated float magnetic_field = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-proximity.proto000066400000000000000000000027501515656607000205130ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Proximity Sensor specific response data. * @near: in-proximity or not, NEAR = 1, FAR = 0. * @distance: raw distance from sensor, vendor-specific. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscProximityResponse { required int32 near = 1; required int32 distance = 2; required int32 accuracy = 3; } /* * Proximity Sensor specific response data, as seen on Xiaomi Mi 9T / Redmi K20 (xiaomi-davinci). * @data: measurement data, a C struct as raw bytes. * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscProximityResponseDavinci { repeated bytes data = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-rotationvector.proto000066400000000000000000000021741515656607000215310ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; /* * Rotationvector Sensor specific response data. * @rotation: rotation per axis as quaternion: X-axis [0], Y-axis [1], Z-axis [2], W rotation angle [3] * @accuracy: how reliable the value is [0, 3]. Higher is more accurate, 0 is unreliable. */ message SscRotationvectorResponse { repeated float rotation = 1; required int32 accuracy = 2; } libssc/data/ssc-sensor-suid.proto000066400000000000000000000030571515656607000174140ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ syntax = "proto2"; import "ssc-common.proto"; /* * SUID Sensor specific request data. * @data_type: retrieve all sensors exposing the specified data type. * An empty value will return all sensors. * @enable_updates: setting this to true will enable updates * for the specified data_type. * @only_default_values: setting this to true will only return * the default sensor for the data_type, even if multiple sensors expose it. */ message SscSuidRequest { required string data_type = 1; optional bool enable_updates = 2; optional bool only_default_values = 3; } /* * SUID Sensor specific response data. * @data_type: the data_type for which the list of UIDs match. * @uid: list of matching UIDs. */ message SscSuidResponse { required string data_type = 1; repeated SscUid uid = 2; } libssc/docs/000077500000000000000000000000001515656607000133005ustar00rootroot00000000000000libssc/docs/Qualcomm-Sensorcore-Docs.md000066400000000000000000001601361515656607000204150ustar00rootroot00000000000000# Qualcomm SDM845 Snapdragon Sensorcore The SDM845 and newer Qualcomm SoCs contain a Qualcomm Snapdragon Sensor Core (SSC) which exposes the device's sensors over QRTR to the main CPU. The SSC allows the main CPU to fully idle or suspend while the sensors are still running, for example: detect proximity and wake up the device. Moreover, it controls the sensors and sampling to maximize battery life when in use. ## Architecture The SSC resides on the SPLI aDSP in the SDM845. Accessing the sensors directly is impossible, we have to communicate with the SSC. The SSC communicates to userspace through 2 daemons: ![SSC architecture: 2 daemons in userspace talk to the SSC. One initializes the SSC, the other one exposes the sensors to Android](ssc-architecture.png "SSC architecture") - **android.hardware.sensors** (@1.0-service on Oneplus 6, @2.0-service on SHIFT6mq) - Exposes the sensors to Android. - Sends and receives messages over QMI with a Protobuf payload. - Waits until sscrpd is done before starting, achieved through init scripts. - **sscrpd** - FastRPC daemon which talks to the SSC. - Reads various JSON configs from the persist partition which the SSC needs to control the sensors such as bus type (I2C, I3C, ...), bus address, etc. - Only reads the JSON configs at boot, does not much do anything besides that. ## Communication The SSC communicates, like any other Qualcomm device, over QMI (Qualcomm Message Interface) messages. However, QMI is only used here as a envelope for the actual data, which is encoded in [Google's Protocol Buffers (Protobuf)](https://developers.google.com/protocol-buffers/) which was discovered by analyzing the binary data from an strace dump and executing the strings command on the various sensor libraries on downstream. It became clear that the data at some point did not match anymore with the one from QMI, but required some kind of structure, so trial-and-error resulted in discovering Protobuf as encoding scheme. ProtoBuf compiles data structures in a binary format to optimize the data transfer and make sure that the encoding and decoding remains consistent when fields are added or removed. QMI messages contain a predefined header and a set of [TLV (Type-Length-Value) structures](https://en.wikipedia.org/wiki/Type%E2%80%93length%E2%80%93value), therefore they always look like this (see [this blogpost](https://emainline.gitlab.io/2022/04/08/Unlocking_SSC_P2.html) for a detailed explanation): **Header** ``` { type: uint8, txn_id: uint16, msg_id: uint16, msg_len: uint16 } ``` **TLVs** ``` { type: uint8, length: uint16, value: length * uint8 } ``` Protobuf messages are compiled from a scheme defined in `*.proto` files. However, these files are not publicly available so we have to resort to reverse-engineering them. When we have a Protobuf message, we can give it to a tool such as [protobuf-inspector](https://github.com/mildsunrise/protobuf-inspector) to reveal their structure and content. ### Stracing the sensor HAL on downstream [-emainline blogpost](https://emainline.gitlab.io/2022/04/08/Unlocking_SSC_P2.html) explains amazingly well already how to reveal the Qualcomm Sensorcore messages using strace. However, the Sensorcore on SDM845 is a newer version which does not use QMI messages for the payload, but protobuf instead. Luckily, the same instructions apply, just the part about decoding the messages differs: 1. Get an ADB shell with root permissions (only works on LineageOS builds!): - `adb root # if necessary use sudo if adb complains about permissions` - `adb shell` 2. Find the sensor HAL daemon PID: `ps -A | grep android.hardware.sensors` 3. Attach strace to it: `strace -p $PID -f -e trace=sendto,recvfrom -xx -s 1024` - `sendto`, `recvfrom` shows all QMI messages being send to and received from the SSC - `-f` tells strace to follow subprocesses - `-xx` prints all strings as hexadecimal - `-s 1024` to show the complete strings instead of only a part of it. #### Boot Behavior Stracing the startup of the daemon shows some useful information: it queries the SSC for all available sensors and subscribes to them. For each type of sensor data (proximity, gravity, etc.) it asks for the SSC registry (see further) if there's a sensor available. If so, the SSC returns the sensor IDs for all sensors providing this type of sensor data. These sensor IDs are used later on for performing operations. #### Screen state behavior Interesting is that the SSC sensors are not always enabled. If the screen is OFF, only a few sensors like the proximity sensor is enabled. When the screen is turned ON, other sensors like the accelerometer and gyroscope output data to the sensor HAL daemon. #### Applications requiring specific sensors Some sensors are specific to applications such a compass for navigation applications. These sensors are only enabled on-demand to save power. ### Stracing the sscrpcd daemon on downstream The `sscrpcd` is a pain to strace, it only does it thing at boot so you need to make sure that the service fails somehow. This way, you can start it manually and strace the boot sequence. 1. Get an ADB shell with root permissions (only works on LineageOS builds!): - `adb root # if necessary use sudo if adb complains about permissions` - `adb remount # we need RW access` - `adb shell` 2. Android is a pain with its read-only rootFS, you need to remount /vendor first since we want to modify the services there (adb remount doesn't cut it here completely): `mount -o rw,remount /vendor` 3. Open to `/vendor/etc/init/hw/init.qcom.rc` and change the service description for `sscrpcd` to (add `/bin/strace` which breaks startup, thanks SELinux, disabling the service the right way makes Android angry): ``` service vendor.sensors /bin/strace /vendor/bin/sscrpcd sensorspd class early_hal user system group system wakelock capabilities BLOCK_SUSPEND writepid /dev/cpuset/system-background/tasks ``` 4. Reboot, LineageOS will keep showing the load animation as it will try to start the service but fails horribly thanks to SELinux not being happy with our voodoo from above. 5. Run strace (needs a reboot each time you want to run it!): - Everything interesting: `strace -f -s 2048 -e trace=recvfrom,sendto,file,desc,open,close /vendor/bin/sscrpcd 2>/cache/log.txt` - `ioctl`s for FastRPC (fd 8 is the FastRPC one): `strace -f -s 2048 -e raw=ioctl -e trace=ioctl -e read=8 -e write=8 /vendor/bin/sscrpcd 2>/cache/log-ioctl.txt` This took a few days to locate this daemon and getting an strace dump from it with useful data. #### Boot behavior Reads the some files and configs of the sensors in `/mnt/persist/vendor/` and `/vendor/etc/sensors` and execute FastRPC calls (`ioctl`) after accessing each file. Does not do anything besides that during its life cycle. ### PoC on mainline Now that we pretty well known how the SSC talks with the sensor HAL daemon and `sscrpcd`, we should try to write a PoC to query the sensors like the sensor HAL daemon does on startup. The daemon can open a QRTR connection to the SSC and send/receive QMI messages. That's all! ### Decoding SSC messages Analyzing the strace dumps revealed that QMI is only used as an envelope and the actual messages are Protobuf-only. We will first decode the QMI part and then decode all the Protobuf messages. **Let's take the following message from an strace dump:** ``` [pid 6859] recvfrom(17, "\x04\x05\x00\x22\x00\x53\x00\x01\x08\x00\xa9\x19\x00\x00\x00\x00\x00\x00\x02\x45\x00\x43\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2d\x0d\x00\x03\x00\x00\x11\x8a\xa3\x6a\x89\x3c\x35\x00\x00\x1a\x1d\x0a\x07\x67\x72\x61\x76\x69\x74\x79\x12\x12\x09\x2e\xf5\x5b\xf6\xc0\x98\x43\xa7\x11\xa5\xa6\x50\x68\x2d\x5a\xd4\xc5", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 90 ``` #### QMI part All Protobuf messages start with `\x0a\x12`, so everything before that is QMI: ``` 04 05 00 22 00 53 00 01 08 00 a9 19 00 00 00 00 00 00 02 45 00 43 00 ``` Thanks to a [-emainline blogpost](http://If we translate the QMI message using the TLV structure as explained [here](https://emainline.gitlab.io/2022/04/08/Unlocking_SSC_P2.html):), decoding the QMI part is straightforward. We need to extract the QMI header and all its TLVs: **Header** - `04` = QMI INDICATION (uint8) - `05 00` = txn_id (uint16) - `22 00` = msg_id (uint16) - `53 00` = msg_length (uint16) Header is 7 bytes long. Here is the QMI message an indication. That means that the message doesn't expect a reply. Other possibilities are QMI REQUEST and QMI RESPONSE. **TLV1** - Type: `01` - Length: `08 00` - Value: `91 00 00 00 00 00 00 00` The first TLV indicates the client ID of the QMI client. **TLV2** - Type: `02` - Length: `45 00` - Value: `43 00 0a 12 09 ab ab ab ab ab ab ab ab 11 ab ab ab ab ab ab ab ab 12 2d 0d 00 03 00 00 11 a2 9c d6 2c 4a 00 00 00 1a 1d 0a 07 67 72 61 76 69 74 79 12 12 09 2e f5 5b f6 c0 98 43 a7 11 a5 a6 50 68 2d 5a d4 c5` The second TLV contains the actual Protobuf message. Interesting here is that the TLV's value contains 43 00 besides the actual Protobuf message (remember that they start with `0a 12`). This field is 2 bytes long, the Protobuf data is 67 bytes, together 69 bytes which matches exactly the TLV's length (`45 00` = 69). So this probably specifies the length of the Protobuf message: ``` { type: uint8, length: uint16, value: { protobuf_length: uint8, protobuf_msg: protobuf_length * uint8 } } ``` Now that we can communicate with the SSC over QMI, we should have some content in our messages, that's where Protobuf comes in! #### Protobuf part The Protobuf payload of each QMI message is the actual content we need to decode. If we run the message from above through protobuf-inspector, we get the following: ``` printf "%b" "\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab \xab\xab\x12\x2d\x0d\x00\x03\x00\x00\x11\xa2\x9c\xd6\x2c\x4a\x00\x00\x00\x1a\x1d\x0a\x07\x67\x72\x61\x76\x69\x74\x79\x 12\x12\x09\x2e\xf5\x5b\xf6\xc0\x98\x43\xa7\x11\xa5\xa6\x50\x68\x2d\x5a\xd4\xc5" | protobuf_inspector root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x0000004A2CD69CA2 / 318579842210 / 1.5739936e-312 3 = message: 1 = "gravity" 2 = message: 1 <64bit> = 0xA74398C0F65BF52E / -6394099091401607890 / -1.5178000e-119 2 <64bit> = 0xC5D45A2D6850A6A5 / -4191626202104944987 / -2.5194872e+28 ``` The binary data representing the QMI message was removed in the example above so we only have the protobuf encoded data for the inspector. The inspector identifies the structure and value types, sometimes by guessing. However, it doesn't know what each field actually means. Luckily, we can guess the meaning of each field by analyzing more strace dumps, this resulted in the following structure after reverse-engineering: ``` { unknown1: { unknown1a: 64bit, # constant unknown1b: 64bit # constant }, unknown2: { type: 32bit, # different numbers are given here but with a recurring pattern, so probably some enum unknown2a: 64bit # increments in time, probably timestamp data: { sensor: string, # kind of data is specified as string, example: gravity, proximity, etc. values: { unknown2b: 64bit, unknown2c: 64bit } } } } ``` This information can be put in `protobuf-inspector` by creating the following `protobuf_config.py` file: ``` # data blob types = { "root": { 1: ("header", "header"), 2: ("data", "data") }, "header": { 1: ("64bit", "unknown1"), 2: ("64bit", "unknown1") }, "data": { 1: ("32bit", "type"), 2: ("64bit", "timestamp"), 3: ("payload", "payload") }, "payload": { 1: ("string", "type"), 2: ("measurements", "measurements") }, "measurements": { 1: ("64bit", "unknown3"), 2: ("64bit", "unknown4") } } ``` Thanks to this scheme, `protobuf-inspector` can show a bit more information: ``` root: 1 header = header: 1 unknown1 = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 unknown1 = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 data = data: 1 type = 768 2 timestamp = 318579842210 3 payload = payload: 1 type = "gravity" 2 measurements = measurements: 1 unknown3 = 0xA74398C0F65BF52E / -6394099091401607890 / -1.5178000e-119 2 unknown4 = 0xC5D45A2D6850A6A5 / -4191626202104944987 / -2.5194872e+28 ``` Given that we know this is a gravity data message, we would expect 3 data values: X, Y, Z since gravity sensors always report the gravity for the X, Y, Z. Let's try some bruteforcing since the inspector is clearly wrong here with its guess. Gravity is mostly provided as a floating point number, so we can try that one first: ``` root: 1 header = header: 1 unknown1 = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 unknown1 = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 data = data: 1 type = 768 2 timestamp = 318579842210 3 payload = payload: 1 type = "gravity" 2 measurements = measurements: 1 unknown3 = ERROR: Traceback... 2 <64bit> = 0xC5D45A2D6850A6A5 / -4191626202104944987 / -2.5194872e+28 ``` After some trial-and-error, you need to re-evaluate your previous assumptions as you may have assumed something wrong. Maybe this is not a data message, but another one? Given that the SSC needs to know how to operate a sensor given a request from userspace, this might be a configuration message? It is kinda hard to make any sense of the measurements message, we need to analyze other messages first to find more patterns. ## Example: Sensor properties message We selected another random message that didn't look like the previous one for decoding and reverse-engineering. We immediately see something similar between this message and the previous one, it has the same kind of header and a data message with a type and timestamp. So we can assume this part is more or less correct. Timestamp doesn't match any UNIX timestamp encoding, but in the end we don't need this value not really for our purposes. ``` root: 1 header = header: 1 unknown1 = 0xAF4002DC9CB83279 / -5818647572017302919 / -4.2198254e-81 2 unknown1 = 0x973615C0C0808FA3 / -7550823807632502877 / -7.3861769e-197 2 data = data: 1 type = 0x00000080 / 128 / 1.79366e-43 2 timestamp = 0x0000004A2E9097AA / 318608807850 / 1.5741367e-312 3 payload = payload: 1 = message: 1 = 0 2 = message: 1 = message: 2 = bytes (8) 0000 6C 73 6D 36 64 73 6D 00 lsm6dsm. 1 = message: 1 = 1 2 = message: 1 = message: 2 = bytes (8) 0000 53 54 4D 69 63 72 6F 00 STMicro. 1 = message: 1 = 4 2 = message: 1 = message: 4 <64bit> = 0x000000000002250A / 140554 / 6.9442903e-319 1 = message: 1 = 8 2 = message: 1 = message: 4 <64bit> = 0x0000000000000000 / 0 / 0.0000000 1 = message: 1 = 12 2 = message: 1 = message: 2 = bytes (4) 0000 4C 50 4D 00 LPM. 1 = message: 2 = bytes (7) 0000 4E 4F 52 4D 41 4C 00 NORMAL. 1 = message: 2 = "HIGH_PERF\x00" 1 = message: 1 = 15 2 = message: 1 = message: 4 <64bit> = 0x0000000000000008 / 8 / 3.9525252e-323 1 = message: 1 = 16 2 = message: 1 = message: 4 <64bit> = 0x0000000000000000 / 0 / 0.0000000 1 = message: 1 = 17 2 = message: 1 = message(5 = 0) 1 = message: 1 = 19 2 = message: 1 = message: 4 <64bit> = 0x0000000000000000 / 0 / 0.0000000 1 = message: 1 = 20 2 = message: 1 = message: 3 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 1 = message: 3 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 1 = message: 3 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 1 = 18 2 = message: 1 = message: 4 <64bit> = 0x0000000000000000 / 0 / 0.0000000 1 = message: 1 = 13 2 = message: 1 = message(5 = 0) 1 = message: 1 = 21 2 = message: 1 = message(5 = 1) 1 = message: 1 = 14 2 = message: 1 = message(5 = 0) 1 = message: 1 = 3 2 = message: 1 = message(5 = 1) 1 = message: 1 = 6 2 = message: 1 = message: 3 <32bit> = 0x3F800000 / 1065353216 / 1.00000 1 = message: 3 <32bit> = 0x40A00000 / 1084227584 / 5.00000 1 = message: 1 = 2 2 = message: 1 = message: 2 = "sensor_temperature\x00" 1 = message: 1 = 7 2 = message: 1 = message: 3 <32bit> = 0x3B7F9724 / 998217508 / 0.00390000 1 = message: 1 = 9 2 = message: 1 = message: 4 <64bit> = 0x0000000000000018 / 24 / 1.1857576e-322 1 = message: 4 <64bit> = 0x0000000000000046 / 70 / 3.4584595e-322 1 = message: 4 <64bit> = 0x00000000000000F0 / 240 / 1.1857576e-321 1 = message: 1 = 10 2 = message: 1 = message: 4 <64bit> = 0x0000000000000006 / 6 / 2.9643939e-323 1 = message: 1 = 5 2 = message: 1 = message: 2 = "sns_sensor_temperature.proto\x00" 1 = message: 1 = 22 2 = message: 1 = message: 4 <64bit> = 0x0000000000000003 / 3 / 1.4821969e-323 1 = message: 1 = 11 2 = message: 1 = message: 1 = message: 1 = message: 3 <32bit> = 0xC2200000 / -1038090240 / -40.0000 1 = message: 3 <32bit> = 0x42AA0000 / 1118437376 / 85.0000 1 = message: 1 = 23 2 = message: 1 = message: 3 <32bit> = 0x3B7F9724 / 998217508 / 0.00390000 1 = message: 1 = 24 2 = message: 1 = message: 1 = message: 1 = message: 3 <32bit> = 0xC2200000 / -1038090240 / -40.0000 1 = message: 3 <32bit> = 0x42AA0000 / 1118437376 / 85.0000 ``` If we look at the other values, we can spot immediately some strings like `lsm6dsm` and `STMicro`. Moreover, we also see some data specifying some kind of ranges, for example `-40.000` and `85.000` which looks like the operating temperature range for a sensor. This sensor is a temperature sensor, so it would make sense to know which temperature values can be considered valid and which not. Since the name of the sensor is provided by a string, we can have a look at the datasheet. Indeed, the [datasheet](https://www.st.com/resource/en/datasheet/lsm6dsm.pdf) confirms our hypothesis regarding the ranges, great! Given that our hypothesis is confirmed, we can apply the same to other properties. This message provides us a list of operating ranges and the current selected ranges of the sensor. We also spot `LPM`, `NORMAL` and `HIGH_PERF` strings but they are not in the datasheet. After checking similar messages, this comes back each time, for different sensor types which may point to how the SSC operates the sensor. Given that the goal of the SSC is to offload and minimize battery use, we can assume the following: - `LPM` = Low Power Mode operation, probably in use when the device is sleeping - `NORMAL` = Normal operation, probably when the device is in use - `HIGH_PERF` = High accurate and performant operation, probably when the sensor data is really important like accelerometer data for navigation apps Another interesting pattern is that each range message contains a `varint` with a number. Given that these are various properties about a sensor, it is probably an enum where each number matches a property like: ``` enum { SENSOR_NAME = 0, # obvious: name of sensor as string SENSOR_MANUFACTURER = 1, # obvious: name of manufacturer as string SENSOR_DATATYPE = 2, # probably the sensor datatype as string SENSOR_UNKNOWN1 = 3, SENSOR_UNKNOWN2 = 4, SENSOR_PROTOFILE = 5, # matches with SENSOR_DATATYPE, so probably right SENSOR_UNKNOWN3 = 6, SENSOR_UNKNOWN4 = 7, SENSOR_UNKNOWN5 = 8, SENSOR_UNKNOWN6 = 9, SENSOR_UNKNOWN7 = 10, SENSOR_OPERATING_RANGE = 11, # temperature sensor operates between -40 and 85 degrees Celsius according to datasheet SENSOR_OPERATING_MODE = 12, # LPM/NORMAL/HIGH_PERF see higher SENSOR_UNKNOWN8 = 13, SENSOR_UNKNOWN9 = 14, SENSOR_UNKNOWN10 = 15, SENSOR_UNKNOWN11 = 16, SENSOR_UNKNOWN12 = 17, SENSOR_UNKNOWN13 = 18, SENSOR_UNKNOWN14 = 19, SENSOR_DEVICE_MOUNT_MATRIX = 20, # device orientation. Gyroscopes and accelerometers needs to specify how they are placed relative to the device orientation SENSOR_UNKNOWN15 = 21, SENSOR_UNKNOWN16 = 22, SENSOR_UNKNOWN17 = 23, # same value as SENSOR_UNKNOWN4, maybe this is selected value? Since only one is available, we are not certain SENSOR_SELECTED_RANGE = 24, # Available ranges are listed and one is current active SENSOR_UNKNOWN18 = 25, SENSOR_UNKNOWN19 = 26 } ``` Weird thing is this LSM6DSM is advertised as an always-on 3D accelerometer and 3D gyroscope, but provides temperature information? Again, the datasheet is golden and specifies that the sensor has an embedded temperature sensor, probably for correcting the accelerometer and gyroscope data! ## Example: proximity sensor data Since we still haven't found a data message, we ran strace a bit longer while turning off the screen. Turning off the screen resulted in less noise in the strace dump, so it seems that the SSC suspends several sensors in that case. However, not all of them are suspended. If you waive your hand over the phone you still get some messages. The only sensor that can act on such events, is a proximity sensor, so it must be a data message! **Protobuf dumps** ``` \x0a\x12\x09\x8c\x6c\xeb\x8f\x24\x49\x4e\xc3\x11\x85\x09\x5c\x1e\x01\xa4\xeb\x15\x12\x21\x0d\x03\x04\x00\x00\x11\x7e\xee\x0c\x60\x1f\x3d\x00\x00\x1a\x11\x0d\x00\x00\x80\x3f\x0d\x00\x00\xa8\x42\x0d\x00\x00\x00\x00\x10\x03 \x0a\x12\x09\x8c\x6c\xeb\x8f\x24\x49\x4e\xc3\x11\x85\x09\x5c\x1e\x01\xa4\xeb\x15\x12\x21\x0d\x03\x04\x00\x00\x11\x73\x08\xee\x61\x1f\x3d\x00\x00\x1a\x11\x0d\x00\x00\x00\x00\x0d\x00\x00\x0c\x42\x0d\x00\x00\x00\x00\x10\x03 \x0a\x12\x09\x8c\x6c\xeb\x8f\x24\x49\x4e\xc3\x11\x85\x09\x5c\x1e\x01\xa4\xeb\x15\x12\x21\x0d\x03\x04\x00\x00\x11\x09\x23\x62\x66\x1f\x3d\x00\x00\x1a\x11\x0d\x00\x00\x80\x3f\x0d\x00\x00\xac\x42\x0d\x00\x00\x00\x00\x10\x03 \x0a\x12\x09\x8c\x6c\xeb\x8f\x24\x49\x4e\xc3\x11\x85\x09\x5c\x1e\x01\xa4\xeb\x15\x12\x21\x0d\x03\x04\x00\x00\x11\x6c\x90\x52\x67\x1f\x3d\x00\x00\x1a\x11\x0d\x00\x00\x00\x00\x0d\x00\x00\x14\x42\x0d\x00\x00\x00\x00\x10\x03 ``` This dump is extracted from our strace dump and contains 4 messages which can be decoded using protobuf-inspector: ``` root: 1 = message: 1 <64bit> = 0xC34E49248FEB6C8C / -4373477766747951988 / -1.7049341e+16 2 <64bit> = 0x15EBA4011E5C0985 / 1579536419034761605 / 4.4079947e-203 2 = message: 1 <32bit> = 0x00000403 / 1027 / 1.43913e-42 2 <64bit> = 0x00003D1F600CEE7E / 67204964740734 / 3.3203664e-310 3 = message: 1 <32bit> = 0x3F800000 / 1065353216 / 1.00000 1 <32bit> = 0x42A80000 / 1118306304 / 84.0000 1 <32bit> = 0x00000000 / 0 / 0.00000 2 = 3 root: 1 = message: 1 <64bit> = 0xC34E49248FEB6C8C / -4373477766747951988 / -1.7049341e+16 2 <64bit> = 0x15EBA4011E5C0985 / 1579536419034761605 / 4.4079947e-203 2 = message: 1 <32bit> = 0x00000403 / 1027 / 1.43913e-42 2 <64bit> = 0x00003D1F61EE0873 / 67204996270195 / 3.3203680e-310 3 = message: 1 <32bit> = 0x00000000 / 0 / 0.00000 1 <32bit> = 0x420C0000 / 1108082688 / 35.0000 1 <32bit> = 0x00000000 / 0 / 0.00000 2 = 3 root: 1 = message: 1 <64bit> = 0xC34E49248FEB6C8C / -4373477766747951988 / -1.7049341e+16 2 <64bit> = 0x15EBA4011E5C0985 / 1579536419034761605 / 4.4079947e-203 2 = message: 1 <32bit> = 0x00000403 / 1027 / 1.43913e-42 2 <64bit> = 0x00003D1F66622309 / 67205070988041 / 3.3203717e-310 3 = message: 1 <32bit> = 0x3F800000 / 1065353216 / 1.00000 1 <32bit> = 0x42AC0000 / 1118568448 / 86.0000 1 <32bit> = 0x00000000 / 0 / 0.00000 2 = 3 root: 1 = message: 1 <64bit> = 0xC34E49248FEB6C8C / -4373477766747951988 / -1.7049341e+16 2 <64bit> = 0x15EBA4011E5C0985 / 1579536419034761605 / 4.4079947e-203 2 = message: 1 <32bit> = 0x00000403 / 1027 / 1.43913e-42 2 <64bit> = 0x00003D1F6752906C / 67205086744684 / 3.3203725e-310 3 = message: 1 <32bit> = 0x00000000 / 0 / 0.00000 1 <32bit> = 0x42140000 / 1108606976 / 37.0000 1 <32bit> = 0x00000000 / 0 / 0.00000 2 = 3 ``` Interesting! The header of the messages report different values than our gravity and temperature sensor from above. Moreover, the type of the data message `1027` is also different, so this might be the enum value for reporting data values. The other types from the previous examples are configuration messages. Proximity is either near or not, so the first part of our data message reports either a `0` or `1` when the proximity sensor is covered or not by our hand. ``` { SENSOR_PROXIMITY_FAR = 0, SENSOR_PROXIMITY_NEAR = 1 } ``` The datasheet of the sensor indicates that is also an ambilight sensor. The second value is probably the light intensity reported in [lux](https://en.wikipedia.org/wiki/Lux). The third value is always `0`, so probably not in use. The last value is always `3` and it seems to appear in more data messages as well, this could be some kind of status regarding the provided data? ## Turning on display enables several sensors Something we noticed is that turning on/off the device's display would trigger some communication between the main CPU and the SSC. After isolating these messages in the strace dump and running them through protobuf-inspector we could see the following: ``` root: 1 = message: 1 <64bit> = 0x8F4CA34817DEA0AE / -8120936498022408018 / -5.6292862e-235 2 <64bit> = 0x9C56C73BE530A0BD / -7181333495733509955 / -3.6838589e-172 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x00003D20B8E10173 / 67210750001523 / 3.3206523e-310 3 = message: 1 <32bit> = 0x41200000 / 1092616192 / 10.0000 3 = message: 0 = 0 0 = 0 0 = 1163262 4 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 5 = bytes (7) 0000 4E 4F 52 4D 41 4C 00 NORMAL. 6 = 245 8 = 1 root: 1 = message: 1 <64bit> = 0x8F4CA34817DEA0AE / -8120936498022408018 / -5.6292862e-235 2 <64bit> = 0x9C56C73BE530A0BD / -7181333495733509955 / -3.6838589e-172 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x00003D20B8E10961 / 67210750003553 / 3.3206523e-310 3 = message: 1 <32bit> = 0x41200000 / 1092616192 / 10.0000 3 = bytes (8) 0000 00 00 00 00 00 FF 7F 47 .......G 4 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 5 = bytes (7) 0000 4E 4F 52 4D 41 4C 00 NORMAL. 6 = 245 8 = 1 root: 1 = message: 1 <64bit> = 0x8F4CA34817DEA0AE / -8120936498022408018 / -5.6292862e-235 2 <64bit> = 0x9C56C73BE530A0BD / -7181333495733509955 / -3.6838589e-172 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x00003D20B8E59D18 / 67210750303512 / 3.3206523e-310 3 = message: 1 <32bit> = 0x41200000 / 1092616192 / 10.0000 3 = message: 0 = 0 0 = 0 0 = 1163262 4 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 5 = bytes (7) 0000 4E 4F 52 4D 41 4C 00 NORMAL. 6 = 245 8 = 1 ``` The header values are again different here from the previous examples. We still don't know their meaning though. The type here is `768` and the content of this message looks like setting the operating mode to `NORMAL`. So we can be sure that the `768` value is an enum value for a control message: ``` { MESSAGE_TYPE_PROPERTIES = 128, MESSAGE_TYPE_CONFIG = 768, MESSAGE_TYPE_DATA = 1027 } ``` A consequence of this is that our gravity example from the beginning was indeed a control message and not a data message as we first assumed! Some more messages appeared when turning on the display: ``` root: 1 = message: 1 <64bit> = 0x8F4CA34817DEA0AE / -8120936498022408018 / -5.6292862e-235 2 <64bit> = 0x9C56C73BE530A0BD / -7181333495733509955 / -3.6838589e-172 2 = message: 1 <32bit> = 0x00000401 / 1025 / 1.43633e-42 2 <64bit> = 0x00003D20B8F063CD / 67210751009741 / 3.3206523e-310 3 = message: 1 <32bit> = 0x00000000 / 0 / 0.00000 1 <32bit> = 0x3F800000 / 1065353216 / 1.00000 2 = 3 ``` This looks like a data message as it has a similar structure as our data message above, but it has a slightly different type. So maybe the `MESSAGE_TYPE_DATA` is a range [1025, 1027]? However, it is not clear what the data represents since we don't know the origin sensor. Yet another control message: ``` root: 1 = message: 1 <64bit> = 0x4043B5DABF1B397D / 4630744792980732285 / 39.420738 2 <64bit> = 0x61C572F2EDB31697 / 7045163579786598039 / 9.6497289e+162 2 = message: 1 <32bit> = 0x00000308 / 776 / 1.08741e-42 2 <64bit> = 0x00003D20B98C665B / 67210761234011 / 3.3206528e-310 3 = message(1 = 4) ``` This one configures a sensor to a certain mode `4`, but again not clear which sensor. The `MESSAGE_TYPE_CONFIG` is probably also a range here: [768, 776]. Another message but with a unseen type: ``` root: 1 = message: 1 <64bit> = 0x4043B5DABF1B397D / 4630744792980732285 / 39.420738 2 <64bit> = 0x61C572F2EDB31697 / 7045163579786598039 / 9.6497289e+162 2 <32bit> = 0x00000202 / 514 / 7.20267e-43 3 = message(1 = 1, 2 = 0) 4 = message: 1 = message(1 = 0) 2 = 1 0 = 1 ``` Since this message appears when turning on the display (which causes several sensors to go into NORMAL mode), maybe this turns on a sensor which was turned off previously like a barometer (which is not useful in a lower power mode). ``` { MESSAGE_TYPE_PROPERTIES = 128, MESSAGE_TYPE_ENABLE = 514, MESSAGE_TYPE_CONFIG = 768, MESSAGE_TYPE_DATA = 1027 } ``` Remember that we had a data message a while back which we didn't know from which sensor it came? Digging through some more dumps, make it appear several times when moving the device. The data is always within a range of [0.0, 10.0] during movement. It is around 0.0 when standing still. This data is probably from an accelerometer or gravity sensor as it reacts on movement! Futhermore, the values of the header are always like this: ``` 1 = message: 1 <64bit> = 0x8F4CA34817DEA0AE / -8120936498022408018 / -5.6292862e-235 2 <64bit> = 0x9C56C73BE530A0BD / -7181333495733509955 / -3.6838589e-172 ``` Since the header matches each time for the same sensor, we can assume this is some kind of ID of the sensor! Other sensors have different constant values to uniquely identify them. If we look at some messages which are sent at the startup of the sensor daemon with strace, we can find these: ``` root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <32bit> = 0x00000200 / 512 / 7.17465e-43 3 = message(1 = 1, 2 = 0) 4 = message: 2 = message: 1 = "proximity" 2 = 1 3 = 1 2 = 1 0 = 1 root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x0000353C896529B6 / 58534119418294 / 2.8919698e-310 3 = message: 1 = "proximity" 2 = message: 1 <64bit> = 0x3732444D54736D61 / 3977316519841590625 / 8.1911186e-43 2 <64bit> = 0x5F5F584F52503532 / 6872308654097315122 / 2.5651075e+151 ``` The sensor daemon requests the proximity sensor and gets a reply with some weird hexadecimal codes. Believe it or not, they match the header of the next messages for that sensor, so that's how the sensor ID is retrieved. Protobuf only supports 32bit or 64bit values, to represent a 128bit values, you need to use 2 times 64bit values. So the ID of the sensor here is probably a combination of 0x3732444D54736D61 + 0x5F5F584F52503532 = 5.F5F584F52\*10^31. Since we don't know the protobuf file, we don't know the order of both 64bit values. However, we don't need to know this as we would need to send them back in the same order anyway. Message type 512 is to retrieve the sensor ID which is unknown at first and set to `0xABABABABABABABAB` until it is known. ``` { MESSAGE_TYPE_PROPERTIES = 128, MESSAGE_TYPE_SENSOR_ID = 512, MESSAGE_TYPE_ENABLE = 514, MESSAGE_TYPE_CONFIG = 768, MESSAGE_TYPE_DATA = 1027 } ``` ## More property messages ``` root: 1 = message: 1 <64bit> = 0xB641F37CF0373AD5 / -5313698367388828971 / -2.4565317e-47 2 <64bit> = 0xB1B5FB056EDEEDA6 / -5641326957458166362 / -3.1847811e-69 2 = message: 1 <32bit> = 0x00000080 / 128 / 1.79366e-43 2 <64bit> = 0x0000353C8AC5E1CB / 58534142534091 / 2.8919709e-310 3 = message: 1 = message: 1 = 0 2 = message: 1 = message: 2 = "TMD3725_RGB\x00" 1 = message: 1 = 1 2 = message: 1 = message: 2 = bytes (7) 0000 61 6D 73 20 41 47 00 ams AG. 1 = message: 1 = 2 2 = message: 1 = message: 2 = bytes (4) 0000 72 67 62 00 rgb. 1 = message: 1 = 4 2 = message: 1 = message: 4 <64bit> = 0x0000000000000100 / 256 / 1.2648081e-321 1 = message: 1 = 5 2 = message: 1 = message: 2 = "sns_rgb.proto\x00" 1 = message: 1 = 7 2 = message: 1 = message: 3 <32bit> = 0x3DCCCCCD / 1036831949 / 0.100000 1 = message: 1 = 9 2 = message: 1 = message: 4 <64bit> = 0x0000000000000050 / 80 / 3.9525252e-322 1 = message: 1 = 10 2 = message: 1 = message: 4 <64bit> = 0x0000000000000001 / 1 / 4.9406565e-324 1 = message: 1 = 11 2 = message: 1 = message: 1 = message: 1 = message: 3 <32bit> = 0x00000000 / 0 / 0.00000 1 = message: 3 <32bit> = 0x477FFF00 / 1199570688 / 65535.0 1 = message: 1 = 12 2 = message: 1 = message: 2 = bytes (4) 0000 4C 50 4D 00 LPM. 1 = message: 2 = bytes (7) 0000 4E 4F 52 4D 41 4C 00 NORMAL. 1 = message: 1 = 15 2 = message: 1 = message: 4 <64bit> = 0x000000000000000C / 12 / 5.9287878e-323 1 = message: 1 = 17 2 = message: 1 = message(5 = 0) 1 = message: 1 = 21 2 = message: 1 = message(5 = 1) 1 = message: 1 = 22 2 = message: 1 = message: 4 <64bit> = 0x0000000000000002 / 2 / 9.8813129e-324 1 = message: 4 <64bit> = 0x0000000000000003 / 3 / 1.4821969e-323 1 = message: 1 = 3 2 = message: 1 = message(5 = 1) 1 = message: 1 = 6 2 = message: 1 = message: 3 <32bit> = 0x40000000 / 1073741824 / 2.00000 1 = message: 3 <32bit> = 0x40A00000 / 1084227584 / 5.00000 1 = message: 3 <32bit> = 0x41200000 / 1092616192 / 10.0000 1 = message: 3 <32bit> = 0x41700000 / 1097859072 / 15.0000 1 = message: 3 <32bit> = 0x41A00000 / 1101004800 / 20.0000 1 = message: 3 <32bit> = 0x42480000 / 1112014848 / 50.0000 1 = message: 3 <32bit> = 0x42C80000 / 1120403456 / 100.000 1 = message: 1 = 13 2 = message: 1 = message(5 = 1) 1 = message: 1 = 16 2 = message: 1 = message: 4 <64bit> = 0x0000000000000001 / 1 / 4.9406565e-324 1 = message: 1 = 18 2 = message: 1 = message: 4 <64bit> = 0x0000000000000001 / 1 / 4.9406565e-324 ``` Remember the config properties messages? Well, with some different sensors messages we can probably decrypt the other enum values: ``` enum { SENSOR_NAME = 0, # obvious: name of sensor as string SENSOR_MANUFACTURER = 1, # obvious: name of manufacturer as string SENSOR_DATATYPE = 2, # probably the sensor datatype as string SENSOR_AVAILABLE = 3, SENSOR_UNKNOWN2 = 4, SENSOR_PROTOFILE = 5, # matches with SENSOR_DATATYPE, so probably right SENSOR_AVAILABLE_RANGES = 6, # confirms hypothesis from above that this is available ranges SENSOR_UNKNOWN3 = 7, SENSOR_UNKNOWN4 = 8, SENSOR_UNKNOWN5 = 9, SENSOR_UNKNOWN6 = 10, SENSOR_OPERATING_RANGE = 11, # ALS range is [0.0, 65535.0] according to datasheet SENSOR_OPERATING_MODE = 12, # LPM/NORMAL/HIGH_PERF see higher SENSOR_UNKNOWN7 = 13, SENSOR_UNKNOWN8 = 14, SENSOR_UNKNOWN9 = 15, SENSOR_STREAM_TYPE = 16, SENSOR_UNKNOWN11 = 17, SENSOR_UNKNOWN12 = 18, SENSOR_UNKNOWN13 = 19, SENSOR_DEVICE_MOUNT_MATRIX = 20, # device orientation. Gyroscopes and accelerometers needs to specify how they are placed relative to the device orientation SENSOR_UNKNOWN14 = 21, SENSOR_UNKNOWN15 = 22, SENSOR_UNKNOWN16 = 23, # same value as SENSOR_UNKNOWN4, maybe this is selected value? Since only one is available, we are not certain SENSOR_SELECTED_RANGE = 24, # Available ranges are listed and one is current active SENSOR_UNKNOWN17 = 25, SENSOR_UNKNOWN18 = 26 } ``` Stream type can be: - Continuous `0` - On change `1` ### FastRPC messages Opens the ADSP secure memory thing: ``` openat(AT_FDCWD, "/dev/adsprpc-smd-secure", O_RDONLY|O_NONBLOCK) = 8 ``` Reads all config files from persist one-by-one while doing ioctl requests to fd 8: ``` [pid 1979] ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x1, 0x10), 0x7313613938) = 0 ``` Besides this ioctl, the following appears in the beginning as well: ``` ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x8, 0x4), 0x7fffb850b0) = 0 ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x6, 0x28), 0x7fffb850b8) = 0 ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0xc, 0xc), 0x7fffb85018) = -1 ENOTTY (Inappropriate ioctl for device) ``` Probably: - Open the thing - Initialize something - Test if something is supported yes/no - Invoke multiple times Given https://python-ioctl.readthedocs.io/en/stable/linux.html: _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x8, 0x4) consists of: - direction: READ or WRITE here - request type: 0x52 = 'R' in ascii --> read request - request nr - size --> struct size https://github.com/SHIFTPHONES/android_kernel_shift_sdm845/blob/f0cbb26338a9b328542e52fdf9bb991f7676cc8c/drivers/char/adsprpc_compat.c ``` #define COMPAT_FASTRPC_IOCTL_INVOKE \ _IOWR('R', 1, struct compat_fastrpc_ioctl_invoke) #define COMPAT_FASTRPC_IOCTL_MMAP \ _IOWR('R', 2, struct compat_fastrpc_ioctl_mmap) #define COMPAT_FASTRPC_IOCTL_MUNMAP \ _IOWR('R', 3, struct compat_fastrpc_ioctl_munmap) #define COMPAT_FASTRPC_IOCTL_INVOKE_FD \ _IOWR('R', 4, struct compat_fastrpc_ioctl_invoke_fd) #define COMPAT_FASTRPC_IOCTL_INIT \ _IOWR('R', 6, struct compat_fastrpc_ioctl_init) #define COMPAT_FASTRPC_IOCTL_INVOKE_ATTRS \ _IOWR('R', 7, struct compat_fastrpc_ioctl_invoke_attrs) #define COMPAT_FASTRPC_IOCTL_GETPERF \ _IOWR('R', 9, struct compat_fastrpc_ioctl_perf) #define COMPAT_FASTRPC_IOCTL_INIT_ATTRS \ _IOWR('R', 10, struct compat_fastrpc_ioctl_init_attrs) #define COMPAT_FASTRPC_IOCTL_INVOKE_CRC \ _IOWR('R', 11, struct compat_fastrpc_ioctl_invoke_crc) #define COMPAT_FASTRPC_IOCTL_CONTROL \ _IOWR('R', 12, struct compat_fastrpc_ioctl_control) #define COMPAT_FASTRPC_IOCTL_MMAP_64 \ _IOWR('R', 14, struct compat_fastrpc_ioctl_mmap_64) #define COMPAT_FASTRPC_IOCTL_MUNMAP_64 \ _IOWR('R', 15, struct compat_fastrpc_ioctl_munmap_64) #define COMPAT_FASTRPC_IOCTL_GET_DSP_INFO \ _IOWR('R', 16, struct compat_fastrpc_ioctl_dsp_capabilities) ``` # Invokes ``` ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x1, 0x10), 0x7313613938) ``` means invoke a read request (FASTRPC_IOCTL_INVOKE) with a struct size 0x10: ``` struct fastrpc_ioctl_invoke { uint32_t handle; /* remote handle */ uint32_t sc; /* scalars describing the data */ remote_arg_t *pra; /* remote arguments list */ }; ``` ==> `0x7313613938` # Init ``` ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x6, 0x28), 0x7fffb850b8) = 0 ``` Initialize the ADSPRPC with (FASTRPC_IOCTL_INIT): ``` struct fastrpc_ioctl_init { uint32_t flags; /* one of FASTRPC_INIT_* macros */ uintptr_t file; /* pointer to elf file */ uint32_t filelen; /* elf file length */ int32_t filefd; /* ION fd for the file */ uintptr_t mem; /* mem for the PD */ uint32_t memlen; /* mem length */ int32_t memfd; /* ION fd for the mem */ }; ``` ==> `0x7fffb850b8` HEX = 16 --> 4 bits 2 numbers = 8 bits = 1 byte 4 numbers = 16 bits = 2 bytes 8 numbers = 32 bits = 4 bytes ./arch/arm64/include/asm/compat.h compat_uint_t = u32 compat_uptr_t = u32 compat_int_t = s32 # Info https://github.com/SHIFTPHONES/android_kernel_shift_sdm845/blob/f0cbb26338a9b328542e52fdf9bb991f7676cc8c/drivers/char/adsprpc_shared.h ``` ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0x8, 0x4), 0x7fffb850b0) = 0 ``` FASTRPC_IOCTL_GETINFO No struct, only uint32_t which is `4` here. Maybe FASTRPC_MODE_SESSION? # Control ``` ioctl(8, _IOC(_IOC_READ|_IOC_WRITE, 0x52, 0xc, 0xc), 0x7fffb85018) = -1 ENOTTY (Inappropriate ioctl for device) ``` failed, but this ioctl is FASTRPC_IOCTL_CONTROL with struct: ``` struct fastrpc_ioctl_control { uint32_t req; union { struct fastrpc_ctrl_latency lp; struct fastrpc_ctrl_smmu smmu; struct fastrpc_ctrl_kalloc kalloc; }; }; ``` Interesting log: sysmon-qmi: sysmon_clnt_svc_arrive: Connection established between QMI handle and slpi's SSCTL service Handle names: https://github.com/flto/fastrpc/blob/master/fastrpc.c#L16 FASTRPC_STATIC_HANDLE_REMOTECTL 0 FASTRPC_STATIC_HANDLE_LISTENER 3 Successfully opened handle 0x36c46f40 for adsp_default_listener on domain 2 This is reflected in the next calls: 01-31 23:58:34.765 0 0 W : ********************* FASTRPC IOCTL BEGIN ********************* 01-31 23:58:34.765 0 0 W : FASTRPC_IOCTL_INVOKE 01-31 23:58:34.765 0 0 W INVOKE params: 01-31 23:58:34.765 0 0 W - handle: 918843200 --> remote handle 0x36c46f40 but written in int values 01-31 23:58:34.765 0 0 W - sc : 0 01-31 23:58:34.765 0 0 W - pra : 01-31 23:58:34.766 0 0 W : ** #### Interesting links for FastRPC - https://lwn.net/Articles/778243/ - https://github.com/96boards/documentation/wiki/Dragonboard-Hexagon-DSP#hexagon-sdk - https://git.linaro.org/landing-teams/working/qualcomm/libadsprpc.git/tree/ ### Suddenly something came up ``` printf "%b" "\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\xc7\x01\x0d\x00\x03\x00\x00\x11\x65\x1e\xc4\x40\x19\x00\x00\x00\x1a\xb6\x01\x0a\x00\x12\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x12\x09\x67\x41\x59\x5a\xe6\xa3\x4c\x72\x11\x9d\xad\x6d\xfd\xcd\x96\x9d\x0f\x12\x12\x09\xc1\x83\x4b\x97\x9e\x50\x43\x56\x11\xb4\xe7\x97\xb0\x11\xde\x33\xd2\x12\x12\x09\xbb\x35\x79\xaf\xb1\x24\xf7\xd2\x11\x13\x85\xc4\x50\x9f\x74\x4e\x8d\x12\x12\x09\xde\xad\xde\xad\xde\xad\xde\xad\x11\xde\xad\xde\xad\xde\xad\xde\xad\x12\x12\x09\x21\xd0\x3f\x92\x68\x5d\x11\xe8\x11\xad\xc0\xfa\x7a\xe0\x1b\xbe\xbc\x12\x12\x09\xff\x57\x0e\x66\x55\x10\x4c\x32\x11\xfb\xe4\xe7\x55\x87\xe6\x53\x83\x12\x12\x09\x52\x4f\x48\x4d\x20\x48\x41\x4c\x11\x4c\x20\x35\x32\x30\x35\x33\x00\x12\x12\x09\x35\x07\x62\x49\x25\x0c\x4f\x7b\x11\x92\xe1\xe3\xcf\xd1\x9c\xc9\x9d" | protobuf_inspector root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x0000001940C41E65 / 108460777061 / 5.3586744e-313 3 = message: 1 = empty chunk 2 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <64bit> = 0x724CA3E65A594167 / 8236138028307399015 / 3.8194698e+242 2 <64bit> = 0x0F9D96CDFD6DAD9D / 1125221293376777629 / 1.8612077e-233 2 = message: 1 <64bit> = 0x5643509E974B83C1 / 6215900552774779841 / 3.5438994e+107 2 <64bit> = 0xD233DE11B097E7B4 / -3300049934373886028 / -9.8805482e+87 2 = message: 1 <64bit> = 0xD2F724B1AF7935BB / -3245084660925385285 / -4.7143809e+91 2 <64bit> = 0x8D4E749F50C48513 / -8264540038574602989 / -1.3938629e-244 2 = message: 1 <64bit> = 0xADDEADDEADDEADDE / -5918101688406856226 / -9.6388453e-88 2 <64bit> = 0xADDEADDEADDEADDE / -5918101688406856226 / -9.6388453e-88 2 = message: 1 <64bit> = 0xE8115D68923FD021 / -1724494478594551775 / -1.9806555e+193 2 <64bit> = 0xBCBE1BE07AFAC0AD / -4846405498054197075 / -4.1784484e-16 2 = message: 1 <64bit> = 0x324C1055660E57FF / 3624289759096887295 / 2.0818886e-66 2 <64bit> = 0x8353E68755E7E4FB / -8983583362737773317 / -1.2463737e-292 2 = message: 1 <64bit> = 0x4C4148204D484F52 / 5494752323941453650 / 2.1695852e+59 2 <64bit> = 0x003335303235204C / 14413704929288268 / 1.0684675e-307 2 = message: 1 <64bit> = 0x7B4F0C2549620735 / 8885333944109762357 / 9.2336148e+285 2 <64bit> = 0x9DC99CD1CFE3E192 / -7076952914486107758 / -3.4747668e-165 ``` ``` 0xABABABABABABABAB 0xABABABABABABABAB ``` sensor SUID lookup ``` 0xD2F724B1AF7935BB 0x8D4E749F50C48513 ``` External sensor service ``` 0x5643509E974B83C1 0xD233DE11B097E7B4 ``` ??? ``` 0xADDEADDEADDEADDE 0xADDEADDEADDEADDE ``` resampler ``` 0xE8115D68923FD021 0xBCBE1BE07AFAC0AD ``` ??? ``` 0x324C1055660E57FF 0x8353E68755E7E4FB ``` ??? ``` 0x4C4148204D484F52 0x003335303235204C ``` BU52053NVX: magnetic HAL switch, probably for the cover. ``` 0x7B4F0C2549620735 0x9DC99CD1CFE3E192 ``` ??? Downstream: ``` printf "%b" "\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\xee\x07\xbc\x27\x01\x00\x00\x00\x1a\x1a\x0a\x04\x72\x6f\x74\x76\x12\x12\x09\x4c\xd4\x45\x7c\x66\x7d\x11\xe7\x11\x90\x7b\xa6\x00\x6a\xd3\xdb\xa0" | protobuf_inspector root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x0000000127BC07EE / 4961601518 / 2.4513569e-314 3 = message: 1 = "rotv" 2 = message: 1 <64bit> = 0xE7117D667C45D44C / -1796516897219029940 / -3.0439903e+188 2 <64bit> = 0xA0DBD36A00A67B90 / -6855653555510543472 / -2.1251540e-150 ``` ### setprop ``` setprop debug.vendor.sns.libsensor1 1 setprop persist.vendor.sensors.debug.hal V ``` ### Sensor registry messages ``` ./decoder.sh "\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2e\x0d\x00\x03\x00\x00\x11\x6f\x5a\xa9\x27\x01\x00\x00\x00\x1a\x1e\x0a\x08\x72\x65\x67\x69\x73\x74\x72\x79\x12\x12\x09\x75\x22\x1e\x70\xb4\x41\x25\x5e\x11\x59\x27\x7f\x00\xa7\x54\x27\xe1" root: 1 = message: 1 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 <64bit> = 0xABABABABABABABAB / -6076574518398440533 / -2.5301707e-98 2 = message: 1 <32bit> = 0x00000300 / 768 / 1.07620e-42 2 <64bit> = 0x0000000127A95A6F / 4960377455 / 2.4507521e-314 3 = message: 1 = "registry" 2 = message: 1 <64bit> = 0x5E2541B4701E2275 / 6783900656934462069 / 3.3178973e+145 2 <64bit> = 0xE12754A7007F2759 / -2222714814839445671 / -1.0250262e+160 ``` ### Mount matrix Sensor attribute (ID=20) specifies the mount matrix of the sensor. This matches the `platform` key in the JSON configuration files which are stored in the device firmware packages. This matrix is a 3x4 matrix of which we use only the first 3 columns (3x3). Once specified, libssc can apply the mount matrix immediately. libssc/docs/ssc-architecture.png000066400000000000000000000477001515656607000172660ustar00rootroot00000000000000PNG  IHDRTQiCCPICC profile(}=H@_[kE*v␡v *U(BP+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽ*S͞q@,#J zE/"L}N_.9@u0Pѣfkk;-)((&88Xowww( ( T*h4t:t:ԩS8vXկ2Bqlb@EDDD/;::EGG;t nnnvii)كm۶7lPi4 %&C*"""\]]c]ty'@zz:/_n%RZݝgg,GGGDw{{GFWt4j=]NNNIII!CSee%oj= ۷n'""AP$* iӺ*^+aĈ"ԩS{(J?TP}ST"""-[LѢEZOƘ1ctg4Mm*"""/JR3k,m۶Չ0HMMU̝;_TO< ''E*jƍ:uۑXFYj`"""G[oo;v=<lJy7rȏSrxxx֭[tbAuiii[5M=JrSO=5wzDFFꋊ}0P}* :thWƍv%%'ND`` 6l ©S /`ر 0ydy0ydt:,\&L>|8z(ك:K/_Ė-[rssQ\\8!99*++DDDT#Z*y2믋-ZB!+BTTT SN !X,]v"%%Eq! B%[!/^K.B1p@h"sO8QL:U!D֭oӧO&LBeѸqcQYYy_}hL&3BEDD􄫬::o";;;O?ӧqa&M'|ӧOC#)) /2&Lш'OyMFk"!!Zeѣ{\]ָUUUHNNŋ[o!55/_Ν;r9fԎѓl0J]/k2еkWϐdÔ)Sd 8* ƍ.3n8xzzʕ+J5;|pXn>#8q2plֆCͿo>Fz[^^zszHR3+TDDDuÜC%JjiQQQyYoB`߾}h߾=7oT ɄN:! /R5Bnn. իWCVCV#"":Idt/s͚5O! L611Q>j(GVٜ[ZZP}J T뮊΃ cƌq|Gطo/_nXnD&ꨇz,0PMا@(H b}XhݻAʕ+ؽ{7njشiSUEEEN[l6?~$}J TWW8VִiSs``$88X`777(J(JT*h4hZhZ\v EEEϯ䈋/JJeZ`X?co>%-??ePPyJQ"2NUUUr`2RhccJBFsѣ~~~#@E7}bGڱc̙sW_/ٳgctot3^/{ڷo'رc7=K/cǎl8q"Mg>۷/f3w0sE9r䮖Q*hݺu={'N1\t遮{YYxt݁tEEE;w.8U0zh<3aðu֛<~8Ѿ}{( tׯ_ֱcGH$d"'jx߾}8t<<< ''' yXnT*{9888N<;vEBXD@@{^^^HOOǡCЪU+DGGC"!!!9{⩧駟p1tł-[͛7G!JQRRk׮h4Dqq1lwww\ӧO#44 ػw/`6i&㩧Btt4lllp9TVV… j˗uVfm1Lذa.^W={QF0`d2 u t8pT*\p[nbbbаaCvi} ٳgѡC<3+VG0L˃?xн{wmXr%{=j|׈//1cߏcǎeeexgѦMj]ff&|||ЧOؠ/^D"Ann.ڷo;;;j `4(DEE,ׯ_͛a2&MX:u ر#ߕXͻヒtX~=z |2 QF`0`ٲe=z4`Ϟ=DZcǰzj$&&Z{W1b_F|F̚5 #FVn mڴ ݺuCaa!-ZEr}͛\|;wFaa! ../`~I&݋c8s ѡCdffb۶m?~<@!::իy@ZZ&O !"##vZt:ۘ={"3aktN8p8tQPPp k׮ב7K.aŊ0w 2/F#.]qaرjXd5=z!!!ѡC:u 0a17nhs=+V@bԨQXz5`̙xWУG!,, _}ЩS't:L2ź`РA,--RiѥKM&BBB?ʕ+xgp!11zh\zs!C6/cȑ(,,DFFu Db~:ñsN",, B 66/ƕ+W0p@,Y䡽%I]$-͚5K !0NTVVSN [[[qy!G>>>B!u&[HHHÇB"f͚%BV gggQ\\,`0&M_U۷OcQUU%4i"BTUUP?agg'.\ "''GjJ!D˅B\zU|B!.̙c}iӦW_}U!DٳۋgZq͢Bxxx2quѬY3#bڵSTUUݻwjhXĢEDÆ oڧ[6lM;rhܸ7o,Zʕ+B!L&YYYb۶mY !~prr>6..N\ҺFQ$%%ѣG[>+V7onnnbvڅ>3f >|v킟.]ZjUBÇqqqӧq\v ϯ6u iӦa?#Gbлwo :k@=t#88ݻ7  ѢE PkQQ!Hppڍ*QШQ#dddX988z2 NV"##1c k>>>G~ЩS'C3fTkɓpssC۶mPT두4YrBoZ W^=):seJD"ii6Ul6WTT8d2T*5RFQh:ta``ǽ2dfϞ 7ɇLv}f:RQMt9^ꫯZ}>76L5>W߾}{8<6oތ'N 22F>}0m42d͛W瞫6'!իW۷o|͛7#)) r(`ܸqhҤ -ˠAлwobHJJ‰'nfZ\ `ʔ)駟Z*zkU駟d2a…裏YYYg}[ϦMzҥKS*⧟~B^^~'L4 ÇG>}аaÛm0tP,]qqqP(b^h4:tpBDT_Nuss///i o+m|||BBJFt:siiiSN=uر{O)..)eee,˼:?wP(DeeB:,خ];_FF8}u/99/l":wl}͚5]v!jC|ÇUUUJ<0LaÆSfqFѸqc1d!˖- ֶ>cm1&ǏoIܹsBڵK'O PeJJ BѪU+ckѲeKk޷o_m6!fY'OI&W^yZ{!L!%%%⩧ׯ_BajE۶mŰaDBB ES IDAT}:u6-/^,]fhZ!رcB! :ܺuk/t޽[z}ɒ%b\4jH9rD!Diihժpضm֎` 4!!!"--Ph-9R|bϞ=m۶֡ݻw6tP.sȏ8Wd2 gg糍7. ?u zXn7nQFgd2uvȯqGѴiSFx{{go6{lDGGc߾}(--EPPPѷo_СCxS*'_~زe loҤIHHHin>;w˗www={_5=vڴiի HUd2"##agggyW^E~{?O <j^^^͛oZ{}}`kk ^Yfzj 0M6Epp0ڴiLkkҥ1bq)!!!I5 /~F˖-; ::]vEEElllx⛖oР:v:X'}4vXl߾YYYϷ݁g`?am Xv-}4o ,//Ѹr BCC v:uf͚!++ k֬RĂ гgO"77cǎE&Mí0&0vXlܸ!!!pvvFii).\gggDEE]v&!|sT92对1Çw5W/www 8tXd ӕ˗/OTR/jC=~OQł,899! .]BIIIPSlWGTk׮!??ֹ?鐝M8 +++q([꯿ WBU8ru_*`0 883gp9AR=73k^[?DksR;1蟘(ncooh4b"11`2ԙ@Et7j5 N&MgvbbU9\\\v999&%%) RmRYYdoZ/eee2PjB`3doL&uXQQsZ*,K` #gyNR|ѣwyV)෹3f̰sR2P=fBGvj>R5k߶m-Zs+Jɓ'R ""{HRٳg'ɮK^~eN:ɻu떠h>joK;P]svvwLvvv S7ȑ#r ...kST/ꊽ{CBBb"""bbb"RRRr^m\.GJJgPT;srrJ okùT*j=0Jr_ƍ5L`kku)ZlyݷgϮuvvZnE.#55UP(]ti_=M "" ٻw⏿ $pwwƍ-[nXVT*ձ9s8S#ܫ|ᇎ TDDDt EbDDDI&>0yd掎d""""HV$Xbf:13f̐y{{34ooO TDDDtGT*Uo^iӦ). TDDD\\\2={-n1`͆ &d\]]$&&T*/wuu@EDDD52/"S1rHIEEEg*"""T*1x`θ GGG 4HH TDDDTB7zhG_=z\.qtttܹ3;t TDDDdekk;->>N";!H0`[[[)`wF"""zrݛBttcN!""z•wzgw!** :.4#;4ibf""""ddd|Lp%+yDDDOgyF`Oܽ`EPPy*"":|0t3g΄h޿sNO=ñ`TUUYr &Mmۢm۶5jΜ9Î圜:s&X,7o"""~aϞ=jSRRЫW/eX`,}oR:2P111Þ={7 ##'O9rƫt|oGt:wNh vp{ GX~=-[498rHb\~ӧO1f,]sνv[l ˇDDȀF hذ!.\W_}ct xxx`ܹXr%`ɒ%hԨVXams֭[\Kf'{^>%%'ND`` Gvv6s琒z랷UUUNPQmLDrx3x6^ixqy@֭j&}v̟?W^_}`ӦMxoj7;;^|饲UV3g~GTTTfϞm=V\%%%Xx1郪*:u /Ǝ ,XZ7o&O N b„ ~ ѣGgt^z /"lb][QHIIAnk;99RAD `w[z/6l z!d2hӦ6m(.._0!JENDbb(++B+vb;R/++hѢP(o߾"99Y!DEEhР8uB"ڵk'RRRDNNpppW\B/ !QQQoBqEtR!->ĉԩSBnZ̟?u\lP-N>}_}hL&3BEDDVعs']?yyy΁z饗˗/cHIIALL P7Y\\ӧOskJ&3>S>}FϞ=1i$|'8}4z=/c„ 08y$$\.Ǎ5 ǏGll,֮]@nn.za}=z 77zk׮\Ǫ& ozy_r9fsŗ_~ P(ׯ6nVFAnn.<==}Gm?7g6 edd_~Y""j5jFf͚Yf۷gG!B T666* wզn]*SN $P=4͡| {;v0.##-''GϞ{ٺ"KDP(۵>3A۱cJev|%ʼnJYY۷8ЁqgnjPb]~}%,wFb*"""Ltvػw/***.߸@EDDDV/4'ڗ_~itKn\s13VT*W^uppT[1 0t:k'BEDDDVRիWm\J&UeߢkBE|m"7֝?^agǟ3 ///˗j8+TDDDThONN7|d2 E?cڪeEEEJLA .(|+TDDDtVW'ORRY\}%""T(^x3g`޼yfN]PQ;Vo !0j(]UU[=jd0feffYpI[&&F_QQQl6#66V_TTENe莔˰a fކC˟i4۷zm:111ׯ?{72P]W֋mv~imffeee=vy*"""kׯ_Kے6mO<{iFy=???{9sXՅX`AUTT.33sVzmĞDDDA"<P8;;Gt:T-/_cƌeeet X"""ϐ(.Fio߾9mڴ͚5d24LHLL4Fi ezݻ7;n~^___իEm9lƪUn;t:v@E4PرADDՔ=[\\x2===/2e] /^,5k72/\(++y9TuNÆ ptփd())A׮]ѱcG2CNN:v?f`Y Bnn.:tr J&%%%ٳ'Zjjشi***зo_"z=9Tumw *\]]w曝 $ƌO?~۷o/_nXnD&(8y_bAǎѡCx{{_֭[~!!!hӦ ZjŋoETTfΜM6!66k׮ň#0}t}H$SOcǎ QPPzRD`` VZڵk;wðX,QO(&86);an>sRtB`oo 66&::ڱ{ﶯ\ݻwc֭M6UUTTtfGr,0PnΝCvPRR{{{BP>>>(--#vT ???ipuuűc0uTlڴ x7+j* :Xxzz?FZZo?رc$ ~>>C߾}ѳo'p۷/|||>}`ؽ{7 ǦMuڵZQQQֿcbb˗/[nۇ 8q"ՎADDt,˧ꘟ2((J(HZf*lv0LFTjKr!DF9tQo??#@U`Æ 8~8mۆӧcϞ=7o֮]'N`1cv؁T1***/}p [[[⏓ j56NDDN@@@/._o _.ݲХKaxwle˖8q"}"88'ODaa!`=5kFйsgt6mEC.]wƏaXDRg.frQ] U-D:e˖IJeЦM8::}Cff&/^ WWW̛7]vEhh(gݲ;v 55gΜ? ;;;< 򐚚-[oE`` |}}!JDBz4 *";_ZI^UUgggdvv62W\Ѻuk4hРvQZZ"" 66W,**¥Kо}{rs?~jaaa /tNfR;t*7VaOSb{9TO1cΎDDD Ejq U 1P1P1P1PѓƎ]@DDDۡCwܹLTH$-fb8f LfJ&[[[T*! 5͡C5 _@׫7J=q1gkk;-)((&88Xowww( ( T*h4t:t:ԩS8vXկ2Bqlb@EDgzutt|5...::ڡ[npssKKKgl۶͸aÆJx`0,1L2P?٧@U9WW=f9|=zC.] !˗{T*EVwg""~OsY6|F#V^- &hiiiß}J T.''Ф$!C`gi_ʞ} DDD@(DB6mZBkE;;;1BRTT:ujRiptt `ߢ}J8k*Ju,""ٲe-Z3f.33FisBEDDDLVS*Yfm۶N)FjjbܹJRɯ+*"~&)պ.TT17nwԩǬ,5bV=*$?~?;ڪ[oo;v=<<~Tի`KYY٠_,O^[Ja\.7}(++q7rUHIIWa r9RRR>lJyW*""ڧ6Vcnݪ-Cx, KKK۪hR𩧞?׻TMz="##EEE~?#"":{Zgg1ODBm IDAT~KMM+q.]*""ڧ6U v޽ʺ|j{nݺiu:vcnIR3g $$~sm0+TDDDOmP)7o߮xzҥ}d0f1P1P1R˓{{{?ٳt%&...;g̘!cM[oٻTcfy͛k 2;w& -[ԝ?*+TDDDTKVRRa:{{{̞=[qSfy&MΝ;Wφ~f35ktR*+TDDDdۻ۠(e]P2TFQd :ZYMEcǦ R Ө#fLѾQsLp< rN2<.>ݰi{^o;6,t^^ajp$᭷҇s@fhW*t:~ t:RW$v IXB0LXPP$I[hnݺ V֭[_9F{7qDիFF/&P ;TDDD Sx{9 TDDD7nҧ~`…t[~DDDtVY[ݍH b0yd7Ќ?'NTny%&&2 C||bd񈈈Ƹ'xBNLL4ChHHHha"""ゃ9s3A?1w\`8}\kss3Ұw2̙3L& TDDD4}þyΝ8z(ߏ/222?fX,ߖC0hSU5844tbƍDŽ |rꫨ򽧺1= UU, ---裏`6x|a8r|כQXX?ݾgΜ,ؿ?:::kqq1 Ӄ.44^7wBܑG___Xpp5c ر_~/;Xf X|9:::g,Z^Xz56lǃ]vaӦM|lڴ `\xIII|2N>ٳgvZY%%%ٯjkkڊKbҥ0#Nק ""Q{EKþWbԩ`0g}Vf!Gw}Q!Dx衇Dii:Ntvv !8wHHHB" !mmmb߾}B!233Ň~7-[!xDAAuuV+DDDDf Vbh듂!!!Ԅ/"55}455p`x嗑 ˅+WsMxWCaٲe.ӂ |`ϟ?9z^f7ɓ'ގSNvzJgDDD4N3h4^ۍテVELL 6oތ`fdffd2!''wONN&ONH4/",Y'Oعs'~'hyCsrh"ߵ4f v$PRwԵI ǃ|5!1k,L2$vcΜ9ڵk&LJJ jkk"XVXV̝;wIٌG},..Ɗ+{lٲGwdۡj TDDD=zvZTTO>111HKKCtt4m6c޽’%K0k,g"""",8d%nNEQ[~DDDc4]]]]:Nb\DxxKQ_ء""""Irj{PJKK! ?{-UU:;TDDD4岘f6\g ]suv7"##円Ve141}tիk_c~C{۷^ce0.]O6mF\\CQ`CEDDDz;6lؠދي}za"""A9η+++޽{wXCAAAUUUnݐhsk?<|Iء"""jhh8twwuwuu!==@EDDD74a„vTEQ1fEQe"""eys}}gyxkUU鎆Yz+0P-ϭZʩ6L\y…3vϷzѐLSIII:vAa֥( UUUg{{{Sr/ YHHHԩS?u><s;g""";*Zyyyl?Nwt:駟<@EDDDwTXX?=ϼ,~}(,,t>|XjX֔;F*"""+$Ij0rKOO[paPrr2n߱ķ~'N8;x<QU6*"""7-eI&DCllߴi0n8FFL&l6Ȳ YӃX,oMMRSS#$XaZ_p@EDDDb9b2h43TU zzUUun[$$.l|rTLL_O;1eIENDB`libssc/libssc.map000066400000000000000000000043561515656607000143360ustar00rootroot00000000000000LIBSSC_0.4.0 { global: ssc_sensor_accelerometer_new; ssc_sensor_accelerometer_new_finish; ssc_sensor_accelerometer_new_sync; ssc_sensor_accelerometer_open; ssc_sensor_accelerometer_open_finish; ssc_sensor_accelerometer_open_sync; ssc_sensor_accelerometer_close; ssc_sensor_accelerometer_close_finish; ssc_sensor_accelerometer_close_sync; ssc_sensor_compass_new; ssc_sensor_compass_new_finish; ssc_sensor_compass_new_sync; ssc_sensor_compass_open; ssc_sensor_compass_open_finish; ssc_sensor_compass_open_sync; ssc_sensor_compass_close; ssc_sensor_compass_close_finish; ssc_sensor_compass_close_sync; ssc_sensor_gyroscope_new; ssc_sensor_gyroscope_new_finish; ssc_sensor_gyroscope_new_sync; ssc_sensor_gyroscope_open; ssc_sensor_gyroscope_open_finish; ssc_sensor_gyroscope_open_sync; ssc_sensor_gyroscope_close; ssc_sensor_gyroscope_close_finish; ssc_sensor_gyroscope_close_sync; ssc_sensor_light_new; ssc_sensor_light_new_finish; ssc_sensor_light_new_sync; ssc_sensor_light_open; ssc_sensor_light_open_finish; ssc_sensor_light_open_sync; ssc_sensor_light_close; ssc_sensor_light_close_finish; ssc_sensor_light_close_sync; ssc_sensor_magnetometer_new; ssc_sensor_magnetometer_new_finish; ssc_sensor_magnetometer_new_sync; ssc_sensor_magnetometer_open; ssc_sensor_magnetometer_open_finish; ssc_sensor_magnetometer_open_sync; ssc_sensor_magnetometer_close; ssc_sensor_magnetometer_close_finish; ssc_sensor_magnetometer_close_sync; ssc_sensor_proximity_new; ssc_sensor_proximity_new_finish; ssc_sensor_proximity_new_sync; ssc_sensor_proximity_open; ssc_sensor_proximity_open_finish; ssc_sensor_proximity_open_sync; ssc_sensor_proximity_close; ssc_sensor_proximity_close_finish; ssc_sensor_proximity_close_sync; ssc_sensor_new; ssc_sensor_new_finish; ssc_sensor_new_sync; ssc_sensor_open; ssc_sensor_open_finish; ssc_sensor_open_sync; ssc_sensor_close; ssc_sensor_close_finish; ssc_sensor_close_sync; ssc_sensor_get_type; ssc_sensor_accelerometer_get_type; ssc_sensor_compass_get_type; ssc_sensor_gyroscope_get_type; ssc_sensor_light_get_type; ssc_sensor_magnetometer_get_type; ssc_sensor_proximity_get_type; ssc_sensor_error_quark; local: *; }; libssc/meson.build000066400000000000000000000060701515656607000145150ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-or-later # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # project( 'libssc', 'c', version: '0.4.2', license: 'GPL3', default_options: [ 'buildtype=debugoptimized', 'c_std=gnu99', 'warning_level=2', ], meson_version: '>= 1.4.0', ) libssc_name = meson.project_name() libssc_version = meson.project_version() version_array = libssc_version.split('.') libssc_version_major = version_array[0].to_int() libssc_version_minor = version_array[1].to_int() libssc_version_patch = version_array[2].to_int() version_conf = configuration_data() version_conf.set('VERSION', libssc_version) version_conf.set('LIBSSC_MAJOR_VERSION', libssc_version_major) version_conf.set('LIBSSC_MINOR_VERSION', libssc_version_minor) version_conf.set('LIBSSC_PATCH_VERSION', libssc_version_patch) pkg = import('pkgconfig') libssc_includedir = get_option('includedir') libssc_glib_include_subdir = libssc_name libssc_glib_pkgincludedir = libssc_includedir / libssc_glib_include_subdir libssc_mocking_dir = libssc_includedir / libssc_name / 'mocking' cc = meson.get_compiler('c') cc_flags = cc.get_supported_arguments([ '-Wno-unused-parameter', '-Wno-cast-function-type', '-Wno-packed', ]) add_project_arguments(cc_flags, language: 'c') glib_version = '2.56' libqmi_version = '1.33.4' c_flags = [ '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_' + glib_version.underscorify(), '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_' + glib_version.underscorify(), '-DGLIB_DISABLE_DEPRECATION_WARNINGS', '-DG_LOG_DOMAIN="libssc"', ] glib_dep = dependency('glib-2.0', version: '>= ' + glib_version) gio_unix_dep = dependency('gio-unix-2.0') libqmi_dep = dependency('qmi-glib', version: '>=' + libqmi_version) protobufc_dep = dependency('libprotobuf-c') m_dep = cc.find_library('m', required: true) protocc_tool = find_program('protoc', 'protoc-gen-c') protoc_tool = find_program('protoc', 'protoc') deps = [ glib_dep, dependency('gio-2.0'), dependency('gobject-2.0'), libqmi_dep, protobufc_dep, m_dep ] glib_deps = declare_dependency( dependencies: deps, compile_args: c_flags ) top_inc = include_directories('.') data_inc = include_directories('./data') src_inc = include_directories('./src') includes = [top_inc, data_inc, src_inc] sources = files() headers = files() map_source = files('libssc.map') subdir('data') subdir('src') subdir('mocking') subdir('tests') libssc/mocking/000077500000000000000000000000001515656607000137775ustar00rootroot00000000000000libssc/mocking/.gitignore000066400000000000000000000000251515656607000157640ustar00rootroot00000000000000__pycache__ *_pb2.py libssc/mocking/data/000077500000000000000000000000001515656607000147105ustar00rootroot00000000000000libssc/mocking/data/meson.build000066400000000000000000000011741515656607000170550ustar00rootroot00000000000000mocking_config_sources = files( 'sensor-accelerometer.json', 'sensor-magnetometer.json', 'sensor-proximity.json', 'sensor-rotationvector.json', 'sensor-light.json', 'sensor-no-sample-rate.json', 'sensor-registry.json', 'sensor-unavailable.json' ) custom_target( 'copy-mocking-configure', input: mocking_config_sources, output: ['sensor-accelerometer.json', 'sensor-magnetometer.json', 'sensor-proximity.json', 'sensor-rotationvector.json', 'sensor-light.json', 'sensor-no-sample-rate.json', 'sensor-registry.json', 'sensor-unavailable.json'], command: ['cp', '@INPUT@', '@OUTDIR@'], build_by_default: true ) libssc/mocking/data/sensor-accelerometer.json000066400000000000000000000022211515656607000217210ustar00rootroot00000000000000{ "sensor": { "data_type": "accel", "uid_high": "0x0000000000000002", "uid_low": "0x0000000000000002" }, "attributes": { "name": { "id": 0, "value": "accelerometer-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 0 }, "mount_matrix": { "id": 20, "value": [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] } }, "measurements": [ { "id": 1025, "acceleration": [0.0, 0.0, -9.81], "accuracy": 3 }, { "id": 1025, "acceleration": [2.5, 1.5, 0.0], "accuracy": 3 }, { "id": 1025, "acceleration": [-2.5, -1.5, 0.0], "accuracy": 3 }, { "id": 1025, "acceleration": [0.0, 0.0, 0.0], "accuracy": 3 }, { "id": 1025, "acceleration": [0.0, 0.0, 0.0], "accuracy": 3 }, { "id": 1025, "acceleration": [1.0, 1.0, 1.0], "accuracy": 3 }, { "id": 1025, "acceleration": [1.0, 1.0, 1.0], "accuracy": 2 }, { "id": 1025, "acceleration": [1.0, 1.0, 1.0], "accuracy": 1 }, { "id": 1025, "acceleration": [1.0, 1.0, 1.0], "accuracy": 0 } ] } libssc/mocking/data/sensor-light.json000066400000000000000000000017701515656607000202260ustar00rootroot00000000000000{ "sensor": { "data_type": "ambient_light", "uid_high": "0x0000000000000004", "uid_low": "0x0000000000000004" }, "attributes": { "name": { "id": 0, "value": "light-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 0 } }, "measurements": [ { "id": 1025, "intensity": [5.0, 42.0], "accuracy": 3 }, { "id": 1025, "intensity": [7.0, 50.0], "accuracy": 3 }, { "id": 1025, "intensity": [1.0, 30.0], "accuracy": 3 }, { "id": 1025, "intensity": [0.0, 10.0], "accuracy": 3 }, { "id": 1025, "intensity": [-5.0, -42.0], "accuracy": 3 }, { "id": 1025, "intensity": [5.0, 42.0], "accuracy": 3 }, { "id": 1025, "intensity": [5.0, 42.0], "accuracy": 2 }, { "id": 1025, "intensity": [5.0, 42.0], "accuracy": 1 }, { "id": 1025, "intensity": [5.0, 42.0], "accuracy": 0 } ] } libssc/mocking/data/sensor-magnetometer.json000066400000000000000000000021041515656607000215760ustar00rootroot00000000000000{ "sensor": { "data_type": "mag", "uid_high": "0x0000000000000003", "uid_low": "0x0000000000000003" }, "attributes": { "name": { "id": 0, "value": "magnetometer-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 0 } }, "measurements": [ { "id": 1025, "magnetic_field": [0.1, 0.2, 0.3], "accuracy": 3 }, { "id": 1025, "magnetic_field": [0.3, 0.2, 0.1], "accuracy": 3 }, { "id": 1025, "magnetic_field": [0.3, 0.2, 0.1], "accuracy": 3 }, { "id": 1025, "magnetic_field": [0.0, 0.0, 0.0], "accuracy": 3 }, { "id": 1025, "magnetic_field": [0.0, 0.0, 0.0], "accuracy": 3 }, { "id": 1025, "magnetic_field": [1.0, 1.0, 1.0], "accuracy": 3 }, { "id": 1025, "magnetic_field": [1.0, 1.0, 1.0], "accuracy": 2 }, { "id": 1025, "magnetic_field": [1.0, 1.0, 1.0], "accuracy": 1 }, { "id": 1025, "magnetic_field": [1.0, 1.0, 1.0], "accuracy": 0 } ] } libssc/mocking/data/sensor-no-sample-rate.json000066400000000000000000000005351515656607000217410ustar00rootroot00000000000000{ "sensor": { "data_type": "no-sample-rate", "uid_high": "0x0000000000000007", "uid_low": "0x0000000000000007" }, "attributes": { "name": { "id": 0, "value": "no-sample-rate-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "stream_type": { "id": 16, "value": 0 } }, "measurements": [] } libssc/mocking/data/sensor-proximity.json000066400000000000000000000023471515656607000211640ustar00rootroot00000000000000{ "sensor": { "data_type": "proximity", "uid_high": "0x0000000000000001", "uid_low": "0x0000000000000001" }, "attributes": { "name": { "id": 0, "value": "proximity-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 1 } }, "measurements": [ { "id": 769, "near": 0, "distance": 10, "accuracy": 3 }, { "id": 769, "near": 1, "distance": 1, "accuracy": 3 }, { "id": 769, "near": 0, "distance": 17, "accuracy": 3 }, { "id": 769, "near": 0, "distance": 17, "accuracy": 3 }, { "id": 769, "near": 1, "distance": 0, "accuracy": 3 }, { "id": 769, "near": 1, "distance": 0, "accuracy": 3 }, { "id": 769, "near": 1, "distance": 0, "accuracy": 3 }, { "id": 769, "near": 0, "distance": 20, "accuracy": 2 }, { "id": 769, "near": 0, "distance": 20, "accuracy": 1 }, { "id": 769, "near": 0, "distance": 30, "accuracy": 0 }, { "id": 769, "near": 1, "distance": 1, "accuracy": 3 }, { "id": 769, "near": 0, "distance": 15, "accuracy": 3 } ] } libssc/mocking/data/sensor-registry.json000066400000000000000000000005771515656607000207730ustar00rootroot00000000000000{ "sensor": { "data_type": "registry", "uid_high": "0x0000000000000008", "uid_low": "0x0000000000000008" }, "attributes": { "name": { "id": 0, "value": "registry-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 1 } }, "measurements": [ ] } libssc/mocking/data/sensor-rotationvector.json000066400000000000000000000021021515656607000221670ustar00rootroot00000000000000{ "sensor": { "data_type": "rotv", "uid_high": "0x0000000000000005", "uid_low": "0x0000000000000005" }, "attributes": { "name": { "id": 0, "value": "rotationvector-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": true }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 0 } }, "measurements": [ { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 3 }, { "id": 1025, "rotation": [2.0, 4.0, 0.0, 1.0], "accuracy": 3 }, { "id": 1025, "rotation": [0.0, 0.0, 0.0, 0.0], "accuracy": 3 }, { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 3 }, { "id": 1025, "rotation": [-1.0, -2.0, -3.0, -4.0], "accuracy": 3 }, { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 3 }, { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 2 }, { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 1 }, { "id": 1025, "rotation": [1.0, 2.0, 3.0, 4.0], "accuracy": 0 } ] } libssc/mocking/data/sensor-unavailable.json000066400000000000000000000006041515656607000213750ustar00rootroot00000000000000{ "sensor": { "data_type": "unavailable", "uid_high": "0x0000000000000006", "uid_low": "0x0000000000000006" }, "attributes": { "name": { "id": 0, "value": "unavailable-mock" }, "vendor": { "id": 1, "value": "libssc" }, "available": { "id": 3, "value": false }, "sample_rate": { "id": 6, "value": 5.0 }, "stream_type": { "id": 16, "value": 1 } }, "measurements": [] } libssc/mocking/meson.build000066400000000000000000000011241515656607000161370ustar00rootroot00000000000000pymod = import('python') python = pymod.find_installation() python.dependency() mocking_sources = files( 'qmi.py', 'ssc.py', 'ssc-server', 'ssc-server-tests' ) python.install_sources(mocking_sources) install_data('ssc-server', install_dir: get_option('bindir')) install_data('ssc-server-tests', install_dir: get_option('bindir')) # Make the SSC Server available during tests custom_target( 'ssc-mocking', input: mocking_sources, output: ['qmi.py', 'ssc.py', 'ssc-server', 'ssc-server-tests'], command: ['cp', '@INPUT@', '@OUTDIR@'], build_by_default: true ) subdir('data') libssc/mocking/qmi.py000066400000000000000000000150541515656607000151440ustar00rootroot00000000000000#!/usr/bin/env python3 # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # import sys from enum import Enum from typing import Tuple class ValueType(Enum): INT = 0 ARRAY = 1 SEQUENCE = 2 class MessageType(Enum): REQUEST = 0 RESPONSE = 2 INDICATION = 4 UNKNOWN = sys.maxsize class QMI(): """QMI messages encoding and decoding functions.""" @staticmethod def parse_header(message: bytes) -> Tuple[MessageType, int, int, bytes]: """ Parse a QMI header to extract: - Type of message (uint8) - Transaction ID (uint16) - Message ID (uint16) - Message length (uint16) Parameters ---------- message : bytes Raw QMI message as bytes (little endian). Returns ------- message_type : MessageType Type of message e.g., REQUEST, RESPONSE, or INDICATION. transaction_id : int ID of the transaction for concurrent messages. message_id : int ID of the message, specific for the QMI service. message_length : int Length of the message in bytes. """ # QMI message type if message[0] == MessageType.REQUEST.value: message_type = MessageType.REQUEST elif message[0] == MessageType.RESPONSE.value: message_type = MessageType.RESPONSE elif message[0] == MessageType.INDICATION.value: message_type = MessageType.INDICATION else: print(f'Unknown message type: {message[0]}', file=sys.stderr) message_type = MessageType.UNKNOWN # QMI transaction ID transaction_id = int.from_bytes(message[1:3], byteorder='little') # QMI message ID message_id = int.from_bytes(message[3:5], byteorder='little') # QMI message length message_length = int.from_bytes(message[5:7], byteorder='little') return message_type, transaction_id, message_id, message_length @staticmethod def generate_header(message_type: MessageType, transaction_id: int, message_id: int) -> bytes: """ Generate a QMI message with no TLVs and a QMI header. Parameters ---------- message_type : MessageType Type of QMI message transaction_id : int ID of the transaction. message_id : int ID of the message for the specific QMI service. Returns ------- message : bytes Raw QMI message as bytes (little endian). """ message = bytes() message += message_type.value.to_bytes(1, byteorder='little') message += transaction_id.to_bytes(2, byteorder='little') message += message_id.to_bytes(2, byteorder='little') message += (len(message) + 2).to_bytes(2, byteorder='little') return message @staticmethod def parse_tlv(message: bytes, tlv: int, value_type: ValueType) -> Tuple[int, int, bytes]: """ Parse QMI TLV in a QMI message to extract: - Type (uint8) - Length (uint16) - Value (bytes) Parameters ---------- message : bytes Raw QMI message as bytes (little endian). Returns ------- tlvs : dict Dictionary of TLVs extracted with Type as dictionary's key and Value as dictionary's value. Length is implied. """ message_type, transaction_id, message_id, message_length = QMI.parse_header(message) # Strip QMI header tlvs = message[7:] # Iterate over all TLVs offset = 0 tlv_id = 0 while offset < len(tlvs): tlv_type = int.from_bytes(tlvs[0+offset:1+offset], byteorder='little') tlv_length = int.from_bytes(tlvs[1+offset:3+offset], byteorder='little') tlv_value = tlvs[3+offset:3+tlv_length+offset] offset += 1 + 2 + tlv_length tlv_id += 1 # Strip array length from QMI TLV value if value_type == ValueType.INT or value_type == ValueType.SEQUENCE: tlv_value = int.from_bytes(tlv_value, byteorder='little') elif value_type == ValueType.ARRAY: tlv_value = tlv_value[2:] # Look for TLV in message, skip others if tlv != tlv_type: continue return tlv_type, tlv_length, tlv_value @staticmethod def generate_tlv(message: bytes, tlv_id: int, tlv_value: bytes, value_type: ValueType) -> bytes: """ Generate a QMI TLV and add it to the message. Parameters ---------- message : bytes Raw QMI message as bytes (little endian). tlv_id : int TLV Type. tlv_value : bytes TLV Value. value_type : ValueType Type of the TLV Value. Returns ------- message : bytes Raw QMI message as bytes (little endian). """ # Add TLV and calculate its length message += tlv_id.to_bytes(1, byteorder='little') if value_type == ValueType.ARRAY: message += (len(tlv_value) + 2).to_bytes(2, byteorder='little') elif value_type == ValueType.INT or value_type == ValueType.SEQUENCE: message += len(tlv_value).to_bytes(2, byteorder='little') else: print(f'Unknown value type: {value_type}', file=sys.stderr) if value_type == ValueType.ARRAY: value_array_length = len(tlv_value) message += value_array_length.to_bytes(2, byteorder='little') message += tlv_value # Update QMI header length qmi_length = int.from_bytes(message[5:7], byteorder='little') message = message[:5] + \ (len(message) - 7).to_bytes(2, byteorder='little') + \ message[7:] return message libssc/mocking/qrtr/000077500000000000000000000000001515656607000147675ustar00rootroot00000000000000libssc/mocking/ssc-server000077500000000000000000000321051515656607000160220ustar00rootroot00000000000000#!/usr/bin/env python3 # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # import os import gi import sys import time import errno import signal import socket import argparse import sysconfig import multiprocessing as mp from ctypes import CDLL, c_int, byref, c_char_p, addressof, create_string_buffer, Structure # Import build path for running unittests sys.path.append(os.path.join(os.path.dirname(__file__), '../output/data')) sys.path.append(os.path.join(os.path.dirname(__file__), '../_build/data')) sys.path.append(os.path.join(os.path.dirname(__file__), '../data')) from ssc import * VERSION = '0.4.2' SSC_SERVICE_ID = 0x190 SSC_SERVICE_VERSION = 1 SSC_SERVICE_INSTANCE = 0 QMI_REQUEST = 0x0 QRTR_REQUEST = 0x6 ERROR_OK = 0 ERROR_QRTR_PORT_UNAVAILABLE = 1 ERROR_QRTR_SERVER_FAILURE = 2 ERROR_SKIP_TEST = 77 def supports_af_qipcrtr(): try: socket.socket(socket.AF_QIPCRTR, socket.SOCK_DGRAM, 0) except OSError as e: if e.errno == errno.EPROTONOSUPPORT or e.errno == errno.EAFNOSUPPORT: print('❌ QIPCRTR protocol not supported by the kernel, check modules') return False raise e return True def signal_handler(sig, frame): # Clear message buffer print('') sys.exit(0) class SSCMockingServer(): """ SSC Server mocking class. """ _qrtr = None sock = None def __init__(self, port: int = 0, verbose: bool = False): """ Create a mocking server for the SSC QMI service using libqrtr from a QRTR socket. Starts up a server on a random port unless specified. Parameters ---------- port: int Port number to use, default 0 which results into a random port number. verbose : bool Log raw messages. Default False. """ self.workers = {} self._qrtr = None multiarch = sysconfig.get_config_var('MULTIARCH') print(f'👋 SSC Mocking Server v{VERSION}') err = None for path in [ # Local git submodule os.path.join(os.path.dirname(__file__), './qrtr/_build/lib/libqrtr.so'), # Installed in OS (Alpine) '/usr/lib/libqrtr.so.1', # Installed in OS (Debian) f'/usr/lib/{multiarch}/libqrtr.so.1' ]: try: if not os.path.exists(path): continue print(f'ℹ️ Using QRTR library from {path}') self._qrtr = CDLL(path) break except OSError as e: err = e continue err = None if err: print(f'❌ Failed to load libqrtr: {err}', file=sys.stderr) sys.exit(ERROR_QRTR_PORT_UNAVAILABLE) print('ℹ️ Creating QRTR socket') self.sock = self._qrtr.qrtr_open(port) if self.sock < 0: print('❌ Failed to open QRTR port', file=sys.stderr) sys.exit(ERROR_QRTR_PORT_UNAVAILABLE) print(f'ℹ️ Starting QRTR server (service {SSC_SERVICE_ID})') error = self._qrtr.qrtr_new_server(self.sock, SSC_SERVICE_ID, SSC_SERVICE_VERSION, SSC_SERVICE_INSTANCE) self._verbose = verbose if self._verbose: print('ℹ️ Verbose mode enabled') def start(self): self._process() def _debug(self, msg: str): if self._verbose: print(msg) def _receive_msg(self, buffer_size: int): node = c_int() port = c_int() buf = create_string_buffer(buffer_size) length = 0 length = self._qrtr.qrtr_recvfrom(self.sock, c_char_p(addressof(buf)), buffer_size, byref(node), byref(port)) if length <= 0: print(f'❌ Unable to receive QRTR message (error {error})', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) incoming_msg = ' '.join(list(map(hex, buf[0:length]))) self._debug(f'📥 Incoming MSG ({SSC_SERVICE_ID}@[{node.value}:{port.value}] {length} bytes): {incoming_msg}') return node, port, buf[0:length] def _sensor_measurement(self, uid_high: int, uid_low: int, node, port, transaction_id: int): print('ℹ️ Sending sensor measurements...') index = 0 while True: # Generate sensor measurement print(f'ℹ️ Measurement {index + 1}') data = SSC.generate_protobuf_sensor_measurement(uid_high, uid_low, index) buf = SSC.generate_report_large_indication(data, transaction_id) # Stop worker when QRTR device dissappears if self._qrtr.qrtr_sendto(self.sock, node, port, c_char_p(buf), len(buf)) != 0: break reply_msg = ' '.join(list(map(hex, buf))) self._debug(f'📤 Indication MSG ({SSC_SERVICE_ID}@[{node.value}:{port.value}] {len(buf)} bytes): {reply_msg}') # Send measurements at 10 Hz time.sleep(0.1) index += 1 def _reply_msg(self, node: int, port: int, incoming_msg: list): data = [] if incoming_msg[0] == QMI_REQUEST: # Send QMI Success reply report_type, data, transaction_id = SSC.parse_message_control_input(incoming_msg) buf = SSC.generate_message_control_output(transaction_id) if self._qrtr.qrtr_sendto(self.sock, node, port, c_char_p(buf), len(buf)) != 0: print(f'❌ Failed to send QMI Success message to QRTR node', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) reply_msg = ' '.join(list(map(hex, buf))) self._debug(f'📤 Outgoing MSG ({SSC_SERVICE_ID}@[{node.value}:{port.value}] {len(buf)} bytes): {reply_msg}') # Send QMI indication with actual data message_id, uid_high, uid_low = SSC.parse_protobuf_client_request(data) # SUID sensor discovery message if message_id == SSC_PROTOBUF_DISCOVER_MSG_ID and uid_high == SSC_SUID_SENSOR_UID_HIGH and uid_low == SSC_SUID_SENSOR_UID_LOW: sensor = SSC.parse_protobuf_discovery_request(data) print(f'ℹ️ Discovering sensors for data type {sensor}') data = SSC.generate_protobuf_discovery_response(sensor) buf = SSC.generate_report_large_indication(data, transaction_id) if self._qrtr.qrtr_sendto(self.sock, node, port, c_char_p(buf), len(buf)) != 0: print(f'❌ Failed to send Protobuf Discovery message to QRTR node', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) reply_msg = ' '.join(list(map(hex, buf))) self._debug(f'📤 Indication MSG ({SSC_SERVICE_ID}@[{node.value}:{port.value}] {len(buf)} bytes): {reply_msg}') # Sensor attribute request message elif message_id == SSC_PROTOBUF_GET_ATTRIBUTE_MSG_ID: print(f'ℹ️ Sensor {uid_high},{uid_low} getting attributes') data = SSC.generate_protobuf_attributes_response(uid_high, uid_low) buf = SSC.generate_report_large_indication(data, transaction_id) if self._qrtr.qrtr_sendto(self.sock, node, port, c_char_p(buf), len(buf)) != 0: print(f'❌ Failed to send Protobuf Get Attributes message to QRTR node', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) reply_msg = ' '.join(list(map(hex, buf))) self._debug(f'📤 Indication MSG ({SSC_SERVICE_ID}@[{node.value}:{port.value}] {len(buf)} bytes): {reply_msg}') # Sensor enabled, send data elif message_id == SSC_PROTOBUF_ENABLE_REPORT_MSG_ID or message_id == SSC_PROTOBUF_ENABLE_CONTINUOUS_MSG_ID: uid = f'{uid_high},{uid_low}' if uid in self.workers: print(f'⚠️ Sensor {uid_high},{uid_low} already enabled', file=sys.stderr) return print(f'ℹ️ Enabling sensor {uid}') self.workers[uid] = mp.Process(target=self._sensor_measurement, args=(uid_high, uid_low, node, port, transaction_id)) self.workers[uid].start() # Sensor disabled, stop sending data elif message_id == SSC_PROTOBUF_DISABLE_REPORT_MSG_ID: uid = f'{uid_high},{uid_low}' if uid not in self.workers: print(f'⚠️ Sensor {uid_high},{uid_low} not enabled yet', file=sys.stderr) return print(f'ℹ️ Disabling sensor {uid}') self.workers[uid].terminate() self.workers[uid].join() del self.workers[uid] else: print(f'⚠️ Cannot send QMI indication, unsupported Protobuf message ({message_id})', file=sys.stderr) elif incoming_msg[0] == QRTR_REQUEST: print('ℹ️ QRTR request') else: print('⚠️ Cannot reply to QMI message which is not a request', file=sys.stderr) def _process(self, timeout: int = -1, buffer_size: int = 65536): """ Waits for incoming QRTR messages to respond to. If timeout is specified, this method returns immediately after receiving a message. If not, this method keeps listening continuously. Parameters ---------- timeout : int Timeout for polling to wait for new messages in milliseconds. buffer_size : int Size of the buffer to receive messages, default 65536 bytes. """ print(f'⌛ Waiting for MSGs') while True: # Wait for messages error = self._qrtr.qrtr_poll(self.sock, timeout); if error < 0 and error != errno.EINTR: print('❌ Polling QRTR socket failed', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) # Receive message node_id, port_id, incoming_msg = self._receive_msg(buffer_size) # Reply message if needed self._reply_msg(node_id, port_id, incoming_msg) # Break out if not listen indefinitely if timeout > -1: break def __del__(self): """ Shutdowns sensor measurement process, QRTR server, and socket when object is disposed. """ print(f'ℹ️ Stopping sensor measurement workers') for worker in self.workers: self.workers[worker].terminate() self.workers[worker].join() print(f'ℹ️ Shutting down QRTR server (service {SSC_SERVICE_ID})') if self._qrtr is not None: if self.sock: error = self._qrtr.qrtr_remove_server(self.sock, SSC_SERVICE_ID) if error: print('❌ Failed to shutdown QRTR server', file=sys.stderr) sys.exit(ERROR_QRTR_SERVER_FAILURE) print('ℹ️ Closing QRTR socket') self._qrtr.qrtr_close(self.sock) print('👋 Bye!') def server_start(server): server.start() def server_stop(server): del server if __name__ == '__main__': mp.set_start_method('fork') parser = argparse.ArgumentParser(prog='ssc-server', description='SSC QMI service server mocking', epilog='GPLv3 license, copyright (c) by libssc authors (2024)') parser.add_argument('test', default=None, nargs='?') parser.add_argument('-p', '--port', type=int, default=0) parser.add_argument('--verbose', action='store_true', default=False) args = parser.parse_args() signal.signal(signal.SIGINT, signal_handler) # Let Meson skip tests if QIPCRTR protocol is unavailable if not supports_af_qipcrtr(): sys.exit(ERROR_SKIP_TEST) # Run test if provided if args.test is not None: # No-service test assumes no SSC service, do not start server if 'no-service' not in args.test: server = SSCMockingServer(args.port, args.verbose) p = mp.Process(target=server_start, args=(server,)) p.start() code = ERROR_OK code = os.system(args.test) if code != 0: print(f'❌ Test {args.test} finished with exit code {code}') if 'no-service' not in args.test: p.terminate() p.join() sys.exit(code) else: server = SSCMockingServer(args.port, args.verbose) server_start(server) libssc/mocking/ssc-server-tests000077500000000000000000000217421515656607000171670ustar00rootroot00000000000000#!/usr/bin/env python3 # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # import unittest from unittest import mock from qmi import QMI, MessageType, ValueType from ssc import * QMI_SSC_CONTROL_MESSAGE = b'\x00\x01\x00 \x00;\x00\x10\x01\x00\x01\x014\x002\x00\n' + \ b'\x12\t\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab' + \ b'\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01' + \ b'\x10\x00"\x11\x12\x0f\n\tproximity\x10\x00\x18\x01' PROTOBUF_SSC_DISCOVERY_MESSAGE = b'\n\x12\t\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab' + \ b'\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00' + \ b'\x1a\x04\x08\x01\x10\x00"\x11\x12\x0f\n\tproximity' + \ b'\x10\x00\x18\x01' class TestQMI(unittest.TestCase): """QMI encoding and decoding tests""" def test_parse_header(self): message_type, transaction_id, message_id, message_length = QMI.parse_header(QMI_SSC_CONTROL_MESSAGE) self.assertTrue(message_type == MessageType.REQUEST) self.assertTrue(transaction_id == 0x1) self.assertTrue(message_id == 0x20) self.assertTrue(message_length == 0x3B) def test_parse_tlv_int(self): tlv_type, tlv_length, tlv_value = QMI.parse_tlv(QMI_SSC_CONTROL_MESSAGE, SSC_CONTROL_MSG_REPORT_TYPE_ID, ValueType.INT) self.assertTrue(tlv_type == SSC_CONTROL_MSG_REPORT_TYPE_ID) self.assertTrue(tlv_length == 0x1) self.assertTrue(tlv_value == 0x1) def test_parse_tlv_array(self): tlv_type, tlv_length, tlv_value = QMI.parse_tlv(QMI_SSC_CONTROL_MESSAGE, SSC_CONTROL_MSG_DATA_ID, ValueType.ARRAY) self.assertTrue(tlv_type == SSC_CONTROL_MSG_DATA_ID) self.assertTrue(tlv_length == 0x34) self.assertTrue(len(tlv_value) == 0x32) def test_generate_header(self): message = QMI.generate_header(MessageType.REQUEST, 1, SSC_CONTROL_MSG_ID) self.assertTrue(message == bytes([0x0, 0x1, 0x0, 0x20, 0x0, 0x7, 0x0])) def test_generate_tlv(self): message = QMI.generate_header(MessageType.REQUEST, 1, SSC_CONTROL_MSG_ID) value = ReportType.LARGE.value.to_bytes(1, byteorder='little') message = QMI.generate_tlv(message, SSC_CONTROL_MSG_REPORT_TYPE_ID, value, ValueType.INT) value = b'\n\x12\t\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab' + \ b'\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00"' + \ b'\x11\x12\x0f\n\tproximity\x10\x00\x18\x01' message = QMI.generate_tlv(message, SSC_CONTROL_MSG_DATA_ID, value, ValueType.ARRAY) self.assertTrue(message == QMI_SSC_CONTROL_MESSAGE) class TestSSC(unittest.TestCase): """Snapdragon Sensor Core QMI messages tests""" def test_parse_qmi_message_control_input(self): report_type, data, transaction_id = SSC.parse_message_control_input(QMI_SSC_CONTROL_MESSAGE) self.assertTrue(report_type == ReportType.LARGE) self.assertTrue(len(data) == 0x32) self.assertTrue(transaction_id == 0x1) def test_generate_qmi_report_large_indication(self): expected = b'\x04\x01\x00"\x00\x10\x00\x01\x08\x00\x01\x00\x00\x00\x00\x00\x00' + \ b'\x00\x02\x02\x00\x00\x00' buf = SSC.generate_report_large_indication(bytes(), 1) self.assertTrue(buf == expected) def test_generate_qmi_report_small_indication(self): expected = b'\x04\x01\x00!\x00\x0c\x00\x01\x04\x00\x01\x00\x00\x00\x02\x02\x00' + \ b'\x00\x00' buf = SSC.generate_report_small_indication(bytes(), 1) self.assertTrue(buf == expected) def test_parse_protobuf_client_request(self): message_id, uid_high, uid_low = SSC.parse_protobuf_client_request(PROTOBUF_SSC_DISCOVERY_MESSAGE) self.assertTrue(message_id == 512) self.assertTrue(uid_high == SSC_SUID_SENSOR_UID_HIGH) self.assertTrue(uid_low == SSC_SUID_SENSOR_UID_LOW) def test_parse_protobuf_discovery_request(self): data_type = SSC.parse_protobuf_discovery_request(PROTOBUF_SSC_DISCOVERY_MESSAGE) self.assertTrue(data_type == 'proximity') @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_discovery_response(self): expected = b'\n\x12\t\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab' + \ b'\xab\xab\xab\xab\x12/\r\x00\x03\x00\x00\x1190\x00\x00\x00\x00' + \ b'\x00\x00\x1a\x1f\n\tproximity\x12\x12\t\x01\x00\x00\x00\x00' + \ b'\x00\x00\x00\x11\x01\x00\x00\x00\x00\x00\x00\x00' buf = SSC.generate_protobuf_discovery_response('proximity') self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_attributes_response(self): expected = b'\n\x12\t\x01\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00' + \ b'\x00\x00\x00\x00\x12`\r\x80\x00\x00\x00\x1190\x00\x00\x00\x00' + \ b'\x00\x00\x1aP\n\x16\x08\x00\x12\x12\n\x10\x12\x0eproximity-mock' + \ b'\n\x0e\x08\x01\x12\n\n\x08\x12\x06libssc\n\x08\x08\x03\x12\x04' + \ b'\n\x02(\x01\n\x0b\x08\x06\x12\x07\n\x05\x1d\x00\x00\xa0@\n\x0f' + \ b'\x08\x10\x12\x0b\n\t!\x01\x00\x00\x00\x00\x00\x00\x00' buf = SSC.generate_protobuf_attributes_response(0x1, 0x1) self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_sensor_measurement_proximity(self): expected = b'\n\x12\t\x01\x00\x00\x00\x00\x00\x00\x00\x11\x01\x00\x00\x00\x00' + \ b'\x00\x00\x00\x12\x16\r\x01\x03\x00\x00\x1190\x00\x00\x00\x00\x00' + \ b'\x00\x1a\x06\x08\x00\x10\n\x18\x03' buf = SSC.generate_protobuf_sensor_measurement(0x1, 0x1, 0) self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_sensor_measurement_accelerometer(self): expected = b'\n\x12\t\x02\x00\x00\x00\x00\x00\x00\x00\x11\x02\x00\x00\x00\x00' + \ b'\x00\x00\x00\x12!\r\x01\x04\x00\x00\x1190\x00\x00\x00\x00\x00\x00' + \ b'\x1a\x11\r\x00\x00\x00\x00\r\x00\x00\x00\x00\r\xc3\xf5\x1c\xc1\x10\x03' buf = SSC.generate_protobuf_sensor_measurement(0x2, 0x2, 0) self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_sensor_measurement_magnetometer(self): expected = b'\n\x12\t\x03\x00\x00\x00\x00\x00\x00\x00\x11\x03\x00\x00\x00\x00' + \ b'\x00\x00\x00\x12!\r\x01\x04\x00\x00\x1190\x00\x00\x00\x00\x00\x00' + \ b'\x1a\x11\r\xcd\xcc\xcc=\r\xcd\xccL>\r\x9a\x99\x99>\x10\x03' buf = SSC.generate_protobuf_sensor_measurement(0x3, 0x3, 0) self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_sensor_measurement_light(self): expected = b'\n\x12\t\x04\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00' + \ b'\x00\x00\x00\x12\x1c\r\x01\x04\x00\x00\x1190\x00\x00\x00\x00\x00' + \ b'\x00\x1a\x0c\r\x00\x00\xa0@\r\x00\x00(B\x10\x03' buf = SSC.generate_protobuf_sensor_measurement(0x4, 0x4, 0) self.assertTrue(buf == expected) @mock.patch('time.time', mock.MagicMock(return_value=12345)) def test_generate_protobuf_sensor_measurement_rotationvector(self): expected = b'\n\x12\t\x05\x00\x00\x00\x00\x00\x00\x00\x11\x05\x00\x00\x00\x00' + \ b'\x00\x00\x00\x12&\r\x01\x04\x00\x00\x1190\x00\x00\x00\x00\x00\x00' + \ b'\x1a\x16\r\x00\x00\x80?\r\x00\x00\x00@\r\x00\x00@@\r\x00\x00\x80@' + \ b'\x10\x03' buf = SSC.generate_protobuf_sensor_measurement(0x5, 0x5, 0) self.assertTrue(buf == expected) if __name__ == '__main__': unittest.main() libssc/mocking/ssc.py000066400000000000000000000442551515656607000151530ustar00rootroot00000000000000#!/usr/bin/env python3 # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # import os import sys import time import json import random from enum import Enum from typing import Tuple from glob import glob from qmi import QMI, ValueType, MessageType import ssc_sensor_suid_pb2 as SensorSuid import ssc_common_pb2 as SscCommon import ssc_sensor_proximity_pb2 as SensorProximity import ssc_sensor_accelerometer_pb2 as SensorAccelerometer import ssc_sensor_magnetometer_pb2 as SensorMagnetometer import ssc_sensor_light_pb2 as SensorLight import ssc_sensor_rotationvector_pb2 as SensorCompass SSC_SERVICE_ID = 0x190 SSC_CLIENT_ID = 1 SSC_CONTROL_MSG_ID = 0x0020 SSC_CONTROL_MSG_SUCCESS_ID = 0x2 SSC_CONTROL_MSG_REPORT_TYPE_ID = 0x10 SSC_CONTROL_MSG_CLIENT_ID = 0x10 SSC_CONTROL_MSG_DATA_ID = 0x1 SSC_REPORT_SMALL_MSG_ID = 0x0021 SSC_REPORT_SMALL_CLIENT_ID = 0x01 SSC_REPORT_SMALL_DATA = 0x02 SSC_REPORT_LARGE_MSG_ID = 0x0022 SSC_REPORT_LARGE_CLIENT_ID = 0x01 SSC_REPORT_LARGE_DATA = 0x02 SSC_SUID_SENSOR_UID_HIGH = 0xABABABABABABABAB SSC_SUID_SENSOR_UID_LOW = 0xABABABABABABABAB SSC_PROTOBUF_DISCOVERY_MSG_ID = 768 SSC_PROTOBUF_DISCOVER_MSG_ID = 512 SSC_PROTOBUF_GET_ATTRIBUTE_MSG_ID = 1 SSC_PROTOBUF_RESPONSE_GET_ATTRIBUTES_MSG_ID = 128 SSC_PROTOBUF_ENABLE_REPORT_MSG_ID = 514 SSC_PROTOBUF_DISABLE_REPORT_MSG_ID = 10 SSC_PROTOBUF_ENABLE_CONTINUOUS_MSG_ID = 513 class ReportType(Enum): """ SSC report type enum. """ SMALL = 0x0 LARGE = 0x1 UNKNOWN = sys.maxsize class DataType(Enum): """ SSC sensor data types. """ PROXIMITY = 'proximity' ACCELEROMETER = 'accel' MAGNETOMETER = 'mag' LIGHT = 'ambient_light' ROTATIONVECTOR = 'rotv' class SSC(): """ Qualcomm's Snapdragon Sensor Core QMI messages. """ @staticmethod def _read_data() -> dict: """ Read JSON data with sensor configuration and fake measurements. Returns ------- data : dict Sensor configuration and fake measurements. """ data = [] for sensor in glob(os.path.join(os.path.dirname(__file__), 'data', 'sensor-*.json')): with open(sensor) as f: data.append(json.load(f)) return data @staticmethod def parse_message_control_input(message: bytes) -> Tuple[ReportType, bytes, int]: """ Parse a raw QMI SSC Control Message Input from a client. Parameters ---------- message : bytes Raw QMI message to parse. Returns ------- report_type : ReportType Report type requested by client. data : bytes Protobuf data passed by client. transaction_id : int Transaction ID to use for replies. Raises ------ NotImplementedError If the QMI report type is not supported. """ # QMI header validation and transaction ID message_type, transaction_id, message_id, message_length = QMI.parse_header(message) assert message_type == MessageType.REQUEST assert message_id == SSC_CONTROL_MSG_ID # TLV report type tlv_type, tlv_length, tlv_value = QMI.parse_tlv(message, SSC_CONTROL_MSG_REPORT_TYPE_ID, ValueType.INT) if tlv_value == ReportType.SMALL.value: report_type = ReportType.SMALL elif tlv_value == ReportType.LARGE.value: report_type = ReportType.LARGE else: raise NotImplementedError(f'Unknown report type: {tlv_value}') # TLV data tlv_type, tlv_length, tlv_value = QMI.parse_tlv(message, SSC_CONTROL_MSG_DATA_ID, ValueType.ARRAY) data = tlv_value return report_type, data, transaction_id @staticmethod def parse_protobuf_client_request(message: bytes) -> Tuple[int, int, int]: """ Parse a Protobuf client request to extract sensor UID. Parameters ---------- message : bytes Protobuf message to parse. Returns ------- message_id : int ID of the Protobuf message uid_high : int UID 64 bits high. uid_low : int UID 64 bits low. """ client_request = SscCommon.SscClientRequest() client_request.ParseFromString(message) uid_high = client_request.uid.high uid_low = client_request.uid.low message_id = client_request.msg_id return message_id, uid_high, uid_low @staticmethod def parse_protobuf_discovery_request(message: bytes) -> str: """ Parse a Protobuf discovery request to extract the sensor data type to discover. Parameters ---------- message : bytes Protobuf message to parse. Returns ------- data_type : str Sensor data type. """ client_request = SscCommon.SscClientRequest() client_request.ParseFromString(message) suid_request = SensorSuid.SscSuidRequest() suid_request.ParseFromString(client_request.request.msg) data_type = suid_request.data_type return data_type @staticmethod def generate_message_control_output(transaction_id: int) -> bytes: """ Generate a QMI SSC Control Message Output as a reply. Parameters ---------- transaction_id : int QMI transaction ID to use for replies. Returns ------- message : bytes Generated QMI message as raw bytes. """ message = QMI.generate_header(MessageType.RESPONSE, transaction_id, SSC_CONTROL_MSG_ID) # QMI Success response value = bytes() value += int(0x000).to_bytes(2, byteorder='little') value += int(0x000).to_bytes(2, byteorder='little') message = QMI.generate_tlv(message, SSC_CONTROL_MSG_SUCCESS_ID, value, ValueType.SEQUENCE) # SSC Client ID: not used by libssc value = bytes() value += int(SSC_CLIENT_ID).to_bytes(4, byteorder='little') message = QMI.generate_tlv(message, SSC_CONTROL_MSG_CLIENT_ID, value, ValueType.INT) # SSC Response (TODO): not used by libssc return message @staticmethod def generate_protobuf_discovery_response(data_type: str) -> bytes: """ Generates a Protobuf message to discovery a sensor for a given data type. Parameters ---------- data_type : str Sensor to discover for data type. Returns ------- protobuf : bytes Protobuf message in bytes. Raises ------ NotImplementedError If no sensor implementation can be found for the data type. """ # Extract sensor UID by data type data = SSC._read_data() uid_high = None uid_low = None supported = False for entry in data: sensor = entry['sensor'] if sensor['data_type'] == data_type: uid_high = int(sensor['uid_high'], 16) uid_low = int(sensor['uid_low'], 16) supported = True break # Generate discovery response suid_response = SensorSuid.SscSuidResponse() suid_response.data_type = data_type if supported and uid_high is not None and uid_low is not None: sensor_uid = SscCommon.SscUid() sensor_uid.high = uid_high sensor_uid.low = uid_low suid_response.uid.append(sensor_uid) # Protobuf envelope to pack discovery message client_response_body = SscCommon.SscClientResponseBody() client_response_body.msg = suid_response.SerializeToString() client_response_body.msg_id = SSC_PROTOBUF_DISCOVERY_MSG_ID client_response_body.timestamp = int(time.time()) client_response = SscCommon.SscClientResponse() client_response.response.append(client_response_body) client_response.uid.high = SSC_SUID_SENSOR_UID_HIGH client_response.uid.low = SSC_SUID_SENSOR_UID_LOW protobuf = client_response.SerializeToString() return protobuf @staticmethod def generate_protobuf_attributes_response(uid_high: int, uid_low: int) -> bytes: """ Generate a Protobuf message with all attributes of a sensor. Parameters ---------- uid_high : int UID 64 bits high. uid_low : int UID 64 bits low. Returns ------- protobuf : bytes Protobuf message in bytes. Raises ------ NotImplementedError If no attributes can be found for the sensor UID. """ # Extract sensor attributes for requested sensor by UID data = SSC._read_data() attributes = [] for entry in data: sensor = entry['sensor'] if int(sensor['uid_high'], 16) == uid_high and int(sensor['uid_low'], 16) == uid_low: for a in entry['attributes']: attr_id = entry['attributes'][a]['id'] attr_value = entry['attributes'][a]['value'] if type(attr_value) is int: attributes.append((attr_id, SscCommon.SscAttrValue(i=attr_value))) elif type(attr_value) is float: attributes.append((attr_id, SscCommon.SscAttrValue(f=attr_value))) elif type(attr_value) is str: attributes.append((attr_id, SscCommon.SscAttrValue(s=attr_value))) elif type(attr_value) is bool: attributes.append((attr_id, SscCommon.SscAttrValue(b=attr_value))) elif type(attr_value) is list: values = [] # Attributes with lists as type need to be converted to a list of ProtoBuf properties for v in attr_value: if type(v) is int: values.append(SscCommon.SscAttrValue(i=v)) elif type(v) is float: values.append(SscCommon.SscAttrValue(f=v)) elif type(v) is str: values.append(SscCommon.SscAttrValue(s=v)) elif type(v) is bool: values.append(SscCommon.SscAttrValue(b=v)) else: raise NotImplementedError(f'Attribute value type in list unsupported: {v} ({type(v)})') attributes.append((attr_id, values)) else: raise NotImplementedError(f'Attribute value type unsupported: {attr_value} ({type(attr_value)})') break if not attributes: raise NotImplementedError(f'Unable to match sensor {uid_high},{uid_low} with attributes') # Generate attributes response attr_response = SscCommon.SscAttrResponse() for a in attributes: attr = SscCommon.SscAttr() attr_array_value = SscCommon.SscAttrArrayValue() attr.id = a[0] # Attributes with a list need to be repeated if type(a[1]) is list: for element in a[1]: attr.value_array.v.append(element) # Regular attribute else: attr.value_array.v.append(a[1]) attr_response.attr.append(attr) # Protobuf envelope to pack attributes message client_response_body = SscCommon.SscClientResponseBody() client_response_body.msg = attr_response.SerializeToString() client_response_body.msg_id = SSC_PROTOBUF_RESPONSE_GET_ATTRIBUTES_MSG_ID client_response_body.timestamp = int(time.time()) client_response = SscCommon.SscClientResponse() client_response.response.append(client_response_body) client_response.uid.high = uid_high client_response.uid.low = uid_low protobuf = client_response.SerializeToString() return protobuf @staticmethod def generate_protobuf_sensor_measurement(uid_high: int, uid_low: int, index: int) -> bytes: """ Instantiates a Protobuf sensor measurement message. Parameters ---------- uid_high : int UID 64 bits high. uid_low : int UID 64 bits low. Returns ------- protobuf : bytes Protobuf message in bytes. Raises ------ NotImplementedError If no sensor measurements can be found for the sensor UID. """ # Extract sensor measurements for requested sensor by UID data = SSC._read_data() data_type = '' measurements = [] for entry in data: sensor = entry['sensor'] data_type = sensor['data_type'] if int(sensor['uid_high'], 16) == uid_high and int(sensor['uid_low'], 16) == uid_low: while len(entry['measurements']) <= index: index = index - len(entry['measurements']) measurement = entry['measurements'][index] break if not measurement: raise NotImplementedError('Unable to match sensor {uid_high},{uid_low} with measurements') # Generate measurement message based on sensor data type if data_type == DataType.PROXIMITY.value: measurement_response = SensorProximity.SscProximityResponse() measurement_response.near = measurement['near'] measurement_response.distance = measurement['distance'] elif data_type == DataType.ACCELEROMETER.value: measurement_response = SensorAccelerometer.SscAccelerometerResponse() for m in measurement['acceleration']: measurement_response.acceleration.append(m) elif data_type == DataType.MAGNETOMETER.value: measurement_response = SensorMagnetometer.SscMagnetometerResponse() for m in measurement['magnetic_field']: measurement_response.magnetic_field.append(m) elif data_type == DataType.LIGHT.value: measurement_response = SensorLight.SscLightResponse() for m in measurement['intensity']: measurement_response.intensity.append(m) elif data_type == DataType.ROTATIONVECTOR.value: measurement_response = SensorCompass.SscRotationvectorResponse() for m in measurement['rotation']: measurement_response.rotation.append(m) else: raise NotImplementedError(f'Unsupported sensor {uid_high},{uid_low} for measurement generation') measurement_response.accuracy = measurement['accuracy'] # Protobuf envelope to pack measurement message client_response_body = SscCommon.SscClientResponseBody() client_response_body.msg = measurement_response.SerializeToString() client_response_body.msg_id = measurement['id'] client_response_body.timestamp = int(time.time()) client_response = SscCommon.SscClientResponse() client_response.response.append(client_response_body) client_response.uid.high = uid_high client_response.uid.low = uid_low protobuf = client_response.SerializeToString() return protobuf @staticmethod def generate_report_large_indication(data: bytes, transaction_id: int) -> bytes: """ Instantiates a QMI SSC Report Large as a QMI indication. Parameters ---------- data : bytes Protobuf binary data to pass along. transaction_id : int QMI transaction ID to use for replies. Returns ------- msg : bytes The indication message as bytes. """ message = QMI.generate_header(MessageType.INDICATION, transaction_id, SSC_REPORT_LARGE_MSG_ID) # SSC Client ID value = bytes() value += int(SSC_CLIENT_ID).to_bytes(8, byteorder='little') message = QMI.generate_tlv(message, SSC_REPORT_LARGE_CLIENT_ID, value, ValueType.INT) # SSC Data message = QMI.generate_tlv(message, SSC_REPORT_LARGE_DATA, data, ValueType.ARRAY) return message @staticmethod def generate_report_small_indication(data: bytes, transaction_id: int) -> bytes: """ Instantiates a QMI SSC Small Large as a QMI indication. Parameters ---------- data : bytes Protobuf binary data to pass along. transaction_id : int QMI transaction ID to use for replies. Returns ------- msg : bytes The indication message as bytes. """ message = QMI.generate_header(MessageType.INDICATION, transaction_id, SSC_REPORT_SMALL_MSG_ID) # SSC Client ID value = bytes() value += int(SSC_CLIENT_ID).to_bytes(4, byteorder='little') message = QMI.generate_tlv(message, SSC_REPORT_SMALL_CLIENT_ID, value, ValueType.INT) # SSC Data message = QMI.generate_tlv(message, SSC_REPORT_SMALL_DATA, data, ValueType.ARRAY) return message libssc/src/000077500000000000000000000000001515656607000131375ustar00rootroot00000000000000libssc/src/.gitignore000066400000000000000000000000101515656607000151160ustar00rootroot00000000000000*.patch libssc/src/libssc-cli-private.h000066400000000000000000000026341515656607000170110ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_CLI_H_ #define _LIBSSC_CLI_H_ #include #include #include #include #include #include #include #include #include "libssc-client-private.h" #include "libssc-version-private.h" #include "libssc-sensor.h" #include "libssc-sensor-proximity.h" #include "libssc-sensor-light.h" #include "libssc-sensor-accelerometer.h" #include "libssc-sensor-magnetometer.h" #include "libssc-sensor-compass.h" #include "libssc-sensor-gyroscope.h" typedef struct { GMainLoop *loop; gchar *device_str; SSCClient *client; } SSCCli; #endif /* _LIBSSC_CLI_H_ */ libssc/src/libssc-cli.c000066400000000000000000000247741515656607000153450ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-cli-private.h" #define DEFAULT_ENABLE_SECONDS 10 #define GENERAL_FAIL_EXIT_CODE -1 #define INIT_FAIL_EXIT_CODE -2 #define OPEN_FAIL_EXIT_CODE -3 #define CLOSE_FAIL_EXIT_CODE -4 static gboolean compass_close_cb (SSCSensorCompass *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_compass_close_sync (self, NULL, &err)) g_printf ("Unable to close compass sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("Compass sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void compass_measurement (SSCSensorCompass *sensor, gfloat heading, gpointer user_data) { g_printf ("Compass sensor measurement: %f °\n", heading); fflush(stdout); } /*****************************************************************************/ static gboolean magnetometer_close_cb (SSCSensorMagnetometer *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_magnetometer_close_sync (self, NULL, &err)) g_printf ("Unable to close magnetometer sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("Magnetometer sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void magnetometer_measurement (SSCSensorMagnetometer *sensor, gfloat magnetic_field_x, gfloat magnetic_field_y, gfloat magnetic_field_z, gpointer user_data) { g_printf ("Magnetometer sensor measurement: X=%f Y=%f Z=%f μT\n", magnetic_field_x, magnetic_field_y, magnetic_field_z); fflush(stdout); } /*****************************************************************************/ static gboolean accelerometer_close_cb (SSCSensorAccelerometer *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_accelerometer_close_sync (self, NULL, &err)) g_printf ("Unable to close accelerometer sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("Accelerometer sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void accelerometer_measurement (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y, gfloat accel_z, gpointer user_data) { g_printf ("Accelerometer sensor measurement: X=%f Y=%f Z=%f m/s²\n", accel_x, accel_y, accel_z); fflush(stdout); } /*****************************************************************************/ static gboolean light_close_cb (SSCSensorLight *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_light_close_sync (self, NULL, &err)) g_printf ("Unable to close light sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("Light sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void light_measurement (SSCSensorLight *sensor, gfloat intensity, gpointer user_data) { g_printf ("Light sensor measurement: %f Lux\n", intensity); fflush(stdout); } /*****************************************************************************/ static gboolean proximity_close_cb (SSCSensorProximity *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_proximity_close_sync (self, NULL, &err)) g_printf ("Unable to close proximity sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("Proximity sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void proximity_measurement (SSCSensorProximity *sensor, gboolean near, gpointer user_data) { g_printf ("Proximity sensor measurement: %s\n", near ? "NEAR" : "FAR"); fflush(stdout); } /*****************************************************************************/ static gboolean gyroscope_close_cb (SSCSensorGyroscope *self) { g_autoptr (GError) err = NULL; if (!ssc_sensor_gyroscope_close_sync (self, NULL, &err)) g_printf ("Unable to close gyroscope sensor: %s\n", err ? err->message : "UNKNOWN"); g_debug ("gyroscope sensor disabled"); exit(0); return G_SOURCE_REMOVE; } static void gyroscope_measurement (SSCSensorGyroscope *sensor, gfloat velocity_x, gfloat velocity_y, gfloat velocity_z, gpointer user_data) { g_printf ("Gyroscope sensor measurement: X=%f Y=%f Z=%f m/s\n", velocity_x, velocity_y, velocity_z); fflush(stdout); } /*****************************************************************************/ int main(int argc, char *argv[]) { g_autoptr(GOptionContext) opt_context = NULL; GError *err = NULL; SSCCli cli; gboolean print_version = FALSE; gboolean debug = FALSE; gchar *sensor_str = ""; gint64 timeout = DEFAULT_ENABLE_SECONDS; const GOptionEntry options[] = { { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, "Print version information and exit.", NULL }, { "debug", 'v', 0, G_OPTION_ARG_NONE, &debug, "Enable debug logs.", NULL }, { "sensor", 0, 0, G_OPTION_ARG_STRING, &sensor_str, "Enable a sensor. Supported sensors: 'proximity', 'light', 'accelerometer', 'magnetometer', 'compass'", NULL }, { "timeout", 0, 0, G_OPTION_ARG_INT64, &timeout, "Number of seconds before this will timeout [default 10]", NULL }, { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL } }; opt_context = g_option_context_new ("- CLI tool of libssc for Qualcomm Sensor Core sensors"); g_option_context_add_main_entries (opt_context, options, NULL); if (!g_option_context_parse (opt_context, &argc, &argv, &err)) { g_warning ("Parsing CLI options failed: %s", err->message); return GENERAL_FAIL_EXIT_CODE; } /* Print version and exit */ if (print_version) { printf ("libssc version %d.%d.%d\n", LIBSSC_MAJOR_VERSION, LIBSSC_MINOR_VERSION, LIBSSC_PATCH_VERSION); return 0; } /* Enable debug logs if requested */ if (debug) { if (!g_setenv ("G_MESSAGES_DEBUG", "all", TRUE)) { g_warning ("Failed to enable debug logs"); return EXIT_FAILURE; } qmi_utils_set_traces_enabled (TRUE); qmi_utils_set_show_personal_info (TRUE); g_debug ("Debug messages enabled"); } g_info("libssc %d.%d.%d starting", LIBSSC_MAJOR_VERSION, LIBSSC_MINOR_VERSION, LIBSSC_PATCH_VERSION); if (g_strcmp0 (sensor_str, "proximity") == 0) { SSCSensorProximity *proximity = ssc_sensor_proximity_new_sync (NULL, &err); if (!proximity) { g_printf ("Unable to initialize proximity sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (proximity, "measurement", G_CALLBACK (proximity_measurement), NULL); if (!ssc_sensor_proximity_open_sync (proximity, NULL, &err)) { g_printf ("Unable to open proximity sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)proximity_close_cb, proximity); } else if (g_strcmp0 (sensor_str, "light") == 0) { SSCSensorLight *light = ssc_sensor_light_new_sync (NULL, &err); if (!light) { g_printf ("Unable to initialize light sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (light, "measurement", G_CALLBACK (light_measurement), NULL); if (!ssc_sensor_light_open_sync (light, NULL, &err)) { g_printf ("Unable to open light sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)light_close_cb, light); } else if (g_strcmp0 (sensor_str, "accelerometer") == 0) { SSCSensorAccelerometer *accelerometer = ssc_sensor_accelerometer_new_sync (NULL, &err); if (!accelerometer) { g_printf ("Unable to initialize accelerometer sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (accelerometer, "measurement", G_CALLBACK (accelerometer_measurement), NULL); if (!ssc_sensor_accelerometer_open_sync (accelerometer, NULL, &err)) { g_printf ("Unable to open accelerometer sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)accelerometer_close_cb, accelerometer); } else if (g_strcmp0 (sensor_str, "magnetometer") == 0) { SSCSensorMagnetometer *magnetometer = ssc_sensor_magnetometer_new_sync (NULL, &err); if (!magnetometer) { g_printf ("Unable to initialize magnetometer sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (magnetometer, "measurement", G_CALLBACK (magnetometer_measurement), NULL); if (!ssc_sensor_magnetometer_open_sync (magnetometer, NULL, &err)) { g_printf ("Unable to open magnetometer sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)magnetometer_close_cb, magnetometer); } else if (g_strcmp0 (sensor_str, "compass") == 0) { SSCSensorCompass *compass = ssc_sensor_compass_new_sync (NULL, &err); if (!compass) { g_printf ("Unable to initialize compass sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (compass, "measurement", G_CALLBACK (compass_measurement), NULL); if (!ssc_sensor_compass_open_sync (compass, NULL, &err)) { g_printf ("Unable to open compass sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)compass_close_cb, compass); } else if (g_strcmp0 (sensor_str, "gyroscope") == 0) { SSCSensorGyroscope *gyroscope = ssc_sensor_gyroscope_new_sync (NULL, &err); if (!gyroscope) { g_printf ("Unable to initialize gyroscope sensor: %s\n", err ? err->message : "UNKNOWN"); return INIT_FAIL_EXIT_CODE; } g_signal_connect (gyroscope, "measurement", G_CALLBACK (gyroscope_measurement), NULL); if (!ssc_sensor_gyroscope_open_sync (gyroscope, NULL, &err)) { g_printf ("Unable to open gyroscope sensor: %s\n", err ? err->message : "UNKNOWN"); return OPEN_FAIL_EXIT_CODE; } g_timeout_add_seconds (timeout, (GSourceFunc)gyroscope_close_cb, gyroscope); } else { g_printf ("Specify a supported sensor: 'proximity', 'light', 'accelerometer', 'magnetometer', 'compass', 'gyroscope'\n"); return GENERAL_FAIL_EXIT_CODE; } /* Start GLib main loop */ cli.loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (cli.loop); return 0; } libssc/src/libssc-client-private.h000066400000000000000000000043201515656607000175120ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_CLIENT_H_ #define _LIBSSC_CLIENT_H_ #include #include #include #include #include #include #include #include #include "libssc-common-private.h" #include "libssc-sensor.h" #include "ssc-common.pb-c.h" G_BEGIN_DECLS typedef struct _SSCClient SSCClient; typedef struct _SSCSensor SSCSensor; #define SSC_TYPE_CLIENT (ssc_client_get_type()) G_DECLARE_FINAL_TYPE (SSCClient, ssc_client, SSC, CLIENT, GObject); typedef enum { SSC_CLIENT_ERROR_PROTOBUF, SSC_CLIENT_ERROR_LOOKUP, } SSCClientError; #define SSC_PROCESSOR_APSS 1 #define SSC_SUSPEND_MODE_WAKEUP 0 #define SSC_SENSOR_TYPE_SUID "suid" #define SSC_SENSOR_UID_SUID_LOW 0xABABABABABABABABUL #define SSC_SENSOR_UID_SUID_HIGH 0xABABABABABABABABUL #define SSC_MSG_REQUEST_SUID 512 #define SSC_MSG_RESPONSE_SUID 768 void ssc_client_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCClient * ssc_client_new_finish (GAsyncResult *res, GError **error); void ssc_client_send (SSCClient *self, guint64 uid_high, guint64 uid_low, guint32 message_id, GArray *protobuf, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_client_send_finish (SSCClient *self, GAsyncResult *res, GError **error); SSCSensor * ssc_client_get_sensor_by_data_type (SSCClient *self, gchar *data_type); G_END_DECLS #endif /* _LIBSSC_CLIENT_H_ */ libssc/src/libssc-client.c000066400000000000000000000343771515656607000160540ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" enum { SIGNAL_REPORT, SIGNAL_SENSOR_INITIALIZED, N_SIGNALS }; static guint signals[N_SIGNALS]; enum { PROP_FILE = 1, N_PROPERTIES }; typedef struct _SSCClientPrivate { QmiDevice *device; QmiClientSsc *qmi_client_ssc; QrtrBus *bus; guint32 node_id; guint indication_report_small_id; guint indication_report_large_id; guint sensor_initialized_id; guint discovery_requests; guint sensor_init_requests; } SSCClientPrivate; typedef struct _SSCClient { GObject parent; SSCClientPrivate *priv; } SSCClient; GQuark ssc_client_error_quark (void) { static GQuark quark = 0; if (!quark) quark = g_quark_from_static_string("ssc-client"); return quark; } static void async_initable_iface_init (GAsyncInitableIface *iface); G_DEFINE_TYPE_WITH_CODE (SSCClient, ssc_client, G_TYPE_OBJECT, G_ADD_PRIVATE (SSCClient) G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)); /*****************************************************************************/ static void handle_report (SSCClient *self, GArray *protobuf) { SscClientResponse *msg; msg = ssc_client_response__unpack (NULL, protobuf->len, (const uint8_t *) protobuf->data); if (msg == NULL) { g_warning ("Failed to unpack message"); return; } for (gsize i = 0; i < msg->n_response; i++) { SscClientResponseBody *body = msg->response[i]; GArray* buf = g_array_new (FALSE, FALSE, 1); g_array_set_size (buf, body->msg.len); memcpy (buf->data, (char *) body->msg.data, body->msg.len); g_debug ("Message %" G_GUINT32_FORMAT " for sensor %" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT, body->msg_id, msg->uid->high, msg->uid->low); /* * Emit a GSignal on which sensor drivers can subscribe to * receive sensor specific messages. Drivers can emit the sensor data * once they have processed it. */ g_signal_emit (self, signals[SIGNAL_REPORT], 0, body->msg_id, msg->uid->high, msg->uid->low, buf); g_array_free (buf, TRUE); } ssc_client_response__free_unpacked (msg, NULL); } static void report_large_received (QmiClientSsc *self, QmiIndicationSscReportLargeOutput *output, gpointer user_data) { SSCClient *client = SSC_CLIENT (user_data); g_autoptr (GError) error = NULL; GArray *protobuf = NULL; if (!qmi_indication_ssc_report_large_output_get_data (output, &protobuf, &error)) { g_warning ("Cannot extract Protobuf data (large report): %s", error->message); return; } handle_report (client, protobuf); } static void report_small_received (QmiClientSsc *self, QmiIndicationSscReportSmallOutput *output, gpointer user_data) { SSCClient *client = SSC_CLIENT (user_data); g_autoptr (GError) error = NULL; GArray *protobuf = NULL; if (!qmi_indication_ssc_report_small_output_get_data (output, &protobuf, &error)) { g_warning ("Cannot extract Protobuf data (small report): %s", error->message); return; } handle_report (client, protobuf); } static void request_ready (QmiClientSsc *self, GAsyncResult *res, gpointer user_data) { GError *error = NULL; GTask *task = G_TASK (user_data); QmiMessageSscControlOutput *output = NULL; output = qmi_client_ssc_control_finish (self, res, &error); if (!output) { g_task_return_error (task, error); g_clear_object (&task); return; } if (!qmi_message_ssc_control_output_get_result (output, &error)) { g_warning ("QMI request failed: %s", error->message); qmi_message_ssc_control_output_unref (output); g_task_return_error (task, error); g_clear_object (&task); return; } qmi_message_ssc_control_output_unref (output); g_task_return_boolean (task, TRUE); g_clear_object (&task); } gboolean ssc_client_send_finish (SSCClient *self, GAsyncResult *res, GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } void ssc_client_send (SSCClient *self, guint64 uid_high, guint64 uid_low, guint32 message_id, GArray *protobuf, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; GError *error = NULL; QmiMessageSscControlInput *input = NULL; SSCClientPrivate *priv = NULL; g_autoptr (GArray) buf = NULL; SscClientRequestBody body_msg; SscClientConfig config_msg; SscClientRequest client_msg; SscUid uid_msg; task = g_task_new (self, cancellable, callback, user_data); buf = g_array_new (FALSE, FALSE, 1); priv = ssc_client_get_instance_private (self); ssc_client_config__init (&config_msg); config_msg.processor = SSC_PROCESSOR_APSS; config_msg.suspend_mode = SSC_SUSPEND_MODE_WAKEUP; ssc_client_request_body__init (&body_msg); if (protobuf) { body_msg.has_msg = true; body_msg.msg.data = (uint8_t *)protobuf->data; body_msg.msg.len = protobuf->len; } ssc_uid__init (&uid_msg); uid_msg.low = uid_low; uid_msg.high = uid_high; ssc_client_request__init (&client_msg); client_msg.uid = &uid_msg; client_msg.msg_id = message_id; client_msg.config = &config_msg; client_msg.request = &body_msg; g_array_set_size (buf, ssc_client_request__get_packed_size (&client_msg)); ssc_client_request__pack (&client_msg, (unsigned char*) buf->data); if (buf == NULL) { g_set_error (&error, ssc_client_error_quark(), SSC_CLIENT_ERROR_PROTOBUF, "Protobuf message couldn't be build for SUID sensor"); g_task_return_error (task, error); g_clear_object (&task); return; } /* Build QMI message */ input = qmi_message_ssc_control_input_new (); if (!qmi_message_ssc_control_input_set_report_type (input, QMI_SSC_REPORT_TYPE_LARGE, &error)) { g_debug ("Inserting report type failed: %s", error->message); qmi_message_ssc_control_input_unref (input); g_task_return_error (task, error); g_clear_object (&task); return; } if (!qmi_message_ssc_control_input_set_data (input, buf, &error)) { g_debug ("Inserting protobuf data failed: %s", error->message); qmi_message_ssc_control_input_unref (input); g_task_return_error (task, error); g_clear_object (&task); return; } /* Send QMI message with Protobuf payload */ qmi_client_ssc_control (priv->qmi_client_ssc, input, 10, g_task_get_cancellable (task), (GAsyncReadyCallback)request_ready, task); qmi_message_ssc_control_input_unref (input); } /*****************************************************************************/ static void allocate_client_ready (QmiDevice *device, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GTask *task = NULL; SSCClient *client = NULL; SSCClientPrivate *priv = NULL; task = G_TASK (user_data); client = g_task_get_task_data (task); priv = ssc_client_get_instance_private (client); priv->qmi_client_ssc = QMI_CLIENT_SSC (qmi_device_allocate_client_finish (device, result, &error)); if (error) { g_task_return_error (task, error); g_clear_object (&task); return; } /* Connecting signals for QMI indication with Protobuf response */ g_debug ("Connecting QMI SSC client signals"); priv->indication_report_small_id = g_signal_connect (priv->qmi_client_ssc, "report-small", G_CALLBACK (report_small_received), client); priv->indication_report_large_id = g_signal_connect (priv->qmi_client_ssc, "report-large", G_CALLBACK (report_large_received), client); g_task_return_boolean (task, TRUE); g_clear_object (&task); } static void device_open_ready (QmiDevice *device, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GTask *task = NULL; task = G_TASK (user_data); qmi_device_open_finish (device, result, &error); if (error) { g_task_return_error (task, error); g_clear_object (&task); return; } g_debug ("QMI device at '%s' ready", qmi_device_get_path_display (device)); /* QMI device opened, allocate client */ qmi_device_allocate_client (device, QMI_SERVICE_SSC, QMI_CID_NONE, 10, g_task_get_cancellable (task), (GAsyncReadyCallback)allocate_client_ready, task); } static void device_new_ready (GObject *source, GAsyncResult *res, gpointer user_data) { QmiDeviceOpenFlags open_flags = QMI_DEVICE_OPEN_FLAGS_NONE; GError *error = NULL; GTask *task = NULL; SSCClient *client = NULL; SSCClientPrivate *priv = NULL; task = G_TASK (user_data); client = g_task_get_task_data (task); priv = ssc_client_get_instance_private (client); priv->device = qmi_device_new_finish (res, &error); if (error) { g_task_return_error (task, error); g_clear_object (&task); return; } /* Indications are expected as they report all sensor data values */ open_flags |= QMI_DEVICE_OPEN_FLAGS_AUTO; open_flags |= QMI_DEVICE_OPEN_FLAGS_EXPECT_INDICATIONS; g_debug ("QMI device ready"); /* QMI device created, open device */ qmi_device_open (priv->device, open_flags, 15, g_task_get_cancellable (task), (GAsyncReadyCallback)device_open_ready, task); } static void bus_new_ready (GObject *source, GAsyncResult *res, gpointer user_data) { GError *error = NULL; QrtrNode *node = NULL; GTask *task = NULL; SSCClient *client = NULL; SSCClientPrivate *priv = NULL; gboolean found = FALSE; task = G_TASK (user_data); client = g_task_get_task_data (task); priv = ssc_client_get_instance_private (client); priv->bus = qrtr_bus_new_finish (res, &error); if (error) { g_warning ("QRTR bus unavailable. Make sure access to AF_QIPCRTR address family is granted."); g_task_return_error (task, error); g_clear_object (&task); return; } /* Find QRTR node for SSC service */ for (GList *l = qrtr_bus_peek_nodes (priv->bus); l != NULL; l = l->next) { node = l->data; if (node && qrtr_node_lookup_port (node, QMI_SERVICE_SSC) >= 0) { found = TRUE; break; } } if (!found) { g_debug ("Service SSC not found"); g_set_error (&error, ssc_client_error_quark(), SSC_CLIENT_ERROR_LOOKUP, "SSC QMI Service not found"); g_task_return_error (task, error); g_clear_object (&task); return; } g_debug("QRTR node discovered for SSC service"); /* QRTR node ready, create QMI device */ qmi_device_new_from_node (node, g_task_get_cancellable (task), device_new_ready, task); } static void ssc_client_init (SSCClient *self) { } static void ssc_client_dispose (GObject *object) { QmiDeviceReleaseClientFlags flags = QMI_DEVICE_RELEASE_CLIENT_FLAGS_NONE; SSCClientPrivate *priv = NULL; GError *error = NULL; SyncContext ctx; priv = ssc_client_get_instance_private (SSC_CLIENT (object)); if (!priv->qmi_client_ssc) { g_debug ("No SSC QMI client to release."); return; } ssc_common_init_sync_context (&ctx); /* Release QMI client */ g_debug ("Releasing SSC QMI client"); g_assert_nonnull (priv->qmi_client_ssc); flags |= QMI_DEVICE_RELEASE_CLIENT_FLAGS_RELEASE_CID; qmi_device_release_client (priv->device, QMI_CLIENT (priv->qmi_client_ssc), flags, 10, NULL, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); /* QMI client released, check result */ if (!qmi_device_release_client_finish (priv->device, ctx.result, &error)) g_warning ("Could not release SSC QMI client: %s\n", error->message); ssc_common_clear_sync_context (&ctx); g_debug ("Closing SSC QMI client"); ssc_common_init_sync_context (&ctx); qmi_device_close_async (priv->device, 10, NULL, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); if (!qmi_device_close_finish (priv->device, ctx.result, &error)) g_warning ("Could not close SSC QMI client: %s\n", error->message); g_clear_object (&priv->qmi_client_ssc); g_clear_object (&priv->device); g_clear_object (&priv->bus); G_OBJECT_CLASS (ssc_client_parent_class)->dispose (object); ssc_common_clear_sync_context (&ctx); } static void initable_init_async (GAsyncInitable *initable, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { #if QMI_QRTR_SUPPORTED { GTask *task = NULL; SSCClient *self = NULL; g_autofree gchar *id = NULL; self = SSC_CLIENT (initable); task = g_task_new (self, cancellable, callback, user_data); g_task_set_task_data (task, self, NULL); /* Open right node on QRTR bus */ qrtr_bus_new (1000, /* ms */ NULL, bus_new_ready, task); return; } # else g_debug ("Only QRTR QMI devices are supported. Compile libqmi with QRTR support"); g_task_return_boolean (task, FALSE); g_clear_object (&task); return; #endif } static gboolean initable_init_finish (GAsyncInitable *initable, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } static void async_initable_iface_init (GAsyncInitableIface *iface) { iface->init_async = initable_init_async; iface->init_finish = initable_init_finish; } static void ssc_client_class_init (SSCClientClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); /* Virtual methods */ object_class->dispose = ssc_client_dispose; /* Signals */ signals[SIGNAL_REPORT] = g_signal_new ("report", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 4, G_TYPE_UINT, G_TYPE_UINT64, G_TYPE_UINT64, G_TYPE_ARRAY); signals[SIGNAL_SENSOR_INITIALIZED] = g_signal_new ("sensor-initialized", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, SSC_TYPE_SENSOR); } SSCClient * ssc_client_new_finish (GAsyncResult *result, GError **error) { GObject *client; GObject *source; source = g_async_result_get_source_object (result); client = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); g_object_unref (source); if (!client) return NULL; return SSC_CLIENT (client); } void ssc_client_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, NULL); } libssc/src/libssc-common-private.h000066400000000000000000000060721515656607000175320ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_COMMON_H_ #define _LIBSSC_COMMON_H_ #include #include #include #include #include #include #include #define SSC_MSG_REQUEST_ENABLE_REPORT_CONTINUOUS 513 #define SSC_MSG_REQUEST_ENABLE_REPORT_ON_CHANGE 514 #define SSC_MSG_RESPONSE_ENABLE_REPORT 768 #define SSC_MSG_REQUEST_DISABLE_REPORT 10 #define SSC_MSG_REQUEST_GET_ATTRIBUTES 1 #define SSC_MSG_RESPONSE_GET_ATTRIBUTES 128 #define SSC_MSG_REPORT_MEASUREMENT_PROXIMITY 769 #define SSC_MSG_REPORT_MEASUREMENT 1025 #define SSC_ACCURACY_UNRELIABLE 0 #define SSC_ACCURACY_LOW 1 #define SSC_ACCURACY_MEDIUM 2 #define SSC_ACCURACY_HIGH 3 #define SSC_ATTRIBUTE_NAME 0 #define SSC_ATTRIBUTE_VENDOR 1 #define SSC_ATTRIBUTE_TYPE 2 #define SSC_ATTRIBUTE_AVAILABLE 3 #define SSC_ATTRIBUTE_VERSION 4 #define SSC_ATTRIBUTE_API 5 #define SSC_ATTRIBUTE_SAMPLE_RATE 6 #define SSC_ATTRIBUTE_SAMPLE_RESOLUTIONS 7 #define SSC_ATTRIBUTE_FIFO_SIZE 8 #define SSC_ATTRIBUTE_ACTIVE_CURRENT_CONSUMPTION 9 #define SSC_ATTRIBUTE_SLEEP_CURRENT_CONSUMPTION 10 #define SSC_ATTRIBUTE_AVAILABLE_RANGES 11 #define SSC_ATTRIBUTE_OPERATING_MODES 12 #define SSC_ATTRIBUTE_DRI 13 #define SSC_ATTRIBUTE_STREAM_SYNC 14 #define SSC_ATTRIBUTE_EVENT_SIZE 15 #define SSC_ATTRIBUTE_STREAM_TYPE 16 #define SSC_ATTRIBUTE_DYNAMIC 17 #define SSC_ATTRIBUTE_HARDWARE_ID 18 #define SSC_ATTRIBUTE_RIGID_BODY 19 #define SSC_ATTRIBUTE_MOUNT_MATRIX 20 #define SSC_ATTRIBUTE_PHYSICAL_SENSOR 21 #define SSC_ATTRIBUTE_PHYSICAL_SENSOR_TESTS 22 #define SSC_ATTRIBUTE_SELECTED_RESULTION 23 #define SSC_ATTRIBUTE_SELECTED_RANGE 24 #define SSC_ATTRIBUTE_LOW_LATENCY_RATES 25 #define SSC_ATTRIBUTE_PASSIVE_REQUEST 26 #define SSC_STREAM_TYPE_CONTINUOUS 0 #define SSC_STREAM_TYPE_ON_CHANGE 1 typedef struct { GMutex mutex; GCond condition; GAsyncResult *result; gboolean finished; GObject *object; } SyncContext; void ssc_common_dump_protobuf (GArray *protobuf); void ssc_common_init_sync_context (SyncContext *ctx); void ssc_common_clear_sync_context (SyncContext *ctx); void ssc_common_wait_sync_context (SyncContext *ctx); void ssc_common_callback_sync_context (GObject *source, GAsyncResult *result, gpointer user_data); #endif /* _LIBSSC_COMMON_H_ */ libssc/src/libssc-common.c000066400000000000000000000041451515656607000160540ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-common-private.h" void ssc_common_dump_protobuf (GArray *protobuf) { GString *str = NULL; g_autofree gchar *data = NULL; if (protobuf == NULL) { g_warning ("Invalid ProtoBuf data!"); return; } g_debug ("ProtoBuf data:"); str = g_string_new (""); for (gsize i = 0; i < protobuf->len; i++) { guint8 value = g_array_index (protobuf, guint8, i); g_string_append_printf (str, "\\x%02x", value); } data = g_string_free (str, FALSE); g_debug ("%s", data); } void ssc_common_init_sync_context (SyncContext *ctx) { g_mutex_init (&ctx->mutex); g_cond_init (&ctx->condition); ctx->finished = FALSE; ctx->result = NULL; } void ssc_common_wait_sync_context (SyncContext *ctx) { g_mutex_lock (&ctx->mutex); while (!ctx->finished) { g_mutex_unlock (&ctx->mutex); g_main_context_iteration (g_main_context_default (), FALSE); g_mutex_lock (&ctx->mutex); } g_mutex_unlock (&ctx->mutex); } void ssc_common_callback_sync_context (GObject *source, GAsyncResult *result, gpointer user_data) { SyncContext *ctx = user_data; g_mutex_lock (&ctx->mutex); ctx->result = g_object_ref (result); ctx->finished = TRUE; g_cond_signal (&ctx->condition); g_mutex_unlock (&ctx->mutex); } void ssc_common_clear_sync_context (SyncContext *ctx) { g_mutex_clear (&ctx->mutex); g_cond_clear (&ctx->condition); g_object_unref (ctx->result); } libssc/src/libssc-sensor-accelerometer.c000066400000000000000000000220071515656607000207020ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-common.pb-c.h" #include "ssc-sensor-accelerometer.pb-c.h" #include "libssc-sensor-accelerometer.h" enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorAccelerometerPrivate { guint report_id; } SSCSensorAccelerometerPrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorAccelerometer, ssc_sensor_accelerometer, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorAccelerometer)) typedef struct { SSCSensorAccelerometer *sensor; gfloat x; gfloat y; gfloat z; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->x, ctx->y, ctx->z); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscAccelerometerResponse *msg = NULL; SSCSensorAccelerometer *sensor = SSC_SENSOR_ACCELEROMETER (user_data); SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gfloat (*mount_matrix)[3]; gfloat x; gfloat y; gfloat z; g_object_get (sensor, SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, SSC_SENSOR_MOUNT_MATRIX, &mount_matrix, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low && msg_id == SSC_MSG_REPORT_MEASUREMENT) { msg = ssc_accelerometer_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack accelerometer measurement message"); return; } if (msg->n_acceleration >= 3) { x = msg->acceleration[0]; y = msg->acceleration[1]; z = msg->acceleration[2]; /* Emit signal in main context instead of thread's context */ ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; /* Apply mount matrix specified in https://www.kernel.org/doc/Documentation/devicetree/bindings/iio/mount-matrix.txt */ ctx->x = mount_matrix[0][0] * x + mount_matrix[0][1] * y + mount_matrix[0][2] * z; ctx->y = mount_matrix[1][0] * x + mount_matrix[1][1] * y + mount_matrix[1][2] * z; ctx->z = mount_matrix[2][0] * x + mount_matrix[2][1] * y + mount_matrix[2][2] * z; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } ssc_accelerometer_response__free_unpacked (msg, NULL); } } /*****************************************************************************/ static void accelerometer_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_accelerometer_close_finish (SSCSensorAccelerometer *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_accelerometer_close (SSCSensorAccelerometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorAccelerometerPrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_accelerometer_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)accelerometer_close_ready, task); } gboolean ssc_sensor_accelerometer_close_sync (SSCSensorAccelerometer *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_accelerometer_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_accelerometer_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void accelerometer_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_accelerometer_open_finish (SSCSensorAccelerometer *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_accelerometer_open (SSCSensorAccelerometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCClient *client = NULL; SSCSensorAccelerometerPrivate *priv = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->open_finish); priv = ssc_sensor_accelerometer_get_instance_private (SSC_SENSOR_ACCELEROMETER (self)); task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports before opening sensor so we don't miss the first measurement */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_accelerometer_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)accelerometer_open_ready, task); } gboolean ssc_sensor_accelerometer_open_sync (SSCSensorAccelerometer *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_accelerometer_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_accelerometer_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_accelerometer_class_init (SSCSensorAccelerometerClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 3, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_FLOAT); } static void ssc_sensor_accelerometer_init (SSCSensorAccelerometer *self) { } SSCSensorAccelerometer * ssc_sensor_accelerometer_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } g_object_unref (source); return SSC_SENSOR_ACCELEROMETER (sensor); } void ssc_sensor_accelerometer_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_ACCELEROMETER, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "accel", NULL); } SSCSensorAccelerometer * ssc_sensor_accelerometer_new_sync (GCancellable *cancellable, GError **error) { SSCSensorAccelerometer *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_accelerometer_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_accelerometer_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-accelerometer.h000066400000000000000000000045061515656607000207130ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_ACCELEROMETER_H_ #define _LIBSSC_SENSOR_ACCELEROMETER_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_ACCELEROMETER (ssc_sensor_accelerometer_get_type()) typedef struct _SSCSensorAccelerometer { SSCSensor parent; } SSCSensorAccelerometer; G_DECLARE_FINAL_TYPE (SSCSensorAccelerometer, ssc_sensor_accelerometer, SSC, SENSOR_ACCELEROMETER, SSCSensor); void ssc_sensor_accelerometer_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorAccelerometer *ssc_sensor_accelerometer_new_finish (GAsyncResult *result, GError **error); SSCSensorAccelerometer *ssc_sensor_accelerometer_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_accelerometer_open (SSCSensorAccelerometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_accelerometer_open_finish (SSCSensorAccelerometer *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_accelerometer_open_sync (SSCSensorAccelerometer *self, GCancellable *cancellable, GError **error); void ssc_sensor_accelerometer_close (SSCSensorAccelerometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_accelerometer_close_finish (SSCSensorAccelerometer *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_accelerometer_close_sync (SSCSensorAccelerometer *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_ACCELEROMETER_H_ */ libssc/src/libssc-sensor-compass.c000066400000000000000000000215241515656607000175400ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-sensor-rotationvector.pb-c.h" #include "libssc-sensor-compass.h" enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorCompassPrivate { guint report_id; } SSCSensorCompassPrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorCompass, ssc_sensor_compass, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorCompass)) typedef struct { SSCSensorCompass *sensor; gfloat azimuth; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gfloat calculate_azimuth (gfloat x, gfloat y, gfloat z, gfloat w) { gfloat q0 = w; gfloat q1 = x; gfloat q2 = y; gfloat q3 = z; gfloat q1_q2; gfloat q3_q0; gfloat sq_q1; gfloat sq_q3; gfloat r1; gfloat r4; gfloat azimuth; q1_q2 = 2 * q1 * q2; q3_q0 = 2 * q3 * q0; sq_q1 = 2 * q1 * q1; sq_q3 = 2 * q3 * q3; r1 = q1_q2 - q3_q0; r4 = 1 - sq_q1 - sq_q3; azimuth = atan2(r1, r4); azimuth = azimuth * 180 / M_PI; if (azimuth < 0.0) azimuth = azimuth + 360.0; return azimuth; } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->azimuth); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscRotationvectorResponse *msg = NULL; SSCSensorCompass *sensor = SSC_SENSOR_COMPASS (user_data); SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gfloat x; gfloat y; gfloat z; gfloat w; gfloat azimuth; g_object_get (sensor, SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low && msg_id == SSC_MSG_REPORT_MEASUREMENT) { msg = ssc_rotationvector_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack rotationvector measurement message"); return; } if (msg->n_rotation >= 4) { x = msg->rotation[0]; y = msg->rotation[1]; z = msg->rotation[2]; w = msg->rotation[3]; azimuth = calculate_azimuth (x, y, z, w); /* Emit signal in main context instead of thread's context */ ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; ctx->azimuth = azimuth; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } ssc_rotationvector_response__free_unpacked (msg, NULL); } } /*****************************************************************************/ static void compass_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_compass_close_finish (SSCSensorCompass *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_compass_close (SSCSensorCompass *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorCompassPrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_compass_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)compass_close_ready, task); } gboolean ssc_sensor_compass_close_sync (SSCSensorCompass *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_compass_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_compass_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void compass_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_compass_open_finish (SSCSensorCompass *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_compass_open (SSCSensorCompass *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCSensorCompassPrivate *priv = NULL; SSCClient *client = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->open_finish); priv = ssc_sensor_compass_get_instance_private (SSC_SENSOR_COMPASS (self)); task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports before opening sensor so we don't miss the first measurement */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_compass_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)compass_open_ready, task); } gboolean ssc_sensor_compass_open_sync (SSCSensorCompass *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_compass_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_compass_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_compass_class_init (SSCSensorCompassClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_FLOAT); } static void ssc_sensor_compass_init (SSCSensorCompass *self) { } SSCSensorCompass * ssc_sensor_compass_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } g_object_unref (source); return SSC_SENSOR_COMPASS (sensor); } void ssc_sensor_compass_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_COMPASS, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "rotv", NULL); } SSCSensorCompass * ssc_sensor_compass_new_sync (GCancellable *cancellable, GError **error) { SSCSensorCompass *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_compass_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_compass_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-compass.h000066400000000000000000000042451515656607000175460ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_COMPASS_H_ #define _LIBSSC_SENSOR_COMPASS_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_COMPASS (ssc_sensor_compass_get_type()) typedef struct _SSCSensorCompass { SSCSensor parent; } SSCSensorCompass; G_DECLARE_FINAL_TYPE (SSCSensorCompass, ssc_sensor_compass, SSC, SENSOR_COMPASS, SSCSensor); void ssc_sensor_compass_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorCompass *ssc_sensor_compass_new_finish (GAsyncResult *result, GError **error); SSCSensorCompass *ssc_sensor_compass_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_compass_open (SSCSensorCompass *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_compass_open_finish (SSCSensorCompass *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_compass_open_sync (SSCSensorCompass *self, GCancellable *cancellable, GError **error); void ssc_sensor_compass_close (SSCSensorCompass *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_compass_close_finish (SSCSensorCompass *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_compass_close_sync (SSCSensorCompass *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_COMPASS_H_ */ libssc/src/libssc-sensor-gyroscope.c000066400000000000000000000205751515656607000201120ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2025-2026 Vasiliy Doylov * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-common.pb-c.h" #include "ssc-sensor-gyroscope.pb-c.h" #include "libssc-sensor-gyroscope.h" enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorGyroscopePrivate { guint report_id; } SSCSensorGyroscopePrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorGyroscope, ssc_sensor_gyroscope, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorGyroscope)) typedef struct { SSCSensorGyroscope *sensor; gfloat x; gfloat y; gfloat z; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->x, ctx->y, ctx->z); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscGyroscopeResponse *msg = NULL; SSCSensorGyroscope *sensor = SSC_SENSOR_GYROSCOPE (user_data); SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gfloat x; gfloat y; gfloat z; g_object_get (sensor, SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low && msg_id == SSC_MSG_REPORT_MEASUREMENT) { msg = ssc_gyroscope_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack gyroscope measurement message"); return; } if (msg->n_velocity >= 3) { x = msg->velocity[0]; y = msg->velocity[1]; z = msg->velocity[2]; /* Emit signal in main context instead of thread's context */ ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; ctx->x = x; ctx->y = y; ctx->z = z; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } ssc_gyroscope_response__free_unpacked (msg, NULL); } } /*****************************************************************************/ static void gyroscope_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_gyroscope_close_finish (SSCSensorGyroscope *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_gyroscope_close (SSCSensorGyroscope *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorGyroscopePrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_gyroscope_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)gyroscope_close_ready, task); } gboolean ssc_sensor_gyroscope_close_sync (SSCSensorGyroscope *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_gyroscope_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_gyroscope_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void gyroscope_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_gyroscope_open_finish (SSCSensorGyroscope *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_gyroscope_open (SSCSensorGyroscope *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCClient *client = NULL; SSCSensorGyroscopePrivate *priv = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->open_finish); priv = ssc_sensor_gyroscope_get_instance_private (SSC_SENSOR_GYROSCOPE (self)); task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports before opening sensor so we don't miss the first measurement */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_gyroscope_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)gyroscope_open_ready, task); } gboolean ssc_sensor_gyroscope_open_sync (SSCSensorGyroscope *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_gyroscope_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_gyroscope_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_gyroscope_class_init (SSCSensorGyroscopeClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 3, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_FLOAT); } static void ssc_sensor_gyroscope_init (SSCSensorGyroscope *self) { } SSCSensorGyroscope * ssc_sensor_gyroscope_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } g_object_unref (source); return SSC_SENSOR_GYROSCOPE (sensor); } void ssc_sensor_gyroscope_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_GYROSCOPE, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "gyro", NULL); } SSCSensorGyroscope * ssc_sensor_gyroscope_new_sync (GCancellable *cancellable, GError **error) { SSCSensorGyroscope *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_gyroscope_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_gyroscope_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-gyroscope.h000066400000000000000000000043711515656607000201130ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2025-2026 Vasiliy Doylov * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_GYROSCOPE_H_ #define _LIBSSC_SENSOR_GYROSCOPE_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_GYROSCOPE (ssc_sensor_gyroscope_get_type()) typedef struct _SSCSensorGyroscope { SSCSensor parent; } SSCSensorGyroscope; G_DECLARE_FINAL_TYPE (SSCSensorGyroscope, ssc_sensor_gyroscope, SSC, SENSOR_GYROSCOPE, SSCSensor); void ssc_sensor_gyroscope_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorGyroscope *ssc_sensor_gyroscope_new_finish (GAsyncResult *result, GError **error); SSCSensorGyroscope *ssc_sensor_gyroscope_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_gyroscope_open (SSCSensorGyroscope *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_gyroscope_open_finish (SSCSensorGyroscope *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_gyroscope_open_sync (SSCSensorGyroscope *self, GCancellable *cancellable, GError **error); void ssc_sensor_gyroscope_close (SSCSensorGyroscope *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_gyroscope_close_finish (SSCSensorGyroscope *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_gyroscope_close_sync (SSCSensorGyroscope *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_GYROSCOPE_H_ */ libssc/src/libssc-sensor-light.c000066400000000000000000000201111515656607000171710ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-common.pb-c.h" #include "ssc-sensor-light.pb-c.h" #include "libssc-sensor-light.h" enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorLightPrivate { guint report_id; } SSCSensorLightPrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorLight, ssc_sensor_light, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorLight)) typedef struct { SSCSensorLight *sensor; gfloat intensity; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->intensity); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscLightResponse *msg = NULL; SSCSensorLight *sensor = SSC_SENSOR_LIGHT (user_data); SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gfloat intensity; g_object_get (sensor, SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low && msg_id == SSC_MSG_REPORT_MEASUREMENT) { msg = ssc_light_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack light measurement message"); return; } /* Only report intensity in Lux, raw sensor values are ignored */ if (msg->n_intensity >= 1) { intensity = msg->intensity[0]; /* Emit signal in main context instead of thread's context if intensity is positive */ if (intensity >= 0.0) { ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; ctx->intensity = intensity; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } } ssc_light_response__free_unpacked (msg, NULL); } } /*****************************************************************************/ static void light_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_light_close_finish (SSCSensorLight *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_light_close (SSCSensorLight *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorLightPrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_light_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)light_close_ready, task); } gboolean ssc_sensor_light_close_sync (SSCSensorLight *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_light_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_light_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void light_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_light_open_finish (SSCSensorLight *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_light_open (SSCSensorLight *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCSensorLightPrivate *priv = NULL; SSCClient *client = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->open_finish); priv = ssc_sensor_light_get_instance_private (SSC_SENSOR_LIGHT (self)); task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_light_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)light_open_ready, task); } gboolean ssc_sensor_light_open_sync (SSCSensorLight *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_light_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_light_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_light_class_init (SSCSensorLightClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_FLOAT); } static void ssc_sensor_light_init (SSCSensorLight *self) { } SSCSensorLight * ssc_sensor_light_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } g_object_unref (source); return SSC_SENSOR_LIGHT (sensor); } void ssc_sensor_light_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_LIGHT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "ambient_light", NULL); } SSCSensorLight * ssc_sensor_light_new_sync (GCancellable *cancellable, GError **error) { SSCSensorLight *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_light_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_light_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-light.h000066400000000000000000000041211515656607000172010ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_LIGHT_H_ #define _LIBSSC_SENSOR_LIGHT_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_LIGHT (ssc_sensor_light_get_type()) typedef struct _SSCSensorLight { SSCSensor parent; } SSCSensorLight; G_DECLARE_FINAL_TYPE (SSCSensorLight, ssc_sensor_light, SSC, SENSOR_LIGHT, SSCSensor); void ssc_sensor_light_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorLight *ssc_sensor_light_new_finish (GAsyncResult *result, GError **error); SSCSensorLight *ssc_sensor_light_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_light_open (SSCSensorLight *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_light_open_finish (SSCSensorLight *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_light_open_sync (SSCSensorLight *self, GCancellable *cancellable, GError **error); void ssc_sensor_light_close (SSCSensorLight *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_light_close_finish (SSCSensorLight *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_light_close_sync (SSCSensorLight *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_LIGHT_H_ */ libssc/src/libssc-sensor-magnetometer.c000066400000000000000000000210401515656607000205530ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-common.pb-c.h" #include "ssc-sensor-magnetometer.pb-c.h" #include "libssc-sensor-magnetometer.h" enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorMagnetometerPrivate { guint report_id; } SSCSensorMagnetometerPrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorMagnetometer, ssc_sensor_magnetometer, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorMagnetometer)) typedef struct { SSCSensorMagnetometer *sensor; gfloat x; gfloat y; gfloat z; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->x, ctx->y, ctx->z); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscMagnetometerResponse *msg = NULL; SSCSensorMagnetometer *sensor = SSC_SENSOR_MAGNETOMETER (user_data); SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gfloat x; gfloat y; gfloat z; g_object_get (sensor, SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low && msg_id == SSC_MSG_REPORT_MEASUREMENT) { msg = ssc_magnetometer_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack magnetometer measurement message"); return; } if (msg->n_magnetic_field >= 3) { x = msg->magnetic_field[0]; y = msg->magnetic_field[1]; z = msg->magnetic_field[2]; /* Emit signal in main context instead of thread's context */ ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; ctx->x = x; ctx->y = y; ctx->z = z; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } ssc_magnetometer_response__free_unpacked (msg, NULL); } } /*****************************************************************************/ static void magnetometer_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_magnetometer_close_finish (SSCSensorMagnetometer *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_magnetometer_close (SSCSensorMagnetometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorMagnetometerPrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_magnetometer_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)magnetometer_close_ready, task); } gboolean ssc_sensor_magnetometer_close_sync (SSCSensorMagnetometer *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_magnetometer_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_magnetometer_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void magnetometer_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_magnetometer_open_finish (SSCSensorMagnetometer *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_magnetometer_open (SSCSensorMagnetometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCSensorMagnetometerPrivate *priv = NULL; SSCClient *client = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->open_finish); priv = ssc_sensor_magnetometer_get_instance_private (SSC_SENSOR_MAGNETOMETER (self)); task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports before opening sensor so we don't miss the first measurement */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_magnetometer_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)magnetometer_open_ready, task); } gboolean ssc_sensor_magnetometer_open_sync (SSCSensorMagnetometer *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_magnetometer_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_magnetometer_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_magnetometer_class_init (SSCSensorMagnetometerClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 3, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_FLOAT); } static void ssc_sensor_magnetometer_init (SSCSensorMagnetometer *self) { } SSCSensorMagnetometer * ssc_sensor_magnetometer_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } g_object_unref (source); return SSC_SENSOR_MAGNETOMETER (sensor); } void ssc_sensor_magnetometer_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_MAGNETOMETER, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "mag", NULL); } SSCSensorMagnetometer * ssc_sensor_magnetometer_new_sync (GCancellable *cancellable, GError **error) { SSCSensorMagnetometer *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_magnetometer_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_magnetometer_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-magnetometer.h000066400000000000000000000044611515656607000205700ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_MAGNETOMETER_H_ #define _LIBSSC_SENSOR_MAGNETOMETER_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_MAGNETOMETER (ssc_sensor_magnetometer_get_type()) typedef struct _SSCSensorMagnetometer { SSCSensor parent; } SSCSensorMagnetometer; G_DECLARE_FINAL_TYPE (SSCSensorMagnetometer, ssc_sensor_magnetometer, SSC, SENSOR_MAGNETOMETER, SSCSensor); void ssc_sensor_magnetometer_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorMagnetometer *ssc_sensor_magnetometer_new_finish (GAsyncResult *result, GError **error); SSCSensorMagnetometer *ssc_sensor_magnetometer_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_magnetometer_open (SSCSensorMagnetometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_magnetometer_open_finish (SSCSensorMagnetometer *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_magnetometer_open_sync (SSCSensorMagnetometer *self, GCancellable *cancellable, GError **error); void ssc_sensor_magnetometer_close (SSCSensorMagnetometer *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_magnetometer_close_finish (SSCSensorMagnetometer *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_magnetometer_close_sync (SSCSensorMagnetometer *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_MAGNETOMETER_H_ */ libssc/src/libssc-sensor-proximity-private.h000066400000000000000000000042661515656607000216200ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_PROXIMITY_PRIVATE_H_ #define _LIBSSC_SENSOR_PROXIMITY_PRIVATE_H_ /* * xiaomi-davinci's proximity message contains bytes that appear to be a C struct. * Judging by the placing of the zeroes in the payloads, the struct seems to contain a bunch of 32-bit floats. * FIXME: Figure out what all the fields are. */ typedef struct { /* 1.0 if NEAR, else 0.0 */ float near; /* Increases with proximity to the sensor */ float coverness; /* * Calibration offset, unknown use * Note: prox_offset_h is definitely not included in the struct */ float prox_offset_l; /* Sometimes 0.0, rarely -1.0 */ float unknown1; /* Apparently always 0.0 */ float unknown2; /* Apparently always 0.0 */ float unknown3; /* If NEAR, coverness value right on the sensor; if FAR, this is the near threshold */ float near_state_range_min; /* If NEAR, this is the far threshold; if FAR, it is 1.0 */ float near_state_range_max; /* Coverness threadshold for NEAR */ float near_threshold; /* Coverness threshold for FAR */ float far_threshold; /* Apparently always 0.0, likely reserved for future use */ float reserved1; /* Apparently always 0.0 */ float reserved2; /* Apparently always 0.0 */ float reserved3; /* Apparently always 0.0 */ float reserved4; /* Apparently always 0.0 */ float reserved5; /* Apparently always 0.0 */ float reserved6; } ProximityDataDavinci; #endif /* _LIBSSC_SENSOR_PROXIMITY_PRIVATE_H_ */ libssc/src/libssc-sensor-proximity.c000066400000000000000000000241541515656607000201410ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "ssc-common.pb-c.h" #include "ssc-sensor-proximity.pb-c.h" #include "libssc-client-private.h" #include "libssc-common-private.h" #include "libssc-sensor-proximity.h" #include "libssc-sensor-proximity-private.h" #define SSC_SENSOR_PROXIMITY_NEAR 1 #define SSC_SENSOR_PROXIMITY_FAR 0 enum { SIGNAL_MEASUREMENT, N_SIGNALS }; static guint signals[N_SIGNALS]; typedef struct _SSCSensorProximityPrivate { guint report_id; gboolean near; gboolean reported_once; } SSCSensorProximityPrivate; G_DEFINE_TYPE_WITH_CODE (SSCSensorProximity, ssc_sensor_proximity, SSC_TYPE_SENSOR, G_ADD_PRIVATE (SSCSensorProximity)) typedef struct { SSCSensorProximity *sensor; gboolean near; } SignalContext; static void signal_context_free (SignalContext *ctx) { g_slice_free (SignalContext, ctx); } /*****************************************************************************/ static gboolean emit_signal (gpointer user_data) { SignalContext *ctx = user_data; g_signal_emit (ctx->sensor, signals[SIGNAL_MEASUREMENT], 0, ctx->near); return G_SOURCE_REMOVE; } static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SSCSensorProximity *sensor = SSC_SENSOR_PROXIMITY (user_data); SSCSensorProximityPrivate *priv = NULL; SignalContext *ctx = NULL; guint64 sensor_uid_low; guint64 sensor_uid_high; gboolean near = false; g_object_get (SSC_SENSOR (sensor), SSC_SENSOR_UID_HIGH, &sensor_uid_high, SSC_SENSOR_UID_LOW, &sensor_uid_low, NULL); if (sensor_uid_high == uid_high && sensor_uid_low == uid_low) { /* Most devices use REPORT_MEASUREMENT_PROXIMITY */ if (msg_id == SSC_MSG_REPORT_MEASUREMENT_PROXIMITY) { SscProximityResponse *msg = ssc_proximity_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack proximity measurement message"); return; } switch (msg->near) { case SSC_SENSOR_PROXIMITY_NEAR: near = true; break; case SSC_SENSOR_PROXIMITY_FAR: near = false; break; default: g_assert_not_reached (); } ssc_proximity_response__free_unpacked (msg, NULL); /* xiaomi-davinci uses REPORT_MEASUREMENT and its own proximity response */ } else if (msg_id == SSC_MSG_REPORT_MEASUREMENT) { ProximityDataDavinci data; SscProximityResponseDavinci *msg = ssc_proximity_response_davinci__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (msg == NULL) { g_warning ("Failed to unpack Xiaomi Davinci proximity measurement message"); return; } if (msg->data->len != sizeof(ProximityDataDavinci)) { /* Not observed and unlikely to ever happen due to reserved fields in the data struct */ ssc_proximity_response_davinci__free_unpacked (msg, NULL); return; } memcpy(&data, msg->data->data, sizeof(ProximityDataDavinci)); switch ((int)data.near) { case SSC_SENSOR_PROXIMITY_NEAR: near = true; break; case SSC_SENSOR_PROXIMITY_FAR: near = false; break; default: g_assert_not_reached (); } ssc_proximity_response_davinci__free_unpacked (msg, NULL); } else { return; } /* Only emit signal when measurement actually changed or if the sensor was recently opened */ priv = ssc_sensor_proximity_get_instance_private (sensor); if (priv->near != near || !priv->reported_once) { priv->near = near; priv->reported_once = TRUE; /* Emit signal in main context instead of thread's context */ ctx = g_slice_new0 (SignalContext); ctx->sensor = sensor; ctx->near = near; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, emit_signal, ctx, (GDestroyNotify)signal_context_free); } } } /*****************************************************************************/ static void proximity_close_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->close_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_proximity_close_finish (SSCSensorProximity *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_proximity_close (SSCSensorProximity *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCClient *client = NULL; SSCSensorProximityPrivate *priv = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->close && SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->close_finish); task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_proximity_get_instance_private (self); /* Stop listening for reports */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); if (priv->report_id) g_signal_handler_disconnect (client, priv->report_id); /* Close sensor */ SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->close (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)proximity_close_ready, task); } gboolean ssc_sensor_proximity_close_sync (SSCSensorProximity *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_proximity_close (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_proximity_close_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void proximity_open_ready (SSCSensor *sensor, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); g_autoptr (GError) error = NULL; if (!SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->open_finish (sensor, result, &error)) { g_task_return_boolean (task, FALSE); g_object_unref (task); return; } g_task_return_boolean (task, TRUE); g_object_unref (task); } gboolean ssc_sensor_proximity_open_finish (SSCSensorProximity *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } void ssc_sensor_proximity_open (SSCSensorProximity *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCClient *client = NULL; SSCSensorProximityPrivate *priv = NULL; GTask *task = NULL; g_assert (SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->open && SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->open_finish); priv = ssc_sensor_proximity_get_instance_private (self); priv->reported_once = FALSE; task = g_task_new (self, cancellable, callback, user_data); /* Start listening for reports before opening sensor so we don't miss the first measurement */ g_object_get (SSC_SENSOR (self), SSC_SENSOR_CLIENT, &client, NULL); priv->report_id = g_signal_connect (client, "report", G_CALLBACK (report_received), self); /* Open sensor */ SSC_SENSOR_CLASS (ssc_sensor_proximity_parent_class)->open (SSC_SENSOR (self), cancellable, (GAsyncReadyCallback)proximity_open_ready, task); } gboolean ssc_sensor_proximity_open_sync (SSCSensorProximity *self, GCancellable *cancellable, GError **error) { gboolean success = FALSE; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_proximity_open (self, cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); success = ssc_sensor_proximity_open_finish (self, ctx.result, error); ssc_common_clear_sync_context (&ctx); return success; } /*****************************************************************************/ static void ssc_sensor_proximity_class_init (SSCSensorProximityClass *klass) { signals[SIGNAL_MEASUREMENT] = g_signal_new ("measurement", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); } static void ssc_sensor_proximity_init (SSCSensorProximity *self) { } SSCSensorProximity * ssc_sensor_proximity_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; SSCSensorProximityPrivate *priv = NULL; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); if (!sensor) { g_object_unref (source); return NULL; } priv = ssc_sensor_proximity_get_instance_private (SSC_SENSOR_PROXIMITY (sensor)); /* Only bypass reporting once if the sensor is opened, not during initialization */ priv->reported_once = TRUE; g_object_unref (source); return SSC_SENSOR_PROXIMITY (sensor); } void ssc_sensor_proximity_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR_PROXIMITY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, "proximity", NULL); } SSCSensorProximity * ssc_sensor_proximity_new_sync (GCancellable *cancellable, GError **error) { SSCSensorProximity *self = NULL; SyncContext ctx; ssc_common_init_sync_context (&ctx); ssc_sensor_proximity_new (cancellable, ssc_common_callback_sync_context, &ctx); ssc_common_wait_sync_context (&ctx); self = ssc_sensor_proximity_new_finish (ctx.result, error); ssc_common_clear_sync_context (&ctx); return self; } libssc/src/libssc-sensor-proximity.h000066400000000000000000000043001515656607000201350ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_PROXIMITY_H_ #define _LIBSSC_SENSOR_PROXIMITY_H_ #include #include #include "libssc-sensor.h" #define SSC_TYPE_SENSOR_PROXIMITY (ssc_sensor_proximity_get_type()) typedef struct _SSCSensorProximity { SSCSensor parent; } SSCSensorProximity; G_DECLARE_FINAL_TYPE (SSCSensorProximity, ssc_sensor_proximity, SSC, SENSOR_PROXIMITY, SSCSensor); void ssc_sensor_proximity_new (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensorProximity *ssc_sensor_proximity_new_finish (GAsyncResult *result, GError **error); SSCSensorProximity *ssc_sensor_proximity_new_sync (GCancellable *cancellable, GError **error); void ssc_sensor_proximity_open (SSCSensorProximity *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_proximity_open_finish (SSCSensorProximity *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_proximity_open_sync (SSCSensorProximity *self, GCancellable *cancellable, GError **error); void ssc_sensor_proximity_close (SSCSensorProximity *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_proximity_close_finish (SSCSensorProximity *self, GAsyncResult *result, GError **error); gboolean ssc_sensor_proximity_close_sync (SSCSensorProximity *self, GCancellable *cancellable, GError **error); #endif /* _LIBSSC_SENSOR_PROXIMITY_H_ */ libssc/src/libssc-sensor.c000066400000000000000000000711101515656607000160710ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include "libssc-client-private.h" #include "libssc-common-private.h" #include "ssc-common.pb-c.h" #include "ssc-sensor-suid.pb-c.h" #include "libssc-sensor.h" #define MAX_RETRIES 100 enum { PROP_NAME = 1, PROP_UID_LOW = 2, PROP_UID_HIGH = 3, PROP_VENDOR = 4, PROP_DATA_TYPE = 5, PROP_STREAM_TYPE = 6, PROP_AVAILABLE = 7, PROP_SAMPLE_RATE = 8, PROP_CLIENT = 9, PROP_FILE = 10, PROP_MOUNT_MATRIX = 11, N_PROPERTIES }; static GParamSpec *properties[N_PROPERTIES]; typedef struct { GTask *task; SSCSensor *sensor; } ReportReceivedContext; typedef struct _SSCSensorPrivate { guint64 uid_low; guint64 uid_high; gchar *name; gchar *vendor; gchar *data_type; guint stream_type; gboolean available; gfloat sample_rate; gfloat mount_matrix[3][3]; SSCClient *client; guint report_id; gboolean attr_populated; gboolean service_available; guint service_retries; } SSCSensorPrivate; static void async_initable_iface_init (GAsyncInitableIface *iface); G_DEFINE_TYPE_WITH_CODE (SSCSensor, ssc_sensor, G_TYPE_OBJECT, G_ADD_PRIVATE (SSCSensor) G_IMPLEMENT_INTERFACE (G_TYPE_ASYNC_INITABLE, async_initable_iface_init)) static void wait_for_sensor_service (SSCSensor *self, GTask *task); static void discover (SSCSensor *self, GTask *task); static void attribute (SSCSensor *self, GTask *task); static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data); GQuark ssc_sensor_error_quark (void) { static GQuark quark = 0; if (!quark) quark = g_quark_from_static_string("ssc-sensor"); return quark; } /*****************************************************************************/ static gboolean sensor_close_finish (SSCSensor *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } static void sensor_close_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); GError *error = NULL; if (!ssc_client_send_finish (self, result, &error)) { g_task_return_error (task, error); g_clear_object (&task); g_debug ("Sensor disable request failed: %s", error->message); return; } g_debug ("Sensor disable request sent successfully"); g_task_return_boolean (task, TRUE); g_object_unref (task); } static void sensor_close (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCSensorPrivate *priv = NULL; task = g_task_new (self, cancellable, callback, user_data); priv = ssc_sensor_get_instance_private (self); g_info ("Disabling sensor (%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT ")", priv->uid_high, priv->uid_low); ssc_client_send (priv->client, priv->uid_high, priv->uid_low, SSC_MSG_REQUEST_DISABLE_REPORT, NULL, g_task_get_cancellable (task), (GAsyncReadyCallback)sensor_close_ready, task); } gboolean ssc_sensor_close_finish (SSCSensor *self, GAsyncResult *result, GError **error) { return SSC_SENSOR_GET_CLASS (self)->close_finish (self, result, error); } void ssc_sensor_close (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (SSC_SENSOR_GET_CLASS (self)->close && SSC_SENSOR_GET_CLASS (self)->close_finish); SSC_SENSOR_GET_CLASS (self)->close (self, cancellable, callback, user_data); } /*****************************************************************************/ static gboolean sensor_open_finish (SSCSensor *self, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } static void sensor_open_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); GError *error = NULL; if (!ssc_client_send_finish (self, result, &error)) { g_task_return_error (task, error); g_clear_object (&task); g_debug ("Sensor enable request failed: %s", error->message); return; } g_debug ("Sensor enable request sent successfully"); } static void sensor_open (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { SSCSensorPrivate *priv = NULL; GTask *task = NULL; SscEnableConfigRequest msg; g_autoptr (GArray) buf = NULL; ReportReceivedContext *ctx; guint32 msg_id; GError *error = NULL; priv = ssc_sensor_get_instance_private (self); task = g_task_new (self, cancellable, callback, user_data); if (!priv->available) { g_set_error (&error, ssc_sensor_error_quark(), SSC_SENSOR_ERROR_UNAVAILABLE, "Cannot open sensor, unavailable"); g_task_return_error (task, error); g_object_unref (task); return; } g_info ("Enabling sensor (%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT ") in '%s' mode", priv->uid_high, priv->uid_low, priv->stream_type == SSC_STREAM_TYPE_CONTINUOUS? "continuous" : "on-change"); /* * Sensors which support continuous streaming need a sample rate, * on-change sensors do not have a message payload */ if (priv->stream_type == SSC_STREAM_TYPE_CONTINUOUS) { ssc_enable_config_request__init (&msg); if (priv->sample_rate <= 0.0) { g_set_error (&error, ssc_sensor_error_quark(), SSC_SENSOR_ERROR_SAMPLE_RATE_UNAVAILABLE, "Sensor sample rate is unavailable"); g_task_return_error (task, error); g_object_unref (task); return; } msg.sample_rate = priv->sample_rate; buf = g_array_new (FALSE, FALSE, 1); g_array_set_size (buf, ssc_enable_config_request__get_packed_size (&msg)); ssc_enable_config_request__pack (&msg, (unsigned char*) buf->data); msg_id = SSC_MSG_REQUEST_ENABLE_REPORT_CONTINUOUS; /* * Sensors which support on-change do not need any configuration, * only a different message ID to enable them. */ } else if (priv->stream_type == SSC_STREAM_TYPE_ON_CHANGE) { msg_id = SSC_MSG_REQUEST_ENABLE_REPORT_ON_CHANGE; } else g_assert_not_reached (); ctx = g_slice_new (ReportReceivedContext); ctx->task = task; ctx->sensor = self; /* Start listening for report signals */ priv->report_id = g_signal_connect (priv->client, "report", G_CALLBACK (report_received), ctx); ssc_client_send (priv->client, priv->uid_high, priv->uid_low, msg_id, buf, g_task_get_cancellable (task), (GAsyncReadyCallback)sensor_open_ready, task); } gboolean ssc_sensor_open_finish (SSCSensor *self, GAsyncResult *result, GError **error) { return SSC_SENSOR_GET_CLASS (self)->open_finish (self, result, error); } void ssc_sensor_open (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_assert (SSC_SENSOR_GET_CLASS (self)->open && SSC_SENSOR_GET_CLASS (self)->open_finish); SSC_SENSOR_GET_CLASS (self)->open (self, cancellable, callback, user_data); } /*****************************************************************************/ static void report_received (SSCClient *self, guint32 msg_id, guint64 uid_high, guint64 uid_low, GArray *buf, gpointer user_data) { SscSuidResponse *suid_msg = NULL; SscAttrResponse *attr_msg = NULL; SscConfigResponse *config_msg = NULL; SSCSensorPrivate *priv = NULL; ReportReceivedContext *ctx = user_data; gboolean attributes_populated = FALSE; gboolean mount_matrix_attribute_populated = FALSE; GError *error = NULL; priv = ssc_sensor_get_instance_private (ctx->sensor); /* Discover response */ if (uid_high == SSC_SENSOR_UID_SUID_HIGH && uid_low == SSC_SENSOR_UID_SUID_LOW && msg_id == SSC_MSG_RESPONSE_SUID) { suid_msg = ssc_suid_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (suid_msg == NULL) { g_warning ("Failed to unpack SUID Discover message"); return; } /* Intercept requests for service discovery first */ if (suid_msg != NULL && suid_msg->n_uid > 0 && g_strcmp0 (suid_msg->data_type, "registry") == 0) { /* 'registry' sensor found, service available */ priv->service_available = TRUE; ssc_suid_response__free_unpacked (suid_msg, NULL); g_debug ("'registry' sensor available, discovering sensor now"); discover(ctx->sensor, ctx->task); return; } if (!priv->service_available) { priv->service_retries++; ssc_suid_response__free_unpacked (suid_msg, NULL); /* Fail to discover when service is not available after 100s */ if (priv->service_retries >= MAX_RETRIES) { g_signal_handler_disconnect (self, priv->report_id); priv->report_id = 0; g_set_error (&error, ssc_sensor_error_quark(), SSC_SENSOR_ERROR_NO_SERVICE, "Sensor service unavailable"); g_warning ("'registry' sensor unavailable, is hexagonrpcd running?"); g_task_return_error (ctx->task, error); g_clear_object (&ctx->task); g_slice_free (ReportReceivedContext, ctx); return; } g_usleep(1 * G_USEC_PER_SEC); g_debug ("'registry' sensor unavailable, retrying... (%d/%d)", priv->service_retries, MAX_RETRIES); wait_for_sensor_service (ctx->sensor, ctx->task); return; } /* Ignore if data type does not match due to concurrency */ if (g_strcmp0 (suid_msg->data_type, priv->data_type) != 0) { ssc_suid_response__free_unpacked (suid_msg, NULL); return; } /* Only default sensor for data type is reported */ if (suid_msg != NULL && suid_msg->n_uid > 0) { priv->uid_high = suid_msg->uid[0]->high; priv->uid_low = suid_msg->uid[0]->low; g_debug ("Discovered '%s' sensor (%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT ")", priv->data_type, priv->uid_high, priv->uid_low); ssc_suid_response__free_unpacked (suid_msg, NULL); /* Sensor discovered, populate attributes */ attribute (ctx->sensor, ctx->task); return; /* No sensor available for specified data type, complete task */ } else { g_debug ("No '%s' sensor available", priv->data_type); ssc_suid_response__free_unpacked (suid_msg, NULL); g_signal_handler_disconnect (self, priv->report_id); priv->report_id = 0; g_task_return_boolean (ctx->task, FALSE); g_clear_object (&ctx->task); g_slice_free (ReportReceivedContext, ctx); return; } /* Attributes populating response */ } else if (uid_high == priv->uid_high && uid_low == priv->uid_low && msg_id == SSC_MSG_RESPONSE_GET_ATTRIBUTES) { attr_msg = ssc_attr_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (attr_msg == NULL) { g_warning ("Failed to unpack SUID Attributes message"); return; } for (gsize i = 0; i < attr_msg->n_attr; i++) { switch (attr_msg->attr[i]->id) { case SSC_ATTRIBUTE_NAME: if (attr_msg->attr[i]->value_array->n_v == 1 && attr_msg->attr[i]->value_array->v[0]->s) priv->name = g_strdup (attr_msg->attr[i]->value_array->v[0]->s); break; case SSC_ATTRIBUTE_VENDOR: if (attr_msg->attr[i]->value_array->n_v == 1 && attr_msg->attr[i]->value_array->v[0]->s) priv->vendor = g_strdup (attr_msg->attr[i]->value_array->v[0]->s); break; case SSC_ATTRIBUTE_AVAILABLE: if (attr_msg->attr[i]->value_array->n_v == 1 && attr_msg->attr[i]->value_array->v[0]->has_b) priv->available = attr_msg->attr[i]->value_array->v[0]->b; break; case SSC_ATTRIBUTE_SAMPLE_RATE: /* Only a single sample rate is supported for now. */ for (gsize j = 0; j < attr_msg->attr[i]->value_array->n_v; j++) { if (attr_msg->attr[i]->value_array->v[j]->has_f && attr_msg->attr[i]->value_array->v[j]->f > 0) { priv->sample_rate = attr_msg->attr[i]->value_array->v[j]->f; break; } } break; case SSC_ATTRIBUTE_STREAM_TYPE: if (attr_msg->attr[i]->value_array->n_v == 1 && attr_msg->attr[i]->value_array->v[0]->has_i) priv->stream_type = attr_msg->attr[i]->value_array->v[0]->i; break; case SSC_ATTRIBUTE_MOUNT_MATRIX: mount_matrix_attribute_populated = TRUE; /* 3x3 mount matrix has max 9 values but a 3x4 matrix is provided, use the first 9 values */ for (gsize j = 0; j < MIN(attr_msg->attr[i]->value_array->n_v, 9); j++) { if (attr_msg->attr[i]->value_array->v[j]->has_f) { priv->mount_matrix[j/3][j%3] = attr_msg->attr[i]->value_array->v[j]->f; } } /* Fallback to identity matrix in case matrix is all 0 */ gint sum = 0; for (gsize k = 0; k < 9; k++) sum += priv->mount_matrix[k/3][k%3]; if (sum == 0) { priv->mount_matrix[0][0] = 1.0; priv->mount_matrix[1][1] = 1.0; priv->mount_matrix[2][2] = 1.0; g_warning ("Mount matrix provided by firmware is all 0, falling back to identity matrix!"); } break; } } attributes_populated = TRUE; g_debug ("Attributes populated for '%s' sensor (%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT ")", priv->data_type, priv->uid_high, priv->uid_low); g_debug (" name: %s", priv->name); g_debug (" vendor: %s", priv->vendor); g_debug (" data-type: %s", priv->data_type); g_debug (" stream-type: %s", priv->stream_type == SSC_STREAM_TYPE_CONTINUOUS ? "continuous" : "on-change"); g_debug (" sample-rate: %f Hz", priv->sample_rate); g_debug (" available: %s", priv->available ? "yes" : "no"); if (mount_matrix_attribute_populated) { g_debug (" mount-matrix: [[%f,%f,%f],[%f,%f,%f],[%f,%f,%f]]", priv->mount_matrix[0][0], priv->mount_matrix[0][1], priv->mount_matrix[0][2], priv->mount_matrix[1][0], priv->mount_matrix[1][1], priv->mount_matrix[1][2], priv->mount_matrix[2][0], priv->mount_matrix[2][1], priv->mount_matrix[2][2]); } else g_debug (" mount-matrix: undefined"); /* Sensor initialized, complete task and stop listening */ if (ctx->task) { g_signal_handler_disconnect (self, priv->report_id); priv->report_id = 0; g_task_return_boolean (ctx->task, attributes_populated); g_clear_object (&ctx->task); g_slice_free (ReportReceivedContext, ctx); } ssc_attr_response__free_unpacked (attr_msg, NULL); return; /* * Sensor is enabled when a configuration update is received. * Since some sensors do not emit a configuration update, * either a measurement or configuration update completes the enabling task, whatever comes first. */ } else if (uid_high == priv->uid_high && uid_low == priv->uid_low && msg_id == SSC_MSG_RESPONSE_ENABLE_REPORT) { config_msg = ssc_config_response__unpack (NULL, buf->len, (const uint8_t *) buf->data); if (config_msg == NULL) { g_warning ("Failed to unpack SUID Configuration message"); return; } g_debug ("Configuration updated for '%s' sensor (%" G_GUINT64_FORMAT "%" G_GUINT64_FORMAT ")", priv->data_type, priv->uid_high, priv->uid_low); g_debug (" mode: %s", config_msg->mode ? config_msg->mode : "UNKNOWN"); g_debug (" sample-rate: %f Hz", config_msg->has_sample_rate ? config_msg->sample_rate : 0.0); /* Configuration updated, complete task and stop listening */ if (ctx->task) { g_signal_handler_disconnect (self, priv->report_id); priv->report_id = 0; g_task_return_boolean (ctx->task, TRUE); g_clear_object (&ctx->task); g_slice_free (ReportReceivedContext, ctx); } ssc_config_response__free_unpacked (config_msg, NULL); return; /* * Some sensors do not emit a configuration update when they are enabled such as the Rotation Vector sensor. * Assume they are enabled when a measurement is received. * Apply this for any sensor to cover new sensors in the future as well. * Either a configuration update or measurement will complete the task and disconnect the listener. */ } else if (uid_high == priv->uid_high && uid_low == priv->uid_low && (msg_id == SSC_MSG_REPORT_MEASUREMENT || msg_id == SSC_MSG_REPORT_MEASUREMENT_PROXIMITY)) { g_debug ("Measurement received for '%s' sensor (%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT "), assuming enabled", priv->data_type, priv->uid_high, priv->uid_low); if (ctx->task) { g_signal_handler_disconnect (self, priv->report_id); priv->report_id = 0; g_task_return_boolean (ctx->task, TRUE); g_clear_object (&ctx->task); g_slice_free (ReportReceivedContext, ctx); } } } /*****************************************************************************/ static void attribute_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { g_autoptr (GError) error = NULL; if (!ssc_client_send_finish (self, result, &error)) { g_warning ("Sensor attribute request failed: %s", error->message); return; } g_debug ("Sensor attribute request sent successfully"); } static void attribute (SSCSensor *self, GTask *task) { g_autoptr (GArray) buf = NULL; SscAttrRequest msg; SSCSensorPrivate *priv = NULL; priv = ssc_sensor_get_instance_private (self); /* Build attributes request */ ssc_attr_request__init (&msg); msg.has_enable_updates = true; msg.enable_updates = false; buf = g_array_new (FALSE, FALSE, 1); g_array_set_size (buf, ssc_attr_request__get_packed_size (&msg)); ssc_attr_request__pack (&msg, (unsigned char*) buf->data); /* Send attribute request */ ssc_client_send (priv->client, priv->uid_high, priv->uid_low, SSC_MSG_REQUEST_GET_ATTRIBUTES, buf, g_task_get_cancellable (task), (GAsyncReadyCallback)attribute_ready, NULL); } /*****************************************************************************/ static void discovery_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GTask *task = G_TASK (user_data); if (!ssc_client_send_finish (self, result, &error)) { g_task_return_error (task, error); g_clear_object (&task); return; } /* Task completion will happen when sensor discovery is complete */ g_debug ("Sensor discovery request sent"); } static void discover (SSCSensor *self, GTask *task) { SSCSensorPrivate *priv = NULL; SscSuidRequest msg; g_autoptr (GArray) buf = NULL; priv = ssc_sensor_get_instance_private (self); g_debug ("Discovering sensor UID for data type '%s'", priv->data_type); /* * Request for sensors for given datatype, if multiple sensors support a datatype, * only return the default sensor. Do not monitor for hotplugged sensors. */ ssc_suid_request__init (&msg); msg.data_type = priv->data_type; msg.has_enable_updates = true; msg.enable_updates = false; msg.has_only_default_values = true; msg.only_default_values = true; buf = g_array_new (FALSE, FALSE, 1); g_array_set_size (buf, ssc_suid_request__get_packed_size (&msg)); ssc_suid_request__pack (&msg, (unsigned char*) buf->data); ssc_client_send (priv->client, SSC_SENSOR_UID_SUID_HIGH, SSC_SENSOR_UID_SUID_LOW, SSC_MSG_REQUEST_SUID, buf, g_task_get_cancellable (task), (GAsyncReadyCallback)discovery_ready, task); } /*****************************************************************************/ static void wait_for_sensor_service_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GTask *task = G_TASK (user_data); if (!ssc_client_send_finish (self, result, &error)) { g_task_return_error (task, error); g_clear_object (&task); return; } /* Task completion will happen when sensor discovery is complete */ g_debug ("Polled 'registry' sensor for service availability"); } static void wait_for_sensor_service (SSCSensor *self, GTask *task) { SSCSensorPrivate *priv = NULL; SscSuidRequest msg; g_autoptr (GArray) buf = NULL; priv = ssc_sensor_get_instance_private (self); g_debug ("Checking sensor service availability"); /* * Monitor the availability of the sensor service on the DSP * by polling for the 'registry' sensor until it available. * If it becomes available, all other sensors can be initialized. */ ssc_suid_request__init (&msg); msg.data_type = "registry"; msg.has_enable_updates = true; msg.enable_updates = false; msg.has_only_default_values = true; msg.only_default_values = true; buf = g_array_new (FALSE, FALSE, 1); g_array_set_size (buf, ssc_suid_request__get_packed_size (&msg)); ssc_suid_request__pack (&msg, (unsigned char*) buf->data); ssc_client_send (priv->client, SSC_SENSOR_UID_SUID_HIGH, SSC_SENSOR_UID_SUID_LOW, SSC_MSG_REQUEST_SUID, buf, g_task_get_cancellable (task), (GAsyncReadyCallback)wait_for_sensor_service_ready, task); } /*****************************************************************************/ static void client_ready (SSCClient *client, GAsyncResult *result, gpointer user_data) { GTask *task = G_TASK (user_data); ReportReceivedContext *ctx = NULL; SSCSensorPrivate *priv = NULL; GError *error = NULL; SSCSensor *self = NULL; self = g_task_get_source_object (task); priv = ssc_sensor_get_instance_private (self); /* Client allocation */ priv->client = ssc_client_new_finish (result, &error); if (!priv->client) { g_task_return_error (task, error); g_object_unref (task); return; } ctx = g_slice_new (ReportReceivedContext); ctx->task = task; ctx->sensor = self; /* Start listening for report signals */ priv->report_id = g_signal_connect (priv->client, "report", G_CALLBACK (report_received), ctx); /* Wait for sensor service before discovering sensor */ priv->service_available = FALSE; priv->service_retries = 0; wait_for_sensor_service (self, task); } static void initable_init_async (GAsyncInitable *initable, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = NULL; SSCSensor *self = NULL; self = SSC_SENSOR (initable); task = g_task_new (self, cancellable, callback, user_data); ssc_client_new (g_task_get_cancellable (task), (GAsyncReadyCallback)client_ready, task); } static gboolean initable_init_finish (GAsyncInitable *initable, GAsyncResult *result, GError **error) { return g_task_propagate_boolean (G_TASK (result), error); } static void async_initable_iface_init (GAsyncInitableIface *iface) { iface->init_async = initable_init_async; iface->init_finish = initable_init_finish; } static void sensor_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { SSCSensor *self = SSC_SENSOR (object); SSCSensorPrivate *priv = ssc_sensor_get_instance_private (self); switch (prop_id) { case PROP_UID_LOW: priv->uid_low = g_value_get_uint64 (value); break; case PROP_UID_HIGH: priv->uid_high = g_value_get_uint64 (value); break; case PROP_DATA_TYPE: g_free (priv->data_type); priv->data_type = g_value_dup_string (value); break; case PROP_CLIENT: priv->client = g_value_dup_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void sensor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { SSCSensor *self = SSC_SENSOR (object); SSCSensorPrivate *priv = ssc_sensor_get_instance_private (self); switch (prop_id) { case PROP_UID_LOW: g_value_set_uint64 (value, priv->uid_low); break; case PROP_UID_HIGH: g_value_set_uint64 (value, priv->uid_high); break; case PROP_NAME: g_value_set_string (value, priv->name); break; case PROP_VENDOR: g_value_set_string (value, priv->vendor); break; case PROP_DATA_TYPE: g_value_set_string (value, priv->data_type); break; case PROP_STREAM_TYPE: g_value_set_uint (value, priv->stream_type); break; case PROP_AVAILABLE: g_value_set_boolean (value, priv->available); break; case PROP_SAMPLE_RATE: g_value_set_float (value, priv->sample_rate); break; case PROP_MOUNT_MATRIX: g_value_set_pointer (value, priv->mount_matrix); break; case PROP_CLIENT: g_value_set_object (value, priv->client); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void sensor_dispose (GObject *object) { SSCSensor *self = SSC_SENSOR (object); SSCSensorPrivate *priv = ssc_sensor_get_instance_private (self); if (priv->name) g_free (priv->name); if (priv->vendor) g_free (priv->vendor); if (priv->data_type) g_free (priv->data_type); g_clear_object (&priv->client); } static void ssc_sensor_class_init (SSCSensorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); SSCSensorClass *ssc_sensor_class = SSC_SENSOR_CLASS (klass); object_class->get_property = sensor_get_property; object_class->set_property = sensor_set_property; object_class->dispose = sensor_dispose; ssc_sensor_class->open = sensor_open; ssc_sensor_class->open_finish = sensor_open_finish; ssc_sensor_class->close = sensor_close; ssc_sensor_class->close_finish = sensor_close_finish; properties[PROP_UID_LOW] = g_param_spec_uint64 (SSC_SENSOR_UID_LOW, "Sensor UID low", "Lower 64 bits of the sensor UID", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (object_class, PROP_UID_LOW, properties[PROP_UID_LOW]); properties[PROP_UID_HIGH] = g_param_spec_uint64 (SSC_SENSOR_UID_HIGH, "Sensor UID high", "Higher 64 bits of the sensor UID", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (object_class, PROP_UID_HIGH, properties[PROP_UID_HIGH]); properties[PROP_NAME] = g_param_spec_string (SSC_SENSOR_NAME, "Sensor driver name", "Name of the sensor driver.", NULL, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_NAME, properties[PROP_NAME]); properties[PROP_VENDOR] = g_param_spec_string (SSC_SENSOR_VENDOR, "Sensor vendor", "Name of the vendor of the sensor.", NULL, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_VENDOR, properties[PROP_VENDOR]); properties[PROP_DATA_TYPE] = g_param_spec_string (SSC_SENSOR_DATA_TYPE, "Data type", "The data type supported by the sensor.", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (object_class, PROP_DATA_TYPE, properties[PROP_DATA_TYPE]); properties[PROP_STREAM_TYPE] = g_param_spec_string (SSC_SENSOR_STREAM_TYPE, "Stream type", "The stream type supported by the sensor.", NULL, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_STREAM_TYPE, properties[PROP_STREAM_TYPE]); properties[PROP_AVAILABLE] = g_param_spec_string (SSC_SENSOR_AVAILABLE, "Availability", "If the sensor is available for measurements.", NULL, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_AVAILABLE, properties[PROP_AVAILABLE]); properties[PROP_SAMPLE_RATE] = g_param_spec_string (SSC_SENSOR_SAMPLE_RATE, "Sample rate", "The sample rate in Hz supported by the sensor.", NULL, G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_SAMPLE_RATE, properties[PROP_SAMPLE_RATE]); properties[PROP_MOUNT_MATRIX] = g_param_spec_pointer (SSC_SENSOR_MOUNT_MATRIX, "Mount matrix", "The mount matrix of the sensor in the physical space.", G_PARAM_READABLE); g_object_class_install_property (object_class, PROP_MOUNT_MATRIX, properties[PROP_MOUNT_MATRIX]); properties[PROP_CLIENT] = g_param_spec_object (SSC_SENSOR_CLIENT, "SSC Client", "Reference to SSC Client", SSC_TYPE_CLIENT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); g_object_class_install_property (object_class, PROP_CLIENT, properties[PROP_CLIENT]); } static void ssc_sensor_init (SSCSensor *self) { SSCSensorPrivate *priv = NULL; priv = ssc_sensor_get_instance_private (self); /* Use identity matrix in case no mount matrix is exposed */ memset(priv->mount_matrix, 0, sizeof(priv->mount_matrix)); priv->mount_matrix[0][0] = 1.0; priv->mount_matrix[1][1] = 1.0; priv->mount_matrix[2][2] = 1.0; } SSCSensor * ssc_sensor_new_finish (GAsyncResult *result, GError **error) { GObject *sensor; GObject *source; source = g_async_result_get_source_object (result); sensor = g_async_initable_new_finish (G_ASYNC_INITABLE (source), result, error); g_object_unref (source); if (!sensor) return NULL; return SSC_SENSOR (sensor); } void ssc_sensor_new (gchar *data_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async ( SSC_TYPE_SENSOR, G_PRIORITY_DEFAULT, cancellable, callback, user_data, SSC_SENSOR_DATA_TYPE, data_type, NULL); } libssc/src/libssc-sensor.h000066400000000000000000000053111515656607000160760ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_SENSOR_H_ #define _LIBSSC_SENSOR_H_ #include #include G_BEGIN_DECLS typedef struct _SSCSensor SSCSensor; typedef struct _SSCClient SSCClient; #define SSC_TYPE_SENSOR (ssc_sensor_get_type()) G_DECLARE_DERIVABLE_TYPE (SSCSensor, ssc_sensor, SSC, SENSOR, GObject); typedef enum { SSC_SENSOR_ERROR_UNAVAILABLE, SSC_SENSOR_ERROR_SAMPLE_RATE_UNAVAILABLE, SSC_SENSOR_ERROR_NO_SERVICE, } SSCSensorError; GQuark ssc_sensor_error_quark(void); #define SSC_SENSOR_UID_LOW "uid-low" #define SSC_SENSOR_UID_HIGH "uid-high" #define SSC_SENSOR_NAME "name" #define SSC_SENSOR_VENDOR "vendor" #define SSC_SENSOR_DATA_TYPE "data-type" #define SSC_SENSOR_STREAM_TYPE "stream-type" #define SSC_SENSOR_AVAILABLE "available" #define SSC_SENSOR_SAMPLE_RATE "sample-rate" #define SSC_SENSOR_CLIENT "client" #define SSC_SENSOR_MOUNT_MATRIX "mount-matrix" void ssc_sensor_new (gchar *data_type, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); SSCSensor *ssc_sensor_new_finish (GAsyncResult *result, GError **error); void ssc_sensor_open (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_open_finish (SSCSensor *self, GAsyncResult *result, GError **error); void ssc_sensor_close (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ssc_sensor_close_finish (SSCSensor *self, GAsyncResult *result, GError **error); struct _SSCSensorClass { GObjectClass parent_class; void (*open) (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean (*open_finish) (SSCSensor *self, GAsyncResult *result, GError **error); void (*close) (SSCSensor *self, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean (*close_finish) (SSCSensor *self, GAsyncResult *result, GError **error); }; G_END_DECLS #endif /* _LIBSSC_SENSOR_H_ */ libssc/src/libssc-version-private.h.in000066400000000000000000000040571515656607000203350ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_VERSION_H_ #define _LIBSSC_VERSION_H_ /** * LIBSSC_MAJOR_VERSION: * * The major version number of the libssc * which this source is compiled against. * * Since: 0.0.1 */ #define LIBSSC_MAJOR_VERSION (@LIBSSC_MAJOR_VERSION@) /** * LIBSSC_MINOR_VERSION: * * The minor version number of the libssc * which this source is compiled against. * * Since: 0.0.1 */ #define LIBSSC_MINOR_VERSION (@LIBSSC_MINOR_VERSION@) /** * LIBSSC_PATCH_VERSION: * * The patch version number of the libssc * which this source is compiled against. * * Since: 0.0.1 */ #define LIBSSC_PATCH_VERSION (@LIBSSC_PATCH_VERSION@) /** * LIBSSC_CHECK_VERSION: * @major: major version (e.g. 1 for version 1.2.3) * @minor: minor version (e.g. 2 for version 1.2.3) * @patch: patch version (e.g. 3 for version 1.2.3) * * Checks the version of the libssc that is being compilex against. * * Returns: %TRUE if the version of header files is equal or newer than the passed-in values. * * Since: 0.0.1 */ #define LIBSSC_CHECK_VERSION(major,minor,patch) \ (LIBSSC_MAJOR_VERSION > (major) || \ (LIBSSC_MAJOR_VERSION == (major) && LIBSSC_MINOR_VERSION > (minor)) || \ (LIBSSC_MAJOR_VERSION == (major) && LIBSSC_MINOR_VERSION == (minor) && LIBSSC_PATCH_VERSION >= (patch))) #endif /* _LIBSSC_VERSION_H_ */ libssc/src/libssc.h000066400000000000000000000020371515656607000145710ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef _LIBSSC_H_ #define _LIBSSC_H_ #include #include #include #include #include #include #endif /* _LIBSSC_H_ */ libssc/src/meson.build000066400000000000000000000055661515656607000153150ustar00rootroot00000000000000# SPDX-License-Identifier: GPL-3.0-or-later # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # libssc_glib_inc = include_directories('.') version_header = configure_file( input: 'libssc-version-private.h.in', output: '@BASENAME@', configuration: version_conf, install_dir: libssc_glib_pkgincludedir, ) headers += files( 'libssc.h', 'libssc-sensor.h', 'libssc-sensor-proximity.h', 'libssc-sensor-light.h', 'libssc-sensor-accelerometer.h', 'libssc-sensor-magnetometer.h', 'libssc-sensor-compass.h', 'libssc-sensor-gyroscope.h', ) install_headers( headers, install_dir: libssc_glib_pkgincludedir ) sources += files( 'libssc-common.c', 'libssc-client.c', 'libssc-sensor.c', 'libssc-sensor-proximity.c', 'libssc-sensor-light.c', 'libssc-sensor-accelerometer.c', 'libssc-sensor-magnetometer.c', 'libssc-sensor-compass.c', 'libssc-sensor-gyroscope.c', ) cli_sources = files( 'libssc-cli.c', ) so_version = '2' libssc = shared_library( 'ssc', sources: sources, include_directories: includes, dependencies: deps, install: true, soversion: so_version, link_args: [ '-Wl,--version-script=' + map_source[0].full_path() ], ) ssccli = executable( 'ssccli', sources: cli_sources, include_directories: includes, dependencies: deps, link_with: libssc, install: true, ) ns = 'SSC' pkg.generate( libraries: libssc, version: libssc_version, name: 'libssc', description: 'Library to access sensors of Qualcomm Sensor Core', subdirs: libssc_glib_include_subdir, requires: ['glib-2.0', 'gobject-2.0', 'gio-2.0', 'qmi-glib'], ) if dependency('gobject-introspection-1.0', required: false).found() gnome = import('gnome') gir_files = gnome.generate_gir(libssc, includes: ['GLib-2.0', 'GObject-2.0', 'Gio-2.0', 'Qmi-1.0'], sources: [headers, sources], namespace: ns, symbol_prefix: 'ssc', nsversion: so_version, export_packages: 'libssc-0', header: 'libssc.h', install: true, ) if find_program('vapigen', required: false).found() gnome.generate_vapi( 'libssc', packages: ['gobject-2.0', 'glib-2.0', 'gio-2.0'], sources: gir_files.get(0), install: true, ) endif endif libssc/tests/000077500000000000000000000000001515656607000135125ustar00rootroot00000000000000libssc/tests/accelerometer.c000066400000000000000000000235711515656607000165000ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-accelerometer.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; typedef struct { gfloat x; gfloat y; gfloat z; } XYZMeasurement; static gboolean accelerometer_close_cb (SensorData *data) { SSCSensorAccelerometer *self = SSC_SENSOR_ACCELEROMETER (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_accelerometer_close_sync (self, NULL, &error)); /* Check measurements */ g_assert_cmpint (measurements->len, >=, 8); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 0).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 0).y, ==, 0.0); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 0).z, -9.81, 0.001); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).x, ==, 2.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).y, ==, 1.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).x, ==, -2.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).y, ==, -1.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).y, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).y, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).z, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).z, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).z, ==, 1.0); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void accelerometer_measurement (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y, gfloat accel_z, gpointer user_data) { GArray *measurements = user_data; XYZMeasurement measurement; g_test_message("Acceleration: X%f Y%f Z%f", accel_x, accel_y, accel_z); measurement.x = accel_x; measurement.y = accel_y; measurement.z = accel_z; /* Collect measurement */ g_array_append_val (measurements, measurement); } static void test_libssc_sensor_accelerometer(void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (XYZMeasurement)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `accelerometer sensor operations`"); /* Create sensor */ SSCSensorAccelerometer *sensor = ssc_sensor_accelerometer_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (accelerometer_measurement), measurements); /* Wait until all mocking measurements are received */ data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)accelerometer_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_accelerometer_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void test_libssc_sensor_accelerometer_probe_sync (void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `probing accelerometer sensor with open_sync and close_sync`"); /* Create sensor */ SSCSensorAccelerometer *sensor = ssc_sensor_accelerometer_new_sync (NULL, &error); /* Open sensor */ g_assert_true (ssc_sensor_accelerometer_open_sync (sensor, NULL, &error)); /* Close sensor */ g_assert_true (ssc_sensor_accelerometer_close_sync (sensor, NULL, &error)); } static gboolean accelerometer_mount_matrix_close_cb (SensorData *data) { SSCSensorAccelerometer *self = SSC_SENSOR_ACCELEROMETER (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_accelerometer_close_sync (self, NULL, &error)); /* Check measurements */ g_assert_cmpint (measurements->len, >=, 8); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 0).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 0).y, ==, 0.0); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 0).z, -9.81, 0.001); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).x, ==, 2.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).y, ==, 1.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 1).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).x, ==, -2.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).y, ==, -1.5); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 2).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).y, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 3).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).x, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).y, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 4).z, ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 5).z, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).z, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 6).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).x, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).y, ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, XYZMeasurement, 7).z, ==, 1.0); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void accelerometer_mount_matrix_measurement (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y, gfloat accel_z, gpointer user_data) { GArray *measurements = user_data; XYZMeasurement measurement; g_test_message("Acceleration: X%f Y%f Z%f", accel_x, accel_y, accel_z); measurement.x = accel_x; measurement.y = accel_y; measurement.z = accel_z; /* Collect measurement */ g_array_append_val (measurements, measurement); } static void test_libssc_sensor_accelerometer_mount_matrix (void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (XYZMeasurement)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `accelerometer sensor operations with mount matrix`"); /* Create sensor */ SSCSensorAccelerometer *sensor = ssc_sensor_accelerometer_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (accelerometer_mount_matrix_measurement), measurements); /* Wait until all mocking measurements are received */ data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)accelerometer_mount_matrix_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_accelerometer_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/accelerometer/measurements", test_libssc_sensor_accelerometer); g_test_add_func("/libssc/sensor/accelerometer/probe-sync", test_libssc_sensor_accelerometer_probe_sync); g_test_add_func("/libssc/sensor/accelerometer/mount-matrix", test_libssc_sensor_accelerometer_mount_matrix); /* Execute tests */ return g_test_run(); } libssc/tests/compass.c000066400000000000000000000105401515656607000153230ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-compass.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; static gboolean compass_close_cb (SensorData *data) { SSCSensorCompass *self = SSC_SENSOR_COMPASS (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_compass_close_sync (self, NULL, &error)); /* Check measurements */ g_assert_cmpint (measurements->len, >=, 8); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 0), 226.468811, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 1), 113.62372, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 2), 0.0, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 3), 226.468811, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 4), 226.468811, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 5), 226.468811, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 6), 226.468811, 0.1); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, gfloat, 7), 226.468811, 0.1); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void compass_measurement (SSCSensorCompass *sensor, gfloat heading, gpointer user_data) { GArray *measurements = user_data; g_test_message("Compass: %f degrees", heading); /* Collect measurement */ g_array_append_val (measurements, heading); } static void test_libssc_sensor_compass(void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (gfloat)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `compass sensor operations`"); /* Create sensor */ SSCSensorCompass *sensor = ssc_sensor_compass_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (compass_measurement), measurements); /* Wait until all mocking measurements are received */ data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)compass_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_compass_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void test_libssc_sensor_compass_probe_sync (void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `probing compass sensor with open_sync and close_sync`"); /* Create sensor */ SSCSensorCompass *sensor = ssc_sensor_compass_new_sync (NULL, &error); /* Open sensor */ g_assert_true (ssc_sensor_compass_open_sync (sensor, NULL, &error)); /* Close sensor */ g_assert_true (ssc_sensor_compass_close_sync (sensor, NULL, &error)); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/compass/measurements", test_libssc_sensor_compass); g_test_add_func("/libssc/sensor/compass/probe-sync", test_libssc_sensor_compass_probe_sync); /* Execute tests */ return g_test_run(); } libssc/tests/general.c000066400000000000000000000105371515656607000153010ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-proximity.h" #include "libssc-sensor-light.h" #include "libssc-sensor-accelerometer.h" #include "libssc-sensor-magnetometer.h" #include "libssc-sensor-compass.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; static void sensor_unavailable_open_ready (SSCSensor *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GMainLoop *loop = user_data; gboolean success = FALSE; success = ssc_sensor_open_finish (self, result, &error); g_assert_false (success); g_main_loop_quit (loop); } static void sensor_unavailable_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; SSCSensor *sensor = NULL; sensor = ssc_sensor_new_finish (result, &error); g_assert_no_error (error); ssc_sensor_open (sensor, NULL, (GAsyncReadyCallback) sensor_unavailable_open_ready, user_data); } static void test_libssc_sensor_unavailable (void) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); /* Create a sensor which is unavailable according to attribute */ ssc_sensor_new ("unavailable", NULL, (GAsyncReadyCallback) sensor_unavailable_ready, loop); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void sensor_unsupported_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GMainLoop *loop = user_data; GError *error = NULL; SSCSensor *sensor = NULL; sensor = ssc_sensor_new_finish (result, &error); g_assert_true (sensor == NULL); g_main_loop_quit (loop); } static void test_libssc_sensor_unsupported (void) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); /* Discover a sensor which is unsupported by DSP */ ssc_sensor_new ("unsupported", NULL, (GAsyncReadyCallback) sensor_unsupported_ready, loop); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void sensor_no_sample_rate_open_ready (SSCSensor *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; GMainLoop *loop = user_data; gboolean success = FALSE; success = ssc_sensor_open_finish (self, result, &error); g_assert_false (success); g_main_loop_quit (loop); } static void sensor_no_sample_rate_ready (SSCClient *self, GAsyncResult *result, gpointer user_data) { GError *error = NULL; SSCSensor *sensor = NULL; sensor = ssc_sensor_new_finish (result, &error); g_assert_no_error (error); ssc_sensor_open (sensor, NULL, (GAsyncReadyCallback) sensor_no_sample_rate_open_ready, user_data); } static void test_libssc_sensor_no_sample_rate (void) { GMainLoop *loop = g_main_loop_new (NULL, FALSE); /* Discover a sensor in continuous mode with missing required sample rate */ ssc_sensor_new ("no-sample-rate", NULL, (GAsyncReadyCallback) sensor_no_sample_rate_ready, loop); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/unsupported", test_libssc_sensor_unsupported); g_test_add_func("/libssc/sensor/unavailable", test_libssc_sensor_unavailable); g_test_add_func("/libssc/sensor/no-sample-rate", test_libssc_sensor_no_sample_rate); /* Execute tests */ return g_test_run(); } libssc/tests/light.c000066400000000000000000000102241515656607000147640ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-light.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; static gboolean light_close_cb (SensorData *data) { SSCSensorLight *self = SSC_SENSOR_LIGHT (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_light_close_sync (self, NULL, &error)); /* Check measurements */ g_assert_cmpint (measurements->len, >=, 8); g_assert_cmpfloat (g_array_index (measurements, gfloat, 0), ==, 5.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 1), ==, 7.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 2), ==, 1.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 3), ==, 0.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 4), ==, 5.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 5), ==, 5.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 6), ==, 5.0); g_assert_cmpfloat (g_array_index (measurements, gfloat, 7), ==, 5.0); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void light_measurement (SSCSensorLight *sensor, gfloat intensity, gpointer user_data) { GArray *measurements = user_data; g_test_message("Intensity: %f Lux", intensity); /* Collect measurement */ g_array_append_val (measurements, intensity); } static void test_libssc_sensor_light(void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (gfloat)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `light sensor operations`"); /* Create sensor */ SSCSensorLight *sensor = ssc_sensor_light_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (light_measurement), measurements); /* Wait until all mocking measurements are received */ data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)light_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_light_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void test_libssc_sensor_light_probe_sync (void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `probing light sensor with open_sync and close_sync`"); /* Create sensor */ SSCSensorLight *sensor = ssc_sensor_light_new_sync (NULL, &error); /* Open sensor */ g_assert_true (ssc_sensor_light_open_sync (sensor, NULL, &error)); /* Close sensor */ g_assert_true (ssc_sensor_light_close_sync (sensor, NULL, &error)); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/light/measurements", test_libssc_sensor_light); g_test_add_func("/libssc/sensor/light/probe-sync", test_libssc_sensor_light_probe_sync); /* Execute tests */ return g_test_run(); } libssc/tests/magnetometer.c000066400000000000000000000142751515656607000163560ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-magnetometer.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; typedef struct { gfloat x; gfloat y; gfloat z; } XYZMeasurement; static gboolean magnetometer_close_cb (SensorData *data) { SSCSensorMagnetometer *self = SSC_SENSOR_MAGNETOMETER (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_magnetometer_close_sync (self, NULL, &error)); /* Check measurements */ g_assert_cmpint (measurements->len, >=, 8); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 0).x, 0.1, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 0).y, 0.2, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 0).z, 0.3, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 1).x, 0.3, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 1).y, 0.2, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 1).z, 0.1, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 2).x, 0.3, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 2).y, 0.2, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 2).z, 0.1, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 3).x, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 3).y, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 3).z, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 4).x, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 4).y, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 4).z, 0.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 5).x, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 5).y, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 5).z, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 6).x, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 6).y, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 6).z, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 7).x, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 7).y, 1.0, 0.01); g_assert_cmpfloat_with_epsilon (g_array_index (measurements, XYZMeasurement, 7).z, 1.0, 0.01); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void magnetometer_measurement (SSCSensorMagnetometer *sensor, gfloat magn_x, gfloat magn_y, gfloat magn_z, gpointer user_data) { GArray *measurements = user_data; XYZMeasurement measurement; g_test_message("Magnetic field: X%f Y%f Z%f", magn_x, magn_y, magn_z); measurement.x = magn_x; measurement.y = magn_y; measurement.z = magn_z; /* Collect measurement */ g_array_append_val (measurements, measurement); } static void test_libssc_sensor_magnetometer(void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (XYZMeasurement)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `magnetometer sensor operations`"); /* Create sensor */ SSCSensorMagnetometer *sensor = ssc_sensor_magnetometer_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (magnetometer_measurement), measurements); data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)magnetometer_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_magnetometer_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void test_libssc_sensor_magnetometer_probe_sync (void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `probing magnetometer sensor with open_sync and close_sync`"); /* Create sensor */ SSCSensorMagnetometer *sensor = ssc_sensor_magnetometer_new_sync (NULL, &error); /* Open sensor */ g_assert_true (ssc_sensor_magnetometer_open_sync (sensor, NULL, &error)); /* Close sensor */ g_assert_true (ssc_sensor_magnetometer_close_sync (sensor, NULL, &error)); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/magnetometer/measurements", test_libssc_sensor_magnetometer); g_test_add_func("/libssc/sensor/magnetometer/probe-sync", test_libssc_sensor_magnetometer_probe_sync); /* Execute tests */ return g_test_run(); } libssc/tests/meson.build000066400000000000000000000050611515656607000156560ustar00rootroot00000000000000family = host_machine.cpu_family() cpu = host_machine.cpu() if not (family == 'arm' and cpu != 'arm64') add_test_setup( 'mocking', exe_wrapper: '../mocking/ssc-server', is_default: true ) test( 'tests-general', executable('tests-general', 'general.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-proximity', executable('tests-proximity', 'proximity.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-light', executable('tests-light', 'light.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-accelerometer', executable('tests-accelerometer', 'accelerometer.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-compass', executable('tests-compass', 'compass.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-magnetometer', executable('tests-magnetometer', 'magnetometer.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'service', is_parallel: false, ) test( 'tests-no-service', executable('tests-no-service', 'no-service.c', link_with: libssc, dependencies: deps), env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), ], protocol: 'exitcode', suite: 'no-service', is_parallel: false, ) endif libssc/tests/no-service.c000066400000000000000000000033271515656607000157350ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-proximity.h" static void test_libssc_sensor_no_service(void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `no SSC service available`"); /* Create sensor */ SSCSensorProximity *sensor = ssc_sensor_proximity_new_sync (NULL, &error); g_assert_true(error != NULL); g_assert_true(sensor == NULL); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/no-service", test_libssc_sensor_no_service); /* Execute tests */ return g_test_run(); } libssc/tests/proximity.c000066400000000000000000000104651515656607000157300ustar00rootroot00000000000000/* * libssc: Library to expose Qualcomm Sensor Core sensors * Copyright (C) 2022-2026 Dylan Van Assche * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #include #include #include "libssc-client-private.h" #include "libssc-sensor.h" #include "libssc-sensor-proximity.h" #define TIMEOUT 2 typedef struct { SSCSensor *sensor; GArray *measurements; GMainLoop *loop; } SensorData; static gboolean proximity_close_cb (SensorData *data) { SSCSensorProximity *self = SSC_SENSOR_PROXIMITY (data->sensor); GArray *measurements = data->measurements; GMainLoop *loop = data->loop; g_autoptr (GError) error = NULL; /* Close sensor */ g_assert_true (ssc_sensor_proximity_close_sync (self, NULL, &error)); /* * Check measurements: proximity sensor measurements which are * the same as the previous value are skipped by libssc */ g_assert_cmpint (measurements->len, >=, 8); g_assert_true (g_array_index (measurements, gboolean, 0) == FALSE); g_assert_true (g_array_index (measurements, gboolean, 1) == TRUE); g_assert_true (g_array_index (measurements, gboolean, 2) == FALSE); g_assert_true (g_array_index (measurements, gboolean, 3) == TRUE); g_assert_true (g_array_index (measurements, gboolean, 4) == FALSE); g_assert_true (g_array_index (measurements, gboolean, 5) == TRUE); g_assert_true (g_array_index (measurements, gboolean, 6) == FALSE); g_assert_true (g_array_index (measurements, gboolean, 7) == TRUE); g_main_loop_quit (loop); return G_SOURCE_REMOVE; } static void proximity_measurement (SSCSensorProximity *sensor, gboolean near, gpointer user_data) { GArray *measurements = user_data; g_test_message("NEAR: %d", near); /* Collect measurement */ g_array_append_val (measurements, near); } static void test_libssc_sensor_proximity(void) { g_autoptr (GError) error = NULL; GArray *measurements = g_array_new (FALSE, FALSE, sizeof (gboolean)); GMainLoop *loop = g_main_loop_new (NULL, FALSE); SensorData data; /* Test information */ g_test_summary ("Test `proximity sensor operations`"); /* Create sensor */ SSCSensorProximity *sensor = ssc_sensor_proximity_new_sync (NULL, &error); /* Connect measurement signal */ g_signal_connect (sensor, "measurement", G_CALLBACK (proximity_measurement), measurements); /* Wait until all mocking measurements are received */ data.sensor = SSC_SENSOR (sensor); data.measurements = measurements; data.loop = loop; g_timeout_add_seconds (TIMEOUT, (GSourceFunc)proximity_close_cb, &data); /* Open sensor */ g_assert_true (ssc_sensor_proximity_open_sync (sensor, NULL, &error)); /* Run main loop to process signals and timers */ g_main_loop_run (loop); } static void test_libssc_sensor_proximity_probe_sync (void) { g_autoptr (GError) error = NULL; /* Test information */ g_test_summary ("Test `probing proximity sensor with open_sync and close_sync`"); /* Create sensor */ SSCSensorProximity *sensor = ssc_sensor_proximity_new_sync (NULL, &error); /* Open sensor */ g_assert_true (ssc_sensor_proximity_open_sync (sensor, NULL, &error)); /* Close sensor */ g_assert_true (ssc_sensor_proximity_close_sync (sensor, NULL, &error)); } int main (int argc, char *argv[]) { GLogLevelFlags mask; setlocale (LC_ALL, ""); /* Initialize test framework */ g_test_init (&argc, &argv, NULL); /* Allow warnings */ mask = (GLogLevelFlags) g_log_set_always_fatal ((GLogLevelFlags) G_LOG_FATAL_MASK); mask = (GLogLevelFlags) (mask & (~G_LOG_LEVEL_WARNING)); g_log_set_always_fatal ((GLogLevelFlags) mask); /* Tests */ g_test_add_func("/libssc/sensor/proximity/measurements", test_libssc_sensor_proximity); g_test_add_func("/libssc/sensor/proximity/probe-sync", test_libssc_sensor_proximity_probe_sync); /* Execute tests */ return g_test_run(); } libssc/utils/000077500000000000000000000000001515656607000135105ustar00rootroot00000000000000libssc/utils/decoder000077500000000000000000000030211515656607000150370ustar00rootroot00000000000000#!/bin/env python3 # # libssc: Library to expose Qualcomm Sensor Core sensors # Copyright (C) 2022-2026 Dylan Van Assche # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # import os import re import sys import binascii from tempfile import TemporaryFile from protobuf_inspector.types import StandardParser REGEX = r"(\\x0a\\x12.*)?\"," parser = StandardParser() if len(sys.argv) != 2: print('Usage: decoder ') sys.exit(1) strace_file = sys.argv[1] if not os.path.exists(strace_file): print(f'File "{strace_file}" does not exist!') sys.exit(2) with open(strace_file) as f: data = f.read() results = re.findall(REGEX, data) for msg in results: if msg == '': continue tmp = TemporaryFile() tmp.write(binascii.unhexlify(msg.replace('\\x', ''))) tmp.seek(0) decoded = parser.parse_message(tmp, 'message') print('-' * 80) print(f'Strace: {msg}') print(f'Decoded: {decoded}') libssc/utils/requirements.txt000066400000000000000000000000231515656607000167670ustar00rootroot00000000000000protobuf_inspector libssc/utils/strace.txt000066400000000000000000042126411515656607000155440ustar00rootroot00000000000000execve("\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65", ["\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65"], 0x7fea826210 /* 25 vars */) = 0 getpid() = 4587 mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dfeff000 set_tid_address(0x76e002e508) = 4587 faccessat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x75\x72\x61\x6e\x64\x6f\x6d", R_OK) = 0 getrandom("\xae\x9c\x1d\xf1\xe8\x32\x05\x51\xc0\x53\xa5\xa1\x3c\x96\x28\x29\x58\x9a\x0d\x55\x20\x87\x44\xd4\x5a\xda\x4b\x69\x07\x0d\x6e\xd1\x93\xa7\x64\x74\x16\x59\xef\x20", 40, GRND_NONBLOCK) = 40 mmap(NULL, 1104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dfefe000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dfefe000, 1104, "\x61\x72\x63\x34\x72\x61\x6e\x64\x6f\x6d\x20\x64\x61\x74\x61") = 0 sched_getscheduler(0) = 0 (SCHED_OTHER) mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dfef5000 mprotect(0x76dfef5000, 4096, PROT_NONE) = 0 sigaltstack({ss_sp=0x76dfef6000, ss_flags=0, ss_size=32768}, NULL) = 0 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dfef6000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deef5000 mprotect(0x76dfd16000, 8192, PROT_READ|PROT_WRITE) = 0 mprotect(0x76e001f000, 32768, PROT_READ) = 0 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76e0029000, 45056, "\x2e\x62\x73\x73") = 0 mprotect(0x76e002d000, 4096, PROT_READ) = 0 mprotect(0x76e002d000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76e002d000, 4096, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deef4000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deef4000, 4096, "\x61\x74\x65\x78\x69\x74\x20\x68\x61\x6e\x64\x6c\x65\x72\x73") = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deef3000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deef3000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deef2000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deef2000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dee8e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dee8e000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 mprotect(0x76dee8e000, 409600, PROT_READ|PROT_WRITE) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x6e\x75\x6c\x6c", O_RDWR) = 3 fcntl(0, F_GETFL) = 0x20002 (flags O_RDWR|O_LARGEFILE) fcntl(1, F_GETFL) = 0x20002 (flags O_RDWR|O_LARGEFILE) fcntl(2, F_GETFL) = 0x20001 (flags O_WRONLY|O_LARGEFILE) close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f", {st_mode=S_IFDIR|0711, st_size=7020, ...}, 0) = 0 faccessat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x5f\x69\x6e\x66\x6f", R_OK) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x5f\x69\x6e\x66\x6f", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=81240, ...}) = 0 mmap(NULL, 81240, PROT_READ, MAP_SHARED, 3, 0) = 0x76dee7a000 close(3) = 0 mmap(NULL, 13880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dee76000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dee76000, 13880, "\x53\x79\x73\x74\x65\x6d\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x6e\x6f\x64\x65\x73") = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x73\x65\x72\x69\x61\x6c", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76dee56000 close(3) = 0 mmap(NULL, 40960, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dee4c000 mprotect(0x76dee4d000, 32768, PROT_READ|PROT_WRITE) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x62\x75\x69\x6c\x64\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76dee2c000 close(3) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x64\x65\x62\x75\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76dee0c000 close(3) = 0 rt_sigaction(SIGABRT, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGBUS, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGFPE, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGILL, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGSEGV, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGSTKFLT, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGSYS, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGTRAP, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 rt_sigaction(SIGRT_3, {sa_handler=0x76dff5a738, sa_mask=~[], sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO|0x800}, NULL, 8) = 0 prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dee0b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dee0b000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 newfstatat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x65\x78\x65", {st_mode=S_IFREG|0755, st_size=11616, ...}, 0) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x65\x78\x65", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65", 4096) = 51 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deda7000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deda7000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x61\x72\x6d\x36\x34\x5f\x6d\x65\x6d\x74\x61\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76ded87000 close(3) = 0 prctl(0x37 /* PR_??? */, 0x1, 0, 0, 0) = -1 EINVAL (Invalid argument) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded86000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded86000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded85000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded85000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x65\x74\x63\x2f\x6c\x64\x2e\x63\x6f\x6e\x66\x69\x67\x2e\x61\x72\x6d\x36\x34\x2e\x74\x78\x74", 0x7fd1912b40, 0) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x6c\x69\x6e\x6b\x65\x72\x63\x6f\x6e\x66\x69\x67\x2f\x6c\x64\x2e\x63\x6f\x6e\x66\x69\x67\x2e\x74\x78\x74", {st_mode=S_IFREG|0644, st_size=132706, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x6c\x69\x6e\x6b\x65\x72\x63\x6f\x6e\x66\x69\x67\x2f\x6c\x64\x2e\x63\x6f\x6e\x66\x69\x67\x2e\x74\x78\x74", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=132706, ...}) = 0 mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded64000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded64000, 135168, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 read(3, "\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x78\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x2f\x6f\x64\x6d\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x36\x34\x2f\x6f\x64\x6d\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b\x74\x65\x73\x74\x2f\x6f\x64\x6d\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b\x74\x65\x73\x74\x36\x34\x2f\x6f\x64\x6d\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x36\x34\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b\x74\x65\x73\x74\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x62\x65\x6e\x63\x68\x6d\x61\x72\x6b\x74\x65\x73\x74\x36\x34\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x64\x69\x72\x2e\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x2f\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x0a\x64\x69\x72\x2e\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6e\x61\x74\x69\x76\x65\x74\x65\x73\x74\x36\x34\x2f\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x0a\x64\x69\x72\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x2f\x69\x73\x6f\x6c\x61\x74\x65\x64\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x65\x73\x74\x73\x2f\x70\x72\x6f\x64\x75\x63\x74\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x65\x73\x74\x73\x2f\x73\x79\x73\x74\x65\x6d\x0a\x64\x69\x72\x2e\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x65\x73\x74\x73\x2f\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x0a\x64\x69\x72\x2e\x76\x65\x6e\x64\x6f\x72\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x65\x73\x74\x73\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x64\x69\x72\x2e\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x6c\x6f\x63\x61\x6c\x2f\x74\x6d\x70\x0a\x64\x69\x72\x2e\x70\x6f\x73\x74\x69\x6e\x73\x74\x61\x6c\x6c\x20\x3d\x20\x2f\x70\x6f\x73\x74\x69\x6e\x73\x74\x61\x6c\x6c\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x64\x61\x74\x61\x0a\x64\x69\x72\x2e\x73\x79\x73\x74\x65\x6d\x20\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x2f\x0a\x5b\x73\x79\x73\x74\x65\x6d\x5d\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x2e\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61", 1024) = 1024 read(3, "\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2c\x72\x73\x2c\x73\x70\x68\x61\x6c\x2c\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65", 1024) = 1024 read(3, "\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74", 1024) = 1024 read(3, "\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61", 1024) = 1024 read(3, "\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61", 1024) = 1024 read(3, "\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61", 1024) = 1024 read(3, "\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f", 1024) = 1024 read(3, "\x70\x61\x69\x72\x69\x6e\x67\x5f\x73\x65\x72\x76\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x69\x31\x38\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x75\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6a\x64\x77\x70\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x62\x72\x69\x64\x67\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x6c\x6f\x61\x64\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x69\x67\x63\x68\x61\x69\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x74\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x70\x75\x6c\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61", 1024) = 1024 read(3, "\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x66\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e", 1024) = 1024 read(3, "\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d", 1024) = 1024 read(3, "\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c", 1024) = 1024 read(3, "\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61", 1024) = 1024 read(3, "\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x68\x65\x61\x70\x70\x72\x6f\x66\x64\x5f\x63\x6c\x69\x65\x6e\x74\x5f\x61\x70\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x72\x74\x70\x61\x6c\x65\x74\x74\x65\x2d\x73\x79\x73\x74\x65\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61", 1024) = 1024 read(3, "\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x5f\x6a\x6e\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73", 1024) = 1024 read(3, "\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65", 1024) = 1024 read(3, "\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64", 1024) = 1024 read(3, "\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b", 1024) = 1024 read(3, "\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f", 1024) = 1024 read(3, "\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6d\x65\x74\x72\x69\x63\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61", 1024) = 1024 read(3, "\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72", 1024) = 1024 read(3, "\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x5f\x70\x61\x63\x6b\x61\x67\x65", 1024) = 1024 read(3, "\x69\x6e\x66\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e", 1024) = 1024 read(3, "\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x6e\x63\x69\x64\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f", 1024) = 1024 read(3, "\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e", 1024) = 1024 read(3, "\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69", 1024) = 1024 read(3, "\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f", 1024) = 1024 read(3, "\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e", 1024) = 1024 read(3, "\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61", 1024) = 1024 read(3, "\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74", 1024) = 1024 read(3, "\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a", 1024) = 1024 read(3, "\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x74\x32\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e", 1024) = 1024 read(3, "\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x72\x73\x2c\x64\x65\x66\x61\x75\x6c\x74\x2c\x76\x6e\x64\x6b\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x72\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x52\x53\x5f\x69\x6e\x74\x65\x72\x6e\x61\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69", 1024) = 1024 read(3, "\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x76\x6e\x64\x6b\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2e\x66\x6d\x71\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x32\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x33\x2e\x30\x2e\x73\x6f\x3a", 1024) = 1024 read(3, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x34\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x72\x65\x6e\x64\x65\x72\x73\x63\x72\x69\x70\x74\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x2e\x74\x6f\x6b\x65\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2d\x69\x6d\x70\x6c\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x73\x61\x66\x65\x5f\x75\x6e\x69\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x43\x70\x75\x52\x65\x66\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x44\x72\x69\x76\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x5f\x69\x6e\x74\x65\x72\x6e\x61\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x63\x69\x6e\x66\x6f\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6d\x61\x62\x75\x66\x68\x65\x61\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x67\x72\x61\x6c\x6c\x6f\x63\x74\x79\x70\x65\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x6d\x65\x6d\x6f\x72\x79\x2e\x73\x6f\x3a\x6c\x69\x62\x69\x6f\x6e\x2e\x73\x6f\x3a\x6c\x69\x62\x6a\x73\x6f\x6e\x63\x70\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x7a\x6d\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x72\x6f\x63\x65\x73\x73\x67\x72\x6f\x75\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x6e\x77\x69\x6e\x64\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x63\x61\x6c\x6c\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d", 1024) = 1024 read(3, "\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d", 1024) = 1024 read(3, "\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c", 1024) = 1024 read(3, "\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x5b\x76\x65\x6e\x64\x6f\x72\x5d\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x2e\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2c\x73\x79\x73\x74\x65\x6d\x2c\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73", 1024) = 1024 read(3, "\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x0a", 1024) = 1024 read(3, "\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x76\x6e\x64\x6b\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70", 1024) = 1024 read(3, "\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x76\x6e\x64\x6b\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2e\x66\x6d\x71\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x32\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x33\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x34\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x72\x65\x6e\x64\x65\x72\x73\x63\x72\x69\x70\x74\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x2e\x74\x6f\x6b\x65\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2d\x69\x6d\x70\x6c\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x73\x61\x66\x65\x5f\x75\x6e\x69\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x43\x70\x75\x52\x65\x66\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x44\x72\x69\x76\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x5f\x69\x6e\x74\x65\x72\x6e\x61\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x63\x69\x6e\x66\x6f\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6d\x61\x62\x75\x66\x68\x65\x61\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x67\x72\x61\x6c\x6c\x6f\x63\x74\x79\x70\x65\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x6d\x65\x6d\x6f\x72\x79\x2e\x73\x6f\x3a\x6c\x69\x62\x69\x6f\x6e\x2e\x73\x6f\x3a\x6c\x69\x62\x6a\x73\x6f\x6e\x63\x70\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x7a\x6d\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x72\x6f\x63\x65\x73\x73\x67\x72\x6f\x75\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x6e\x77\x69\x6e\x64\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x63\x61\x6c\x6c\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d", 1024) = 1024 read(3, "\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x76\x6e\x64\x6b\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x61\x75\x64\x69\x6f\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x61\x75\x74\x68\x73\x65\x63\x72\x65\x74\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x61\x75\x74\x6f\x6d\x6f\x74\x69\x76\x65\x2e\x6f\x63\x63\x75\x70\x61\x6e\x74\x5f\x61\x77\x61\x72\x65\x6e\x65\x73\x73\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6e\x66\x69\x67\x73\x74\x6f\x72\x65\x2d\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6e\x66\x69\x67\x73\x74\x6f\x72\x65\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6e\x66\x69\x67\x73\x74\x6f\x72\x65\x40\x31\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6e\x66\x69\x72\x6d\x61\x74\x69\x6f\x6e\x75\x69\x2d\x73\x75\x70\x70\x6f\x72\x74\x2d\x6c\x69\x62\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x6e\x73\x73\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x61\x6c\x6c\x6f\x63\x61\x74\x6f\x72\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x61\x6c\x6c\x6f\x63\x61\x74\x6f\x72\x40\x33\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x61\x6c\x6c\x6f\x63\x61\x74\x6f\x72\x40\x34\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x62\x75\x66\x66\x65\x72\x71\x75\x65\x75\x65\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x62\x75\x66\x66\x65\x72\x71\x75\x65\x75\x65\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x68\x65\x61\x6c\x74\x68\x2e\x73\x74\x6f\x72\x61\x67\x65\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x69\x64\x65\x6e\x74\x69\x74\x79\x2d\x56\x33\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6b\x65\x79\x6d\x61\x73\x74\x65\x72\x2d\x56\x33\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6c\x69\x67\x68\x74\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6d\x65\x64\x69\x61\x2e\x62\x75\x66\x66\x65\x72\x70\x6f\x6f\x6c\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6d\x65\x64\x69\x61\x2e\x6f\x6d\x78\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6d\x65\x64\x69\x61\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6d\x65\x6d\x74\x72\x61\x63\x6b\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6d\x65\x6d\x74\x72\x61\x63\x6b\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x6f\x65\x6d\x6c\x6f\x63\x6b\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x70\x6f\x77\x65\x72\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x70\x6f\x77\x65\x72\x2e\x73\x74\x61\x74\x73\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x72\x65\x62\x6f\x6f\x74\x65\x73\x63\x72\x6f\x77\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x63\x75\x72\x69\x74\x79\x2e\x6b\x65\x79\x6d\x69\x6e\x74\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x63\x75\x72\x69\x74\x79\x2e\x73\x65\x63\x75\x72\x65\x63\x6c\x6f\x63\x6b\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x63\x75\x72\x69\x74\x79\x2e\x73\x68\x61\x72\x65\x64\x73\x65\x63\x72\x65\x74\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f\x75\x6e\x64\x74\x72\x69\x67\x67\x65\x72\x40\x32\x2e\x30\x2d\x63\x6f\x72\x65\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f\x75\x6e\x64\x74\x72\x69\x67\x67\x65\x72\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x76\x69\x62\x72\x61\x74\x6f\x72\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x77\x65\x61\x76\x65\x72\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x74\x6f\x6b\x65\x6e\x40\x31\x2e\x30\x2d\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x74\x6f\x6b\x65\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6b\x65\x79\x73\x74\x6f\x72\x65\x32\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x75\x73\x70\x65\x6e\x64\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x75\x64\x69\x6f\x72\x6f\x75\x74\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x75\x64\x69\x6f\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x75\x66\x66\x65\x72\x71\x75\x65\x75\x65\x63\x6f\x6e\x76\x65\x72\x74\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x61\x6d\x65\x72\x61\x5f\x6d\x65\x74\x61\x64\x61\x74\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x61\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x73\x63\x75\x64\x6f\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x73\x63\x75\x64\x6f\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x73\x63\x75\x64\x6f\x5f\x6d\x69\x6e\x69\x6d\x61\x6c\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x73\x63\x75\x64\x6f\x5f\x6d\x69\x6e\x69\x6d\x61\x6c\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6e\x2d\x63\x62\x6f\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6f\x64\x65\x63\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x72\x79\x70\x74\x6f\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x72\x79\x70\x74\x6f\x5f\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x75\x72\x6c\x2e\x73\x6f\x3a", 1024) = 1024 read(3, "\x6c\x69\x62\x64\x69\x73\x6b\x63\x6f\x6e\x66\x69\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x75\x6d\x70\x73\x74\x61\x74\x65\x75\x74\x69\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x65\x76\x65\x6e\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x65\x78\x69\x66\x2e\x73\x6f\x3a\x6c\x69\x62\x65\x78\x70\x61\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f\x3a\x6c\x69\x62\x67\x61\x74\x65\x6b\x65\x65\x70\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x5f\x6c\x65\x67\x61\x63\x79\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x61\x6c\x6c\x6f\x63\x61\x74\x6f\x72\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x6a\x70\x65\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x64\x61\x63\x42\x54\x5f\x61\x62\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x64\x61\x63\x42\x54\x5f\x65\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x7a\x34\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x5f\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x5f\x6f\x6d\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x6d\x74\x72\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x69\x6e\x69\x6a\x61\x69\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x6b\x62\x6f\x6f\x74\x69\x6d\x67\x5f\x61\x62\x69\x5f\x63\x68\x65\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x74\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x63\x72\x65\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x69\x65\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x6e\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x6f\x77\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x72\x6f\x63\x69\x6e\x66\x6f\x2e\x73\x6f\x3a\x6c\x69\x62\x72\x61\x64\x69\x6f\x5f\x6d\x65\x74\x61\x64\x61\x74\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x70\x65\x65\x78\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x71\x6c\x69\x74\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x73\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x62\x75\x66\x66\x65\x72\x70\x6f\x6f\x6c\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x62\x75\x66\x66\x65\x72\x71\x75\x65\x75\x65\x5f\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x66\x6f\x75\x6e\x64\x61\x74\x69\x6f\x6e\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x6f\x6d\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x6f\x6d\x78\x5f\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x74\x61\x67\x65\x66\x72\x69\x67\x68\x74\x5f\x78\x6d\x6c\x70\x61\x72\x73\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x73\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x74\x69\x6e\x79\x61\x6c\x73\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x74\x69\x6e\x79\x78\x6d\x6c\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x69\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x73\x62\x68\x6f\x73\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x77\x69\x66\x69\x2d\x73\x79\x73\x74\x65\x6d\x2d\x69\x66\x61\x63\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x78\x6d\x6c\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x79\x75\x76\x2e\x73\x6f\x3a\x6c\x69\x62\x7a\x69\x70\x61\x72\x63\x68\x69\x76\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e", 1024) = 1024 read(3, "\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x66\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79", 1024) = 1024 read(3, "\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73", 1024) = 1024 read(3, "\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x68\x65\x61\x70\x70\x72\x6f\x66\x64\x5f\x63\x6c\x69\x65\x6e\x74\x5f\x61\x70\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x72\x74\x70\x61\x6c\x65\x74\x74\x65\x2d\x73\x79\x73\x74\x65\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b", 1024) = 1024 read(3, "\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x5f\x6a\x6e\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72", 1024) = 1024 read(3, "\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74", 1024) = 1024 read(3, "\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6d\x65\x74\x72\x69\x63\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f", 1024) = 1024 read(3, "\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b", 1024) = 1024 read(3, "\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20", 1024) = 1024 read(3, "\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x69\x6e\x66\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f", 1024) = 1024 read(3, "\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x6e\x63\x69\x64\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61", 1024) = 1024 read(3, "\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f", 1024) = 1024 read(3, "\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61", 1024) = 1024 read(3, "\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e", 1024) = 1024 read(3, "\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74", 1024) = 1024 read(3, "\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65", 1024) = 1024 read(3, "\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d", 1024) = 1024 read(3, "\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e", 1024) = 1024 read(3, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74", 1024) = 1024 read(3, "\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e", 1024) = 1024 read(3, "\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x73\x65\x72\x76\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x69\x31\x38\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x75\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64", 1024) = 1024 read(3, "\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6a\x64\x77\x70\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x62\x72\x69\x64\x67\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x6c\x6f\x61\x64\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x69\x67\x63\x68\x61\x69\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x74\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x70\x75\x6c\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f", 1024) = 1024 read(3, "\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73", 1024) = 1024 read(3, "\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76", 1024) = 1024 read(3, "\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72", 1024) = 1024 read(3, "\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x5b\x75\x6e\x72\x65\x73\x74\x72\x69\x63\x74\x65\x64\x5d\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x2e\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2c\x72\x73\x2c\x73\x70\x68\x61\x6c\x2c\x76\x6e\x64\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73", 1024) = 1024 read(3, "\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x73\x65\x72\x76\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x69\x31\x38\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x75\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e", 1024) = 1024 read(3, "\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6a\x64\x77\x70\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x62\x72\x69\x64\x67\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x6c\x6f\x61\x64\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x69\x67\x63\x68\x61\x69\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x74\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x70\x75\x6c\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61", 1024) = 1024 read(3, "\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x66\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b", 1024) = 1024 read(3, "\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65", 1024) = 1024 read(3, "\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61", 1024) = 1024 read(3, "\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61", 1024) = 1024 read(3, "\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x68\x65\x61\x70\x70\x72\x6f\x66\x64\x5f\x63\x6c\x69\x65\x6e\x74\x5f\x61\x70\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x72\x74\x70\x61\x6c\x65\x74\x74\x65\x2d\x73\x79\x73\x74\x65\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62", 1024) = 1024 read(3, "\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x5f\x6a\x6e\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f", 1024) = 1024 read(3, "\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70", 1024) = 1024 read(3, "\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61", 1024) = 1024 read(3, "\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e", 1024) = 1024 read(3, "\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61", 1024) = 1024 read(3, "\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6d\x65\x74\x72\x69\x63\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64", 1024) = 1024 read(3, "\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d", 1024) = 1024 read(3, "\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x69\x6e\x66\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72", 1024) = 1024 read(3, "\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e", 1024) = 1024 read(3, "\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x6e\x63\x69\x64\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68", 1024) = 1024 read(3, "\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76", 1024) = 1024 read(3, "\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d", 1024) = 1024 read(3, "\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x64\x65\x66\x61\x75\x6c\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20", 1024) = 1024 read(3, "\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d", 1024) = 1024 read(3, "\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61", 1024) = 1024 read(3, "\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e", 1024) = 1024 read(3, "\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61", 1024) = 1024 read(3, "\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x74\x32\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x72\x73\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61", 1024) = 1024 read(3, "\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65", 1024) = 1024 read(3, "\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x72\x73\x2c\x64\x65\x66\x61\x75\x6c\x74\x2c\x76\x6e\x64\x6b\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x72\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x52\x53\x5f\x69\x6e\x74\x65\x72\x6e\x61\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69", 1024) = 1024 read(3, "\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x76\x6e\x64\x6b\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2e\x66\x6d\x71\x2d\x56\x31\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x2d\x56\x32\x2d\x6e\x64\x6b\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x63\x6f\x6d\x6d\x6f\x6e\x40\x31\x2e\x32\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x32\x2e\x31\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x33\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x67\x72\x61\x70\x68\x69\x63\x73\x2e\x6d\x61\x70\x70\x65\x72\x40\x34\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x72\x65\x6e\x64\x65\x72\x73\x63\x72\x69\x70\x74\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x2e\x74\x6f\x6b\x65\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2d\x69\x6d\x70\x6c\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x6d\x65\x6d\x6f\x72\x79\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x69\x64\x6c\x2e\x73\x61\x66\x65\x5f\x75\x6e\x69\x6f\x6e\x40\x31\x2e\x30\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x43\x70\x75\x52\x65\x66\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x44\x72\x69\x76\x65\x72\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x5f\x69\x6e\x74\x65\x72\x6e\x61\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x63\x69\x6e\x66\x6f\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6d\x61\x62\x75\x66\x68\x65\x61\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x67\x72\x61\x6c\x6c\x6f\x63\x74\x79\x70\x65\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64", 1024) = 1024 read(3, "\x6c\x62\x61\x73\x65\x2e\x73\x6f\x3a\x6c\x69\x62\x68\x69\x64\x6c\x6d\x65\x6d\x6f\x72\x79\x2e\x73\x6f\x3a\x6c\x69\x62\x69\x6f\x6e\x2e\x73\x6f\x3a\x6c\x69\x62\x6a\x73\x6f\x6e\x63\x70\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x7a\x6d\x61\x2e\x73\x6f\x3a\x6c\x69\x62\x70\x72\x6f\x63\x65\x73\x73\x67\x72\x6f\x75\x70\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x6e\x77\x69\x6e\x64\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x75\x74\x69\x6c\x73\x63\x61\x6c\x6c\x73\x74\x61\x63\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x70\x68\x61\x6c\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63", 1024) = 1024 read(3, "\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x76\x6e\x64\x6b\x2d\x73\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61", 1024) = 1024 read(3, "\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x67\x6c\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x64\x65\x66\x61\x75\x6c\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x45\x47\x4c\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x31\x5f\x43\x4d\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x32\x2e\x73\x6f\x3a\x6c\x69\x62\x47\x4c\x45\x53\x76\x33\x2e\x73\x6f\x3a\x6c\x69\x62\x52\x53\x2e\x73\x6f\x3a\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x3a\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x2e\x73\x6f\x3a\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x3a\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x3a\x6c\x69\x62\x73\x79\x6e\x63\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x3a\x6c\x69\x62\x76\x75\x6c\x6b\x61\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63", 1024) = 1024 read(3, "\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x76\x6e\x64\x6b\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x5b\x70\x6f\x73\x74\x69\x6e\x73\x74\x61\x6c\x6c\x5d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x5b\x69\x73\x6f\x6c\x61\x74\x65\x64\x5d\x0a\x61\x64\x64\x69\x74\x69\x6f\x6e\x61\x6c\x2e\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2c\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x64\x65\x66\x61\x75\x6c\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x6c\x6c\x6f\x77\x5f\x61\x6c\x6c\x5f\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73", 1024) = 1024 read(3, "\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x64\x5f\x66\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x65\x6c\x69\x6e\x75\x78\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d", 1024) = 1024 read(3, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73", 1024) = 1024 read(3, "\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x70\x70\x73\x65\x61\x72\x63\x68\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x65\x61\x72\x63\x68\x2e", 1024) = 1024 read(3, "\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6a\x61\x76\x61\x6c\x69\x62\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x68\x65\x61\x70\x70\x72\x6f\x66\x64\x5f\x63\x6c\x69\x65\x6e\x74\x5f\x61\x70\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x72\x74\x70", 1024) = 1024 read(3, "\x61\x6c\x65\x74\x74\x65\x2d\x73\x79\x73\x74\x65\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x7a\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f", 1024) = 1024 read(3, "\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x5f\x6a\x6e\x69\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d", 1024) = 1024 read(3, "\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62", 1024) = 1024 read(3, "\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x63\x6f\x6e\x73\x63\x72\x79\x70\x74\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64", 1024) = 1024 read(3, "\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d", 1024) = 1024 read(3, "\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6d\x65\x74\x72\x69\x63\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x65\x64\x69\x61\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c", 1024) = 1024 read(3, "\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6d\x65\x64\x69\x61\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c", 1024) = 1024 read(3, "\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73", 1024) = 1024 read(3, "\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x77\x69\x6e\x64\x6f\x77\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x5f\x70\x61\x63\x6b\x61\x67\x65\x69\x6e\x66\x6f\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f", 1024) = 1024 read(3, "\x72\x6b\x73\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x6e\x63", 1024) = 1024 read(3, "\x69\x64\x65\x6e\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f", 1024) = 1024 read(3, "\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x62\x69\x6e\x64\x65\x72\x5f\x6e\x64\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69", 1024) = 1024 read(3, "\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x73\x79\x73\x74\x65\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x75\x6e\x74", 1024) = 1024 read(3, "\x69\x6d\x65\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x76\x69\x73\x69\x62\x6c\x65\x20\x3d\x20\x74\x72\x75\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x73\x79\x73\x74\x65\x6d\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c", 1024) = 1024 read(3, "\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6d\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x68\x77\x61\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x74\x73\x61\x6e\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x61\x72\x63\x68\x36\x34\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x3a\x6c\x69\x62\x63\x6c\x61\x6e\x67\x5f\x72\x74\x2e\x75\x62\x73\x61\x6e\x5f\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x2d\x61\x72\x6d\x2d\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x66\x64\x74\x72\x61\x63\x6b\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x74\x65\x74\x68\x65\x72\x69\x6e\x67\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x69\x73\x6f\x6c\x61\x74\x65\x64\x20\x3d\x20\x66\x61\x6c\x73\x65\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73", 1024) = 1024 read(3, "\x79\x73\x74\x65\x6d\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79", 1024) = 1024 read(3, "\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x73\x65\x61\x72\x63\x68\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x64\x72\x6d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61", 1024) = 1024 read(3, "\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x65\x78\x74\x72\x61\x63\x74\x6f\x72\x73\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x68\x77\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e", 1024) = 1024 read(3, "\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x66\x72\x61\x6d\x65\x77", 1024) = 1024 read(3, "\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x64\x6d\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6f\x65\x6d\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x66\x72\x61\x6d\x65\x77\x6f\x72\x6b\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x70\x72\x69\x76\x2d\x61\x70\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x6d\x6e\x74\x2f\x65\x78\x70\x61\x6e\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x69\x6f\x6e\x69\x63\x0a\x6e\x61\x6d", 1024) = 1024 read(3, "\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x73\x79\x73\x74\x65\x6d\x2f\x24\x7b\x4c\x49\x42\x7d\x2f\x62\x6f\x6f\x74\x73\x74\x72\x61\x70\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x64\x61\x74\x61\x2f\x61\x73\x61\x6e\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x61\x73\x61\x6e\x2e\x70\x65\x72\x6d\x69\x74\x74\x65\x64\x2e\x70\x61\x74\x68\x73\x20\x2b\x3d\x20\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x24\x7b\x4c\x49\x42\x7d\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x73\x20\x3d\x20\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2c\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x61\x75\x74\x68\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x64\x62\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x61\x64\x62\x5f\x70\x61\x69\x72\x69\x6e\x67\x5f\x73\x65\x72\x76\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x61\x6e\x64\x72\x6f\x69\x64\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x69\x31\x38\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x69\x31\x38\x6e\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x69\x63\x75\x75\x63\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x64\x65\x78\x66\x69\x6c\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c", 1024) = 1024 read(3, "\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6a\x64\x77\x70\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x62\x72\x69\x64\x67\x65\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x68\x65\x6c\x70\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x6e\x61\x74\x69\x76\x65\x6c\x6f\x61\x64\x65\x72\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x61\x72\x74\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x69\x67\x63\x68\x61\x69\x6e\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x74\x64\x5f\x72\x65\x73\x6f\x6c\x76\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x70\x75\x6c\x6c\x2e\x73\x6f\x0a\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x2e\x73\x79\x73\x74\x65\x6d\x2e\x6c\x69\x6e\x6b\x2e\x63\x6f\x6d\x5f\x61\x6e\x64\x72\x6f\x69\x64\x5f\x6f\x73\x5f\x73\x74\x61\x74\x73\x64\x2e\x73\x68\x61\x72\x65\x64\x5f\x6c\x69\x62\x73\x20\x2b\x3d\x20\x6c\x69\x62\x73\x74\x61\x74\x73\x73\x6f\x63\x6b\x65\x74\x2e\x73\x6f\x0a", 1024) = 610 read(3, "", 1024) = 0 close(3) = 0 faccessat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x62\x69\x6e", R_OK) = 0 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x62\x69\x6e", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0751, st_size=8192, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x62\x69\x6e", 4095) = 11 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x62\x69\x6e", {st_mode=S_IFDIR|0751, st_size=8192, ...}, 0) = 0 close(3) = 0 faccessat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x78\x62\x69\x6e", R_OK) = -1 ENOENT (No such file or directory) faccessat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x62\x69\x6e", R_OK) = 0 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x62\x69\x6e", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0751, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x62\x69\x6e", 4095) = 15 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x62\x69\x6e", {st_mode=S_IFDIR|0751, st_size=4096, ...}, 0) = 0 close(3) = 0 faccessat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x62\x69\x6e", R_OK) = 0 openat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x62\x69\x6e", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0751, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x62\x69\x6e", 4095) = 12 newfstatat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x62\x69\x6e", {st_mode=S_IFDIR|0751, st_size=4096, ...}, 0) = 0 close(3) = 0 faccessat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x62\x69\x6e", R_OK) = -1 ENOENT (No such file or directory) faccessat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e", R_OK) = 0 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0751, st_size=8192, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e", 4095) = 11 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e", {st_mode=S_IFDIR|0751, st_size=8192, ...}, 0) = 0 close(3) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded63000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded63000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded62000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded62000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded61000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded61000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded60000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded60000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5e000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded60000, 4096) = 0 munmap(0x76ded5f000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded60000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded60000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded60000, 4096) = 0 munmap(0x76ded5e000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded60000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded60000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5f000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded60000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded60000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded60000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5e000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5d000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5c000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5b000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded59000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded59000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded59000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded59000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded59000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded59000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded59000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded59000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded59000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded59000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded59000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded59000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded59000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded59000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded5a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded5a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded58000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded58000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 munmap(0x76ded64000, 135168) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded84000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded84000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded83000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded83000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x76\x6e\x64\x6b\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76ded38000 close(3) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 mprotect(0x76deef4000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76deef4000, 4096, PROT_READ) = 0 openat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b\x2d\x73\x70", O_RDONLY|O_CLOEXEC|O_PATH) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b\x2d\x73\x70", 0x7fd1910600, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b", O_RDONLY|O_CLOEXEC|O_PATH) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b", 0x7fd1910600, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b\x2d\x73\x70", O_RDONLY|O_CLOEXEC|O_PATH) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b\x2d\x73\x70", 0x7fd1910600, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b", O_RDONLY|O_CLOEXEC|O_PATH) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x76\x6e\x64\x6b", 0x7fd1910600, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34", 4095) = 32 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=8192, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=8192, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "\x2f\x6f\x64\x6d\x2f\x6c\x69\x62\x36\x34", 0x7fd1910600, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=24576, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34", 4095) = 13 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=24576, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=24576, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=24576, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34", 4095) = 13 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=24576, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=24576, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x6c\x69\x62\x36\x34", 4095) = 17 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x5f\x65\x78\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x6c\x69\x62\x36\x34", 4095) = 14 newfstatat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x70\x72\x6f\x64\x75\x63\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34", 4095) = 31 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x6c\x69\x62\x36\x34", 4095) = 30 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x65\x73\x6f\x6c\x76\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x6c\x69\x62\x36\x34", 4095) = 28 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x69\x31\x38\x6e\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6c\x69\x62\x36\x34", 4095) = 27 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x72\x74\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x6c\x69\x62\x36\x34", 4095) = 29 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6d\x65\x64\x69\x61\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x6c\x69\x62\x36\x34", 4095) = 33 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6f\x73\x2e\x73\x74\x61\x74\x73\x64\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x6c\x69\x62\x36\x34", 4095) = 38 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x6e\x65\x75\x72\x61\x6c\x6e\x65\x74\x77\x6f\x72\x6b\x73\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded82000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded82000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x6c\x69\x62\x36\x34", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x6c\x69\x62\x36\x34", 4095) = 28 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x61\x64\x62\x64\x2f\x6c\x69\x62\x36\x34", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded81000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded81000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded80000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded80000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded81000, 4096) = 0 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77", 4095) = 16 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c", O_RDONLY|O_CLOEXEC|O_PATH) = 3 fstat(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c", 4095) = 17 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 close(3) = 0 newfstatat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 munmap(0x76ded59000, 4096) = 0 munmap(0x76ded5f000, 4096) = 0 munmap(0x76ded5e000, 4096) = 0 munmap(0x76ded60000, 4096) = 0 munmap(0x76ded5a000, 4096) = 0 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76decd4000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76decd4000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded81000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded81000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded81000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded81000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded81000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7e000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded7f000, 4096) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7c000, 8192, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded7e000, 4096) = 0 munmap(0x76ded81000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded81000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded81000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7e000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7b000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7a000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded79000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded79000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded78000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded78000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded77000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded77000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded76000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded76000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded75000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded75000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded74000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded74000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded73000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded73000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 munmap(0x76ded79000, 4096) = 0 munmap(0x76ded7a000, 4096) = 0 munmap(0x76ded7b000, 4096) = 0 munmap(0x76ded7f000, 4096) = 0 munmap(0x76ded81000, 4096) = 0 munmap(0x76ded7e000, 4096) = 0 munmap(0x76ded7c000, 8192) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded81000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded81000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 munmap(0x76ded75000, 4096) = 0 munmap(0x76ded76000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7f000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7e000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7d000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7c000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded7b000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 munmap(0x76ded7c000, 4096) = 0 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dec70000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dec70000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dec0c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dec0c000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 3 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6c\x6f\x67\x2e\x73\x6f", 4096) = 23 fstat(3, {st_mode=S_IFREG|0644, st_size=62128, ...}) = 0 fstatfs(3, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(3, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 3, 0) = 0x76ded7c000 mmap(NULL, 7904, PROT_READ, MAP_PRIVATE, 3, 0xe000) = 0x76ded79000 mmap(NULL, 656, PROT_READ, MAP_PRIVATE, 3, 0xe000) = 0x76ded76000 mmap(NULL, 5641, PROT_READ, MAP_PRIVATE, 3, 0x1000) = 0x76ded71000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 4 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x34", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x75\x74\x69\x6c\x73\x2e\x73\x6f", 4096) = 45 fstat(4, {st_mode=S_IFREG|0644, st_size=69528, ...}) = 0 fstatfs(4, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(4, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x58\x09\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 4, 0) = 0x76ded75000 mmap(NULL, 6384, PROT_READ, MAP_PRIVATE, 4, 0x10000) = 0x76ded6f000 mmap(NULL, 7760, PROT_READ, MAP_PRIVATE, 4, 0xf000) = 0x76ded6d000 mmap(NULL, 11474, PROT_READ, MAP_PRIVATE, 4, 0x1000) = 0x76ded6a000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 5 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x35", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", 4096) = 43 fstat(5, {st_mode=S_IFREG|0644, st_size=242976, ...}) = 0 fstatfs(5, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(5, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xa0\xae\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 5, 0) = 0x76ded69000 mmap(NULL, 9152, PROT_READ, MAP_PRIVATE, 5, 0x3a000) = 0x76ded66000 mmap(NULL, 1792, PROT_READ, MAP_PRIVATE, 5, 0x39000) = 0x76ded65000 mmap(NULL, 28205, PROT_READ, MAP_PRIVATE, 5, 0x3000) = 0x76dec05000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 6 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x36", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x75\x74\x69\x6c\x73\x2e\x73\x6f", 4096) = 44 fstat(6, {st_mode=S_IFREG|0644, st_size=108560, ...}) = 0 fstatfs(6, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(6, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x90\xa1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 6, 0) = 0x76ded64000 mmap(NULL, 2464, PROT_READ, MAP_PRIVATE, 6, 0x1a000) = 0x76ded60000 mmap(NULL, 4752, PROT_READ, MAP_PRIVATE, 6, 0x19000) = 0x76ded5e000 mmap(NULL, 24339, PROT_READ, MAP_PRIVATE, 6, 0x3000) = 0x76debff000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 7 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x37", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x66\x6d\x71\x2e\x73\x6f", 4096) = 42 fstat(7, {st_mode=S_IFREG|0644, st_size=15176, ...}) = 0 fstatfs(7, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(7, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x88\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x17\x00\x15\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 7, 0) = 0x76ded5a000 mmap(NULL, 4304, PROT_READ, MAP_PRIVATE, 7, 0x3000) = 0x76debfd000 mmap(NULL, 560, PROT_READ, MAP_PRIVATE, 7, 0x3000) = 0x76ded59000 mmap(NULL, 5888, PROT_READ, MAP_PRIVATE, 7, 0) = 0x76debfb000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 8 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x38", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x6f", 4096) = 47 fstat(8, {st_mode=S_IFREG|0644, st_size=10744, ...}) = 0 fstatfs(8, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(8, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xb8\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x15\x00\x13\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 8, 0) = 0x76debfa000 mmap(NULL, 3760, PROT_READ, MAP_PRIVATE, 8, 0x2000) = 0x76debf9000 mmap(NULL, 496, PROT_READ, MAP_PRIVATE, 8, 0x2000) = 0x76debf8000 mmap(NULL, 2919, PROT_READ, MAP_PRIVATE, 8, 0) = 0x76debf7000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x65\x6e\x73\x6f\x72\x73\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 9 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x39", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x65\x6e\x73\x6f\x72\x73\x6c\x6f\x67\x2e\x73\x6f", 4096) = 30 fstat(9, {st_mode=S_IFREG|0644, st_size=15112, ...}) = 0 fstatfs(9, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(9, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x88\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x16\x00\x14\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 9, 0) = 0x76debf6000 mmap(NULL, 4240, PROT_READ, MAP_PRIVATE, 9, 0x3000) = 0x76debf4000 mmap(NULL, 464, PROT_READ, MAP_PRIVATE, 9, 0x3000) = 0x76debf3000 mmap(NULL, 2024, PROT_READ, MAP_PRIVATE, 9, 0) = 0x76debf2000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x73\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 10 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x30", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x73\x63\x2e\x73\x6f", 4096) = 23 fstat(10, {st_mode=S_IFREG|0644, st_size=1456080, ...}) = 0 fstatfs(10, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(10, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x80\x0b\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x50\x31\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 10, 0) = 0x76debf1000 mmap(NULL, 2336, PROT_READ, MAP_PRIVATE, 10, 0x163000) = 0x76debf0000 mmap(NULL, 4048, PROT_READ, MAP_PRIVATE, 10, 0x15e000) = 0x76debef000 mmap(NULL, 251539, PROT_READ, MAP_PRIVATE, 10, 0x27000) = 0x76debb1000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2e\x73\x73\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 11 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x31", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2e\x73\x73\x63\x2e\x73\x6f", 4096) = 28 fstat(11, {st_mode=S_IFREG|0644, st_size=458608, ...}) = 0 fstatfs(11, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(11, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf0\xf8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 11, 0) = 0x76debb0000 mmap(NULL, 6240, PROT_READ, MAP_PRIVATE, 11, 0x6f000) = 0x76debae000 mmap(NULL, 7616, PROT_READ, MAP_PRIVATE, 11, 0x6c000) = 0x76debac000 mmap(NULL, 39783, PROT_READ, MAP_PRIVATE, 11, 0x5000) = 0x76deba2000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 12 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x32", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x69\x64\x6c\x62\x61\x73\x65\x2e\x73\x6f", 4096) = 47 fstat(12, {st_mode=S_IFREG|0644, st_size=774832, ...}) = 0 fstatfs(12, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(12, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x60\x04\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\xcc\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 12, 0) = 0x76deba1000 mmap(NULL, 7904, PROT_READ, MAP_PRIVATE, 12, 0xbc000) = 0x76deb9f000 mmap(NULL, 2080, PROT_READ, MAP_PRIVATE, 12, 0xb7000) = 0x76deb9e000 mmap(NULL, 123205, PROT_READ, MAP_PRIVATE, 12, 0xc000) = 0x76deb7f000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x69\x64\x6c\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 13 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x68\x69\x64\x6c\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x2e\x73\x6f", 4096) = 33 fstat(13, {st_mode=S_IFREG|0644, st_size=10408, ...}) = 0 fstatfs(13, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(13, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xa8\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x14\x00\x12\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 13, 0) = 0x76deb7e000 mmap(NULL, 3152, PROT_READ, MAP_PRIVATE, 13, 0x2000) = 0x76deb7d000 mmap(NULL, 448, PROT_READ, MAP_PRIVATE, 13, 0x2000) = 0x76deb7c000 mmap(NULL, 1556, PROT_READ, MAP_PRIVATE, 13, 0) = 0x76deb7b000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 14 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x34", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2e\x73\x6f", 4096) = 45 fstat(14, {st_mode=S_IFREG|0644, st_size=173520, ...}) = 0 fstatfs(14, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(14, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x90\x9f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 14, 0) = 0x76deb7a000 mmap(NULL, 9568, PROT_READ, MAP_PRIVATE, 14, 0x29000) = 0x76deb77000 mmap(NULL, 2848, PROT_READ, MAP_PRIVATE, 14, 0x28000) = 0x76deb76000 mmap(NULL, 35035, PROT_READ, MAP_PRIVATE, 14, 0x2000) = 0x76deb6d000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x69\x6d\x70\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 15 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x35", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x69\x6d\x70\x6c\x2e\x73\x6f", 4096) = 50 fstat(15, {st_mode=S_IFREG|0644, st_size=58464, ...}) = 0 fstatfs(15, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(15, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xa0\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x17\x00\x15\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 15, 0) = 0x76deb6c000 mmap(NULL, 8960, PROT_READ, MAP_PRIVATE, 15, 0xd000) = 0x76deb69000 mmap(NULL, 2560, PROT_READ, MAP_PRIVATE, 15, 0xd000) = 0x76deb68000 mmap(NULL, 10817, PROT_READ, MAP_PRIVATE, 15, 0x1000) = 0x76deb65000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 16 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x36", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", 4096) = 42 fstat(16, {st_mode=S_IFREG|0644, st_size=700400, ...}) = 0 fstatfs(16, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(16, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\xa9\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1b\x00\x19\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 16, 0) = 0x76deb64000 mmap(NULL, 6432, PROT_READ, MAP_PRIVATE, 16, 0xaa000) = 0x76deb62000 mmap(NULL, 8080, PROT_READ, MAP_PRIVATE, 16, 0xa7000) = 0x76deb60000 mmap(NULL, 104252, PROT_READ, MAP_PRIVATE, 16, 0x12000) = 0x76deb46000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb45000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb45000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 17 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x37", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34\x2f\x62\x69\x6f\x6e\x69\x63\x2f\x6c\x69\x62\x63\x2e\x73\x6f", 4096) = 46 fstat(17, {st_mode=S_IFREG|0644, st_size=1013144, ...}) = 0 fstatfs(17, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(17, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x18\x6e\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0b\x00\x40\x00\x1e\x00\x1b\x00", 64, 0) = 64 mmap(NULL, 744, PROT_READ, MAP_PRIVATE, 17, 0) = 0x76deb44000 mmap(NULL, 9136, PROT_READ, MAP_PRIVATE, 17, 0xf6000) = 0x76deb41000 mmap(NULL, 6032, PROT_READ, MAP_PRIVATE, 17, 0xbf000) = 0x76deb3f000 mmap(NULL, 19402, PROT_READ, MAP_PRIVATE, 17, 0xc000) = 0x76deb3a000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6d\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x6d\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x6d\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6d\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 18 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x38", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34\x2f\x62\x69\x6f\x6e\x69\x63\x2f\x6c\x69\x62\x6d\x2e\x73\x6f", 4096) = 46 fstat(18, {st_mode=S_IFREG|0644, st_size=221072, ...}) = 0 fstatfs(18, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(18, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x20\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x10\x59\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 18, 0) = 0x76deb39000 mmap(NULL, 6304, PROT_READ, MAP_PRIVATE, 18, 0x35000) = 0x76deb37000 mmap(NULL, 480, PROT_READ, MAP_PRIVATE, 18, 0x35000) = 0x76deb36000 mmap(NULL, 6360, PROT_READ, MAP_PRIVATE, 18, 0x2000) = 0x76deb34000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 19 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x39", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34\x2f\x62\x69\x6f\x6e\x69\x63\x2f\x6c\x69\x62\x64\x6c\x2e\x73\x6f", 4096) = 47 fstat(19, {st_mode=S_IFREG|0644, st_size=13728, ...}) = 0 fstatfs(19, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb33000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb33000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 pread64(19, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x11\x00\x0f\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 19, 0) = 0x76deb32000 mmap(NULL, 1792, PROT_READ, MAP_PRIVATE, 19, 0x3000) = 0x76deb31000 mmap(NULL, 272, PROT_READ, MAP_PRIVATE, 19, 0x2000) = 0x76deb30000 mmap(NULL, 3706, PROT_READ, MAP_PRIVATE, 19, 0) = 0x76deb2f000 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 20 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x30", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x2b\x2b\x2e\x73\x6f", 4096) = 23 fstat(20, {st_mode=S_IFREG|0644, st_size=700400, ...}) = 0 fstatfs(20, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(20, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x90\x04\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x30\xa9\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1b\x00\x19\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 20, 0) = 0x76deb2e000 mmap(NULL, 6432, PROT_READ, MAP_PRIVATE, 20, 0xaa000) = 0x76deb2c000 mmap(NULL, 8080, PROT_READ, MAP_PRIVATE, 20, 0xa7000) = 0x76deb2a000 mmap(NULL, 104252, PROT_READ, MAP_PRIVATE, 20, 0x12000) = 0x76deb10000 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x70\x72\x6f\x63\x65\x73\x73\x67\x72\x6f\x75\x70\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 21 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x31", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x70\x72\x6f\x63\x65\x73\x73\x67\x72\x6f\x75\x70\x2e\x73\x6f", 4096) = 51 fstat(21, {st_mode=S_IFREG|0644, st_size=334944, ...}) = 0 fstatfs(21, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(21, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x20\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 21, 0) = 0x76deb0f000 mmap(NULL, 4736, PROT_READ, MAP_PRIVATE, 21, 0x51000) = 0x76deb0d000 mmap(NULL, 6032, PROT_READ, MAP_PRIVATE, 21, 0x4f000) = 0x76deb0b000 mmap(NULL, 50996, PROT_READ, MAP_PRIVATE, 21, 0x6000) = 0x76deafe000 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 22 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x32", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x76\x6e\x64\x6b\x73\x75\x70\x70\x6f\x72\x74\x2e\x73\x6f", 4096) = 31 fstat(22, {st_mode=S_IFREG|0644, st_size=10776, ...}) = 0 fstatfs(22, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(22, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x58\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x17\x00\x15\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 22, 0) = 0x76deafd000 mmap(NULL, 3696, PROT_READ, MAP_PRIVATE, 22, 0x2000) = 0x76deafc000 mmap(NULL, 512, PROT_READ, MAP_PRIVATE, 22, 0x2000) = 0x76deafb000 mmap(NULL, 2971, PROT_READ, MAP_PRIVATE, 22, 0) = 0x76deafa000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x70\x72\x6f\x74\x6f\x62\x75\x66\x2d\x63\x70\x70\x2d\x66\x75\x6c\x6c\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 23 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x70\x72\x6f\x74\x6f\x62\x75\x66\x2d\x63\x70\x70\x2d\x66\x75\x6c\x6c\x2e\x73\x6f", 4096) = 37 fstat(23, {st_mode=S_IFREG|0644, st_size=1914544, ...}) = 0 fstatfs(23, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(23, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf0\x2f\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x08\x00\x40\x00\x1b\x00\x1a\x00", 64, 0) = 64 mmap(NULL, 576, PROT_READ, MAP_PRIVATE, 23, 0) = 0x76deaf9000 mmap(NULL, 9888, PROT_READ, MAP_PRIVATE, 23, 0x1d2000) = 0x76deaf6000 mmap(NULL, 3152, PROT_READ, MAP_PRIVATE, 23, 0x1ca000) = 0x76deaf5000 mmap(NULL, 340369, PROT_READ, MAP_PRIVATE, 23, 0x1a000) = 0x76deaa1000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x63\x6f\x6d\x6d\x6f\x6e\x5f\x73\x6f\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 24 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x34", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x63\x6f\x6d\x6d\x6f\x6e\x5f\x73\x6f\x2e\x73\x6f", 4096) = 33 fstat(24, {st_mode=S_IFREG|0644, st_size=11312, ...}) = 0 fstatfs(24, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(24, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x70\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x17\x00\x15\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 24, 0) = 0x76deaa0000 mmap(NULL, 4768, PROT_READ, MAP_PRIVATE, 24, 0x2000) = 0x76dea9e000 mmap(NULL, 768, PROT_READ, MAP_PRIVATE, 24, 0x2000) = 0x76dea9d000 mmap(NULL, 1786, PROT_READ, MAP_PRIVATE, 24, 0) = 0x76dea9c000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x63\x63\x69\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 25 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x35", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x63\x63\x69\x2e\x73\x6f", 4096) = 27 fstat(25, {st_mode=S_IFREG|0644, st_size=50080, ...}) = 0 fstatfs(25, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea9b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea9b000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 pread64(25, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x20\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 25, 0) = 0x76dea9a000 mmap(NULL, 8384, PROT_READ, MAP_PRIVATE, 25, 0xb000) = 0x76dea97000 mmap(NULL, 624, PROT_READ, MAP_PRIVATE, 25, 0xb000) = 0x76dea96000 mmap(NULL, 9101, PROT_READ, MAP_PRIVATE, 25, 0) = 0x76dea93000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x65\x6e\x63\x64\x65\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 26 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x36", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x71\x6d\x69\x5f\x65\x6e\x63\x64\x65\x63\x2e\x73\x6f", 4096) = 30 fstat(26, {st_mode=S_IFREG|0644, st_size=19440, ...}) = 0 fstatfs(26, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea92000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea92000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 pread64(26, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xb0\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x15\x00\x13\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 26, 0) = 0x76dea91000 mmap(NULL, 4768, PROT_READ, MAP_PRIVATE, 26, 0x4000) = 0x76dea8f000 mmap(NULL, 480, PROT_READ, MAP_PRIVATE, 26, 0x4000) = 0x76dea8e000 mmap(NULL, 3567, PROT_READ, MAP_PRIVATE, 26, 0) = 0x76dea8d000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x6e\x73\x64\x69\x61\x67\x6c\x6f\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 27 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x37", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x6e\x73\x64\x69\x61\x67\x6c\x6f\x67\x2e\x73\x6f", 4096) = 30 fstat(27, {st_mode=S_IFREG|0644, st_size=53864, ...}) = 0 fstatfs(27, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(27, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x18\x00\x16\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 27, 0) = 0x76dea8c000 mmap(NULL, 7888, PROT_READ, MAP_PRIVATE, 27, 0xc000) = 0x76dea8a000 mmap(NULL, 560, PROT_READ, MAP_PRIVATE, 27, 0xc000) = 0x76dea89000 mmap(NULL, 12367, PROT_READ, MAP_PRIVATE, 27, 0) = 0x76dea85000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x31\x2e\x30\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 28 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x38", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x31\x2e\x30\x2e\x73\x6f", 4096) = 45 fstat(28, {st_mode=S_IFREG|0644, st_size=127240, ...}) = 0 fstatfs(28, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(28, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 28, 0) = 0x76dea84000 mmap(NULL, 7120, PROT_READ, MAP_PRIVATE, 28, 0x1e000) = 0x76dea82000 mmap(NULL, 3392, PROT_READ, MAP_PRIVATE, 28, 0x1d000) = 0x76dea81000 mmap(NULL, 22109, PROT_READ, MAP_PRIVATE, 28, 0x2000) = 0x76dea7b000 openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 29 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x32\x39", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x63\x67\x72\x6f\x75\x70\x72\x63\x2e\x73\x6f", 4096) = 28 fstat(29, {st_mode=S_IFREG|0644, st_size=15504, ...}) = 0 fstatfs(29, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(29, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x50\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 29, 0) = 0x76dea7a000 mmap(NULL, 4832, PROT_READ, MAP_PRIVATE, 29, 0x3000) = 0x76dea78000 mmap(NULL, 544, PROT_READ, MAP_PRIVATE, 29, 0x3000) = 0x76dea77000 mmap(NULL, 4636, PROT_READ, MAP_PRIVATE, 29, 0) = 0x76dea75000 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 30 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33\x30", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x72\x75\x6e\x74\x69\x6d\x65\x2f\x6c\x69\x62\x36\x34\x2f\x62\x69\x6f\x6e\x69\x63\x2f\x6c\x69\x62\x64\x6c\x5f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x6f", 4096) = 55 fstat(30, {st_mode=S_IFREG|0644, st_size=9928, ...}) = 0 fstatfs(30, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(30, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xc8\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x10\x00\x0e\x00", 64, 0) = 64 mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 30, 0) = 0x76dea74000 mmap(NULL, 2448, PROT_READ, MAP_PRIVATE, 30, 0x2000) = 0x76dea73000 mmap(NULL, 272, PROT_READ, MAP_PRIVATE, 30, 0x2000) = 0x76dea72000 mmap(NULL, 2936, PROT_READ, MAP_PRIVATE, 30, 0) = 0x76dea71000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x7a\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x68\x77\x2f\x6c\x69\x62\x7a\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x65\x67\x6c\x2f\x6c\x69\x62\x7a\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x7a\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 31 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33\x31", "\x2f\x61\x70\x65\x78\x2f\x63\x6f\x6d\x2e\x61\x6e\x64\x72\x6f\x69\x64\x2e\x76\x6e\x64\x6b\x2e\x76\x33\x32\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x7a\x2e\x73\x6f", 4096) = 40 fstat(31, {st_mode=S_IFREG|0644, st_size=98016, ...}) = 0 fstatfs(31, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea70000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea70000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x73\x6d\x61\x6c\x6c\x5f\x6f\x62\x6a\x65\x63\x74\x73") = 0 pread64(31, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xe0\x78\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x18\x00\x16\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 31, 0) = 0x76dea6f000 mmap(NULL, 6080, PROT_READ, MAP_PRIVATE, 31, 0x17000) = 0x76dea6d000 mmap(NULL, 1152, PROT_READ, MAP_PRIVATE, 31, 0x17000) = 0x76dea6c000 mmap(NULL, 1570, PROT_READ, MAP_PRIVATE, 31, 0x1000) = 0x76dea6b000 openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x64\x69\x61\x67\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 32 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33\x32", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x64\x69\x61\x67\x2e\x73\x6f", 4096) = 24 fstat(32, {st_mode=S_IFREG|0644, st_size=220216, ...}) = 0 fstatfs(32, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 pread64(32, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x55\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 32, 0) = 0x76dea6a000 mmap(NULL, 4656, PROT_READ, MAP_PRIVATE, 32, 0x35000) = 0x76dea68000 mmap(NULL, 1728, PROT_READ, MAP_PRIVATE, 32, 0x2f000) = 0x76dea67000 mmap(NULL, 9954, PROT_READ, MAP_PRIVATE, 32, 0x4000) = 0x76dea64000 openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 33 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x62\x61\x73\x65\x2e\x73\x6f", 4096) = 24 fstat(33, {st_mode=S_IFREG|0644, st_size=242976, ...}) = 0 fstatfs(33, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(33, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xa0\xae\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x1a\x00\x18\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 33, 0) = 0x76dea63000 mmap(NULL, 9152, PROT_READ, MAP_PRIVATE, 33, 0x3a000) = 0x76dea60000 mmap(NULL, 1792, PROT_READ, MAP_PRIVATE, 33, 0x39000) = 0x76dea5f000 mmap(NULL, 28205, PROT_READ, MAP_PRIVATE, 33, 0x3000) = 0x76dea58000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de9d9000 munmap(0x76de9d9000, 229376) = 0 munmap(0x76dea15000, 274432) = 0 mmap(0x76dea11000, 2356, PROT_READ, MAP_PRIVATE|MAP_FIXED, 22, 0) = 0x76dea11000 mmap(0x76dea12000, 656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 22, 0x1000) = 0x76dea12000 mmap(0x76dea13000, 600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 22, 0x2000) = 0x76dea13000 mmap(0x76dea14000, 600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 22, 0x2000) = 0x76dea14000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de992000 munmap(0x76de992000, 274432) = 0 munmap(0x76de9da000, 225280) = 0 mmap(0x76de9d5000, 2972, PROT_READ, MAP_PRIVATE|MAP_FIXED, 19, 0) = 0x76de9d5000 mmap(0x76de9d6000, 688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 19, 0x1000) = 0x76de9d6000 mmap(0x76de9d7000, 384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 19, 0x2000) = 0x76de9d7000 mmap(0x76de9d9000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76de9d9000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76de9d9000, 4096, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de956000 munmap(0x76de956000, 204800) = 0 munmap(0x76de996000, 258048) = 0 mmap(0x76de988000, 18684, PROT_READ, MAP_PRIVATE|MAP_FIXED, 27, 0) = 0x76de988000 mmap(0x76de98d000, 22672, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 27, 0x5000) = 0x76de98d000 mmap(0x76de993000, 5160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 27, 0xb000) = 0x76de993000 mmap(0x76de995000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76de995000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76de995000, 4096, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de909000 munmap(0x76de909000, 253952) = 0 munmap(0x76de971000, 94208) = 0 mmap(0x76de947000, 64548, PROT_READ, MAP_PRIVATE|MAP_FIXED, 14, 0) = 0x76de947000 mmap(0x76de957000, 86512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 14, 0x10000) = 0x76de957000 mmap(0x76de96d000, 11392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 14, 0x26000) = 0x76de96d000 mmap(0x76de970000, 3216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 14, 0x28000) = 0x76de970000 mmap(NULL, 1044480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de848000 munmap(0x76de848000, 249856) = 0 munmap(0x76de933000, 81920) = 0 mmap(0x76de885000, 297220, PROT_READ, MAP_PRIVATE|MAP_FIXED, 16, 0) = 0x76de885000 mmap(0x76de8ce000, 367200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 16, 0x49000) = 0x76de8ce000 mmap(0x76de928000, 25224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 16, 0xa3000) = 0x76de928000 mmap(0x76de92f000, 689, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 16, 0xa9000) = 0x76de92f000 mmap(0x76de930000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76de930000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76de930000, 12288, "\x2e\x62\x73\x73") = 0 mmap(NULL, 782336, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de7c6000 munmap(0x76de7c6000, 413696) = 0 munmap(0x76de87d000, 32768) = 0 mmap(0x76de82b000, 121068, PROT_READ, MAP_PRIVATE|MAP_FIXED, 21, 0) = 0x76de82b000 mmap(0x76de849000, 200592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 21, 0x1e000) = 0x76de849000 mmap(0x76de87a000, 7040, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 21, 0x4f000) = 0x76de87a000 mmap(0x76de87c000, 2944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 21, 0x50000) = 0x76de87c000 mmap(NULL, 2355200, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de5ec000 munmap(0x76de5ec000, 106496) = 0 munmap(0x76de7ec000, 258048) = 0 mmap(0x76de606000, 1835428, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 23, 0) = 0x76de606000 mmap(0x76de7df000, 49280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 23, 0x1c4000) = 0x76de7df000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de587000 munmap(0x76de587000, 233472) = 0 munmap(0x76de5fb000, 45056) = 0 mmap(0x76de5c0000, 69516, PROT_READ, MAP_PRIVATE|MAP_FIXED, 33, 0) = 0x76de5c0000 mmap(0x76de5d1000, 163120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 33, 0x11000) = 0x76de5d1000 mmap(0x76de5f9000, 3392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 33, 0x39000) = 0x76de5f9000 mmap(0x76de5fa000, 3408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 33, 0x39000) = 0x76de5fa000 mmap(NULL, 1044480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de4c1000 munmap(0x76de4c1000, 262144) = 0 munmap(0x76de5bc000, 16384) = 0 mmap(0x76de501000, 284252, PROT_READ, MAP_PRIVATE|MAP_FIXED, 12, 0) = 0x76de501000 mmap(0x76de547000, 425824, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 12, 0x46000) = 0x76de547000 mmap(0x76de5af000, 44816, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 12, 0xae000) = 0x76de5af000 mmap(0x76de5ba000, 3976, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 12, 0xb8000) = 0x76de5ba000 mmap(0x76de5bb000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76de5bb000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76de5bb000, 4096, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de482000 munmap(0x76de482000, 294912) = 0 munmap(0x76de4e3000, 122880) = 0 mmap(0x76de4ca000, 29004, PROT_READ, MAP_PRIVATE|MAP_FIXED, 31, 0) = 0x76de4ca000 mmap(0x76de4d2000, 59408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 31, 0x8000) = 0x76de4d2000 mmap(0x76de4e1000, 1168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 31, 0x17000) = 0x76de4e1000 mmap(0x76de4e2000, 1168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 31, 0x17000) = 0x76de4e2000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de44b000 munmap(0x76de44b000, 352256) = 0 munmap(0x76de4a6000, 147456) = 0 mmap(0x76de4a1000, 3564, PROT_READ, MAP_PRIVATE|MAP_FIXED, 26, 0) = 0x76de4a1000 mmap(0x76de4a2000, 8784, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 26, 0x1000) = 0x76de4a2000 mmap(0x76de4a5000, 584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 26, 0x4000) = 0x76de4a5000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76de422000 munmap(0x76de422000, 192512) = 0 munmap(0x76de45f000, 270336) = 0 mmap(0x76de451000, 22164, PROT_READ, MAP_PRIVATE|MAP_FIXED, 15, 0) = 0x76de451000 mmap(0x76de457000, 23392, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 15, 0x6000) = 0x76de457000 mmap(0x76de45d000, 6464, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 15, 0xc000) = 0x76de45d000 mmap(NULL, 6811648, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dddd2000 munmap(0x76dddd2000, 6811648) = 0 mmap(NULL, 41938944, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dbc52000 munmap(0x76dbc52000, 2166784) = 0 munmap(0x76dc481000, 1568768) = 0 munmap(0x76de400000, 331776) = 0 mmap(0x76dbe63000, 245404, PROT_READ, MAP_PRIVATE|MAP_FIXED, 17, 0) = 0x76dbe63000 mmap(0x76dbe9f000, 525168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 17, 0x3c000) = 0x76dbe9f000 mmap(0x76dbf20000, 16056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 17, 0xbd000) = 0x76dbf20000 mmap(0x76dbf24000, 5400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 17, 0xc0000) = 0x76dbf24000 mmap(0x76dbf26000, 5615616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76dbf26000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dbf26000, 5615616, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dc581000 munmap(0x76dc581000, 311296) = 0 munmap(0x76dc5d2000, 188416) = 0 mmap(0x76dc5cd000, 1700, PROT_READ, MAP_PRIVATE|MAP_FIXED, 9, 0) = 0x76dc5cd000 mmap(0x76dc5ce000, 144, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 9, 0x1000) = 0x76dc5ce000 mmap(0x76dc5cf000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 9, 0x2000) = 0x76dc5cf000 mmap(0x76dc5d1000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76dc5d1000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dc5d1000, 4096, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dc54e000 munmap(0x76dc54e000, 413696) = 0 munmap(0x76dc5b7000, 90112) = 0 mmap(0x76dc5b3000, 5620, PROT_READ, MAP_PRIVATE|MAP_FIXED, 7, 0) = 0x76dc5b3000 mmap(0x76dc5b5000, 3456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 7, 0x2000) = 0x76dc5b5000 mmap(0x76dc5b6000, 800, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 7, 0x3000) = 0x76dc5b6000 mmap(NULL, 1830912, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dbca4000 munmap(0x76dbca4000, 1830912) = 0 mmap(NULL, 23064576, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da864000 munmap(0x76da864000, 1794048) = 0 munmap(0x76dab7e000, 532480) = 0 munmap(0x76dbe00000, 405504) = 0 mmap(0x76daa1a000, 753204, PROT_READ, MAP_PRIVATE|MAP_FIXED, 10, 0) = 0x76daa1a000 mmap(0x76daad2000, 647632, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 10, 0xb8000) = 0x76daad2000 mmap(0x76dab71000, 41480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 10, 0x157000) = 0x76dab71000 mmap(0x76dab7c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76dab7c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dab7c000, 8192, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dc534000 munmap(0x76dc534000, 159744) = 0 munmap(0x76dc576000, 249856) = 0 mmap(0x76dc55b000, 52740, PROT_READ, MAP_PRIVATE|MAP_FIXED, 6, 0) = 0x76dc55b000 mmap(0x76dc568000, 46944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 6, 0xd000) = 0x76dc568000 mmap(0x76dc574000, 3392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 6, 0x19000) = 0x76dc574000 mmap(0x76dc575000, 3424, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 6, 0x19000) = 0x76dc575000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dc4dc000 munmap(0x76dc4dc000, 339968) = 0 munmap(0x76dc534000, 159744) = 0 mmap(0x76dc52f000, 4652, PROT_READ, MAP_PRIVATE|MAP_FIXED, 29, 0) = 0x76dc52f000 mmap(0x76dc531000, 3616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 29, 0x2000) = 0x76dc531000 mmap(0x76dc532000, 784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 29, 0x3000) = 0x76dc532000 mmap(0x76dc533000, 784, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 29, 0x3000) = 0x76dc533000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dc4b0000 munmap(0x76dc4b0000, 114688) = 0 munmap(0x76dc4cf000, 393216) = 0 mmap(0x76dc4cc000, 996, PROT_READ, MAP_PRIVATE|MAP_FIXED, 13, 0) = 0x76dc4cc000 mmap(0x76dc4cd000, 80, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 13, 0x1000) = 0x76dc4cd000 mmap(0x76dc4ce000, 456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 13, 0x2000) = 0x76dc4ce000 mmap(NULL, 1044480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da91b000 munmap(0x76da91b000, 212992) = 0 munmap(0x76da9fd000, 118784) = 0 mmap(0x76da94f000, 297220, PROT_READ, MAP_PRIVATE|MAP_FIXED, 20, 0) = 0x76da94f000 mmap(0x76da998000, 367200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 20, 0x49000) = 0x76da998000 mmap(0x76da9f2000, 25224, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 20, 0xa3000) = 0x76da9f2000 mmap(0x76da9f9000, 689, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 20, 0xa9000) = 0x76da9f9000 mmap(0x76da9fa000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76da9fa000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76da9fa000, 12288, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dab81000 munmap(0x76dab81000, 319488) = 0 munmap(0x76dabd2000, 188416) = 0 mmap(0x76dabcf000, 2316, PROT_READ, MAP_PRIVATE|MAP_FIXED, 30, 0) = 0x76dabcf000 mmap(0x76dabd0000, 336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 30, 0x1000) = 0x76dabd0000 mmap(0x76dabd1000, 360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 30, 0x2000) = 0x76dabd1000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da8d0000 munmap(0x76da8d0000, 299008) = 0 munmap(0x76da91d000, 204800) = 0 mmap(0x76da919000, 1212, PROT_READ, MAP_PRIVATE|MAP_FIXED, 24, 0) = 0x76da919000 mmap(0x76da91a000, 80, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 24, 0x1000) = 0x76da91a000 mmap(0x76da91b000, 656, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 24, 0x2000) = 0x76da91b000 mmap(0x76da91c000, 664, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 24, 0x2000) = 0x76da91c000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da89a000 munmap(0x76da89a000, 225280) = 0 munmap(0x76da8e1000, 229376) = 0 mmap(0x76da8d1000, 16796, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x76da8d1000 mmap(0x76da8d6000, 34816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x5000) = 0x76da8d6000 mmap(0x76da8df000, 1432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x76da8df000 mmap(0x76da8e0000, 1576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe000) = 0x76da8e0000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da852000 munmap(0x76da852000, 200704) = 0 munmap(0x76da8be000, 77824) = 0 mmap(0x76da883000, 69516, PROT_READ, MAP_PRIVATE|MAP_FIXED, 5, 0) = 0x76da883000 mmap(0x76da894000, 163120, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 5, 0x11000) = 0x76da894000 mmap(0x76da8bc000, 3392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 5, 0x39000) = 0x76da8bc000 mmap(0x76da8bd000, 3408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 5, 0x39000) = 0x76da8bd000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da804000 munmap(0x76da804000, 421888) = 0 munmap(0x76da87d000, 24576) = 0 mmap(0x76da86b000, 25964, PROT_READ, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x76da86b000 mmap(0x76da872000, 30672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0x7000) = 0x76da872000 mmap(0x76da87a000, 5304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0xf000) = 0x76da87a000 mmap(0x76da87c000, 1237, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x10000) = 0x76da87c000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da7ec000 munmap(0x76da7ec000, 90112) = 0 munmap(0x76da839000, 204800) = 0 mmap(0x76da802000, 69892, PROT_READ, MAP_PRIVATE|MAP_FIXED, 18, 0) = 0x76da802000 mmap(0x76da814000, 140672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 18, 0x12000) = 0x76da814000 mmap(0x76da837000, 712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 18, 0x35000) = 0x76da837000 mmap(0x76da838000, 832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 18, 0x35000) = 0x76da838000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da783000 munmap(0x76da783000, 262144) = 0 munmap(0x76da7c6000, 245760) = 0 mmap(0x76da7c3000, 2636, PROT_READ, MAP_PRIVATE|MAP_FIXED, 8, 0) = 0x76da7c3000 mmap(0x76da7c4000, 1776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 8, 0x1000) = 0x76da7c4000 mmap(0x76da7c5000, 632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 8, 0x2000) = 0x76da7c5000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da744000 munmap(0x76da744000, 376832) = 0 munmap(0x76da7bf000, 16384) = 0 mmap(0x76da7a0000, 47508, PROT_READ, MAP_PRIVATE|MAP_FIXED, 28, 0) = 0x76da7a0000 mmap(0x76da7ac000, 61456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 28, 0xc000) = 0x76da7ac000 mmap(0x76da7bc000, 7360, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 28, 0x1c000) = 0x76da7bc000 mmap(0x76da7be000, 3272, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 28, 0x1d000) = 0x76da7be000 mmap(NULL, 782336, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da6e1000 munmap(0x76da6e1000, 151552) = 0 munmap(0x76da775000, 176128) = 0 mmap(0x76da706000, 177324, PROT_READ, MAP_PRIVATE|MAP_FIXED, 11, 0) = 0x76da706000 mmap(0x76da732000, 250080, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 11, 0x2c000) = 0x76da732000 mmap(0x76da770000, 16192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 11, 0x6a000) = 0x76da770000 mmap(0x76da774000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76da774000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76da774000, 4096, "\x2e\x62\x73\x73") = 0 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da687000 munmap(0x76da687000, 327680) = 0 munmap(0x76da6e4000, 139264) = 0 mmap(0x76da6d7000, 14380, PROT_READ, MAP_PRIVATE|MAP_FIXED, 25, 0) = 0x76da6d7000 mmap(0x76da6db000, 28176, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 25, 0x4000) = 0x76da6db000 mmap(0x76da6e2000, 1232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 25, 0xb000) = 0x76da6e2000 mmap(0x76da6e3000, 1332, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 25, 0xb000) = 0x76da6e3000 mmap(NULL, 3141632, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da3d8000 munmap(0x76da3d8000, 3141632) = 0 mmap(NULL, 25161728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76d8ed8000 munmap(0x76d8ed8000, 1568768) = 0 munmap(0x76d92e9000, 1142784) = 0 munmap(0x76da600000, 880640) = 0 mmap(0x76d9057000, 68620, PROT_READ, MAP_PRIVATE|MAP_FIXED, 32, 0) = 0x76d9057000 mmap(0x76d9068000, 121968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 32, 0x11000) = 0x76d9068000 mmap(0x76d9086000, 4064, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 32, 0x2f000) = 0x76d9086000 mmap(0x76d9087000, 23464, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 32, 0x2f000) = 0x76d9087000 mmap(0x76d908d000, 2473984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76d908d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76d908d000, 2473984, "\x2e\x62\x73\x73") = 0 rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da673000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76da673000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea57000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea57000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mprotect(0x56c9fb9000, 4096, PROT_READ) = 0 mprotect(0x76dc5d0000, 4096, PROT_READ) = 0 mprotect(0x76dab72000, 40960, PROT_READ) = 0 mprotect(0x76da771000, 12288, PROT_READ) = 0 mprotect(0x76dc4ce000, 4096, PROT_READ) = 0 mprotect(0x76de96d000, 12288, PROT_READ) = 0 mprotect(0x76de45e000, 4096, PROT_READ) = 0 mprotect(0x76de7df000, 49152, PROT_READ) = 0 mprotect(0x76da91b000, 4096, PROT_READ) = 0 mprotect(0x76da6e2000, 4096, PROT_READ) = 0 mprotect(0x76de4a5000, 4096, PROT_READ) = 0 mprotect(0x76de994000, 4096, PROT_READ) = 0 mprotect(0x76da7bc000, 8192, PROT_READ) = 0 mprotect(0x76d9086000, 4096, PROT_READ) = 0 munmap(0x76dea57000, 4096) = 0 mprotect(0x76da8df000, 4096, PROT_READ) = 0 mprotect(0x76da9f2000, 28672, PROT_READ) = 0 mprotect(0x76dbf20000, 16384, PROT_READ) = 0 mprotect(0x76da837000, 4096, PROT_READ) = 0 mprotect(0x76de9d7000, 4096, PROT_READ) = 0 mprotect(0x76da87a000, 8192, PROT_READ) = 0 mprotect(0x76da8bc000, 4096, PROT_READ) = 0 mprotect(0x76de928000, 28672, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea57000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea57000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mprotect(0x76dc574000, 4096, PROT_READ) = 0 mprotect(0x76de87a000, 8192, PROT_READ) = 0 munmap(0x76dea57000, 4096) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea57000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea57000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mprotect(0x76dc5b6000, 4096, PROT_READ) = 0 munmap(0x76dea57000, 4096) = 0 mprotect(0x76da7c5000, 4096, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dea57000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dea57000, 4096, "\x62\x69\x6f\x6e\x69\x63\x5f\x61\x6c\x6c\x6f\x63\x5f\x6c\x6f\x62") = 0 mprotect(0x76de5af000, 45056, PROT_READ) = 0 munmap(0x76dea57000, 4096) = 0 mprotect(0x76dea13000, 4096, PROT_READ) = 0 mprotect(0x76dabd1000, 4096, PROT_READ) = 0 mprotect(0x76dc532000, 4096, PROT_READ) = 0 mprotect(0x76de5f9000, 4096, PROT_READ) = 0 mprotect(0x76de4e1000, 4096, PROT_READ) = 0 close(3) = 0 close(4) = 0 close(5) = 0 close(6) = 0 close(7) = 0 close(8) = 0 close(9) = 0 close(10) = 0 close(11) = 0 close(12) = 0 close(13) = 0 close(14) = 0 close(15) = 0 close(16) = 0 close(17) = 0 close(18) = 0 close(19) = 0 close(20) = 0 close(21) = 0 close(22) = 0 close(23) = 0 close(24) = 0 close(25) = 0 close(26) = 0 close(27) = 0 close(28) = 0 close(29) = 0 close(30) = 0 close(31) = 0 close(32) = 0 close(33) = 0 munmap(0x76deb45000, 4096) = 0 munmap(0x76dea64000, 9954) = 0 munmap(0x76dea67000, 1728) = 0 munmap(0x76dea68000, 4656) = 0 munmap(0x76dea6a000, 688) = 0 munmap(0x76dea6b000, 1570) = 0 munmap(0x76dea6c000, 1152) = 0 munmap(0x76dea6d000, 6080) = 0 munmap(0x76dea6f000, 688) = 0 munmap(0x76dea71000, 2936) = 0 munmap(0x76dea72000, 272) = 0 munmap(0x76dea73000, 2448) = 0 munmap(0x76dea74000, 632) = 0 munmap(0x76dea75000, 4636) = 0 munmap(0x76dea77000, 544) = 0 munmap(0x76dea78000, 4832) = 0 munmap(0x76dea7a000, 688) = 0 munmap(0x76dea7b000, 22109) = 0 munmap(0x76dea81000, 3392) = 0 munmap(0x76dea82000, 7120) = 0 munmap(0x76dea84000, 688) = 0 munmap(0x76dea93000, 9101) = 0 munmap(0x76dea96000, 624) = 0 munmap(0x76dea97000, 8384) = 0 munmap(0x76dea9a000, 688) = 0 munmap(0x76dea9c000, 1786) = 0 munmap(0x76dea9d000, 768) = 0 munmap(0x76dea9e000, 4768) = 0 munmap(0x76deaa0000, 688) = 0 munmap(0x76deb3a000, 19402) = 0 munmap(0x76deb3f000, 6032) = 0 munmap(0x76deb41000, 9136) = 0 munmap(0x76deb44000, 744) = 0 munmap(0x76deaa1000, 340369) = 0 munmap(0x76deaf5000, 3152) = 0 munmap(0x76deaf6000, 9888) = 0 munmap(0x76deaf9000, 576) = 0 munmap(0x76deb34000, 6360) = 0 munmap(0x76deb36000, 480) = 0 munmap(0x76deb37000, 6304) = 0 munmap(0x76deb39000, 688) = 0 munmap(0x76deb6d000, 35035) = 0 munmap(0x76deb76000, 2848) = 0 munmap(0x76deb77000, 9568) = 0 munmap(0x76deb7a000, 688) = 0 munmap(0x76dea85000, 12367) = 0 munmap(0x76dea89000, 560) = 0 munmap(0x76dea8a000, 7888) = 0 munmap(0x76dea8c000, 632) = 0 munmap(0x76deafe000, 50996) = 0 munmap(0x76deb0b000, 6032) = 0 munmap(0x76deb0d000, 4736) = 0 munmap(0x76deb0f000, 688) = 0 munmap(0x76dea58000, 28205) = 0 munmap(0x76dea5f000, 1792) = 0 munmap(0x76dea60000, 9152) = 0 munmap(0x76dea63000, 688) = 0 munmap(0x76deb7b000, 1556) = 0 munmap(0x76deb7c000, 448) = 0 munmap(0x76deb7d000, 3152) = 0 munmap(0x76deb7e000, 632) = 0 munmap(0x76deb46000, 104252) = 0 munmap(0x76deb60000, 8080) = 0 munmap(0x76deb62000, 6432) = 0 munmap(0x76deb64000, 688) = 0 munmap(0x76deb7f000, 123205) = 0 munmap(0x76deb9e000, 2080) = 0 munmap(0x76deb9f000, 7904) = 0 munmap(0x76deba1000, 688) = 0 munmap(0x76debb1000, 251539) = 0 munmap(0x76debef000, 4048) = 0 munmap(0x76debf0000, 2336) = 0 munmap(0x76debf1000, 632) = 0 munmap(0x76deb10000, 104252) = 0 munmap(0x76deb2a000, 8080) = 0 munmap(0x76deb2c000, 6432) = 0 munmap(0x76deb2e000, 688) = 0 munmap(0x76deba2000, 39783) = 0 munmap(0x76debac000, 7616) = 0 munmap(0x76debae000, 6240) = 0 munmap(0x76debb0000, 632) = 0 munmap(0x76deb2f000, 3706) = 0 munmap(0x76deb30000, 272) = 0 munmap(0x76deb31000, 1792) = 0 munmap(0x76deb32000, 688) = 0 munmap(0x76dea8d000, 3567) = 0 munmap(0x76dea8e000, 480) = 0 munmap(0x76dea8f000, 4768) = 0 munmap(0x76dea91000, 632) = 0 munmap(0x76debf7000, 2919) = 0 munmap(0x76debf8000, 496) = 0 munmap(0x76debf9000, 3760) = 0 munmap(0x76debfa000, 632) = 0 munmap(0x76debff000, 24339) = 0 munmap(0x76ded5e000, 4752) = 0 munmap(0x76ded60000, 2464) = 0 munmap(0x76ded64000, 688) = 0 munmap(0x76debfb000, 5888) = 0 munmap(0x76ded59000, 560) = 0 munmap(0x76debfd000, 4304) = 0 munmap(0x76ded5a000, 632) = 0 munmap(0x76deb65000, 10817) = 0 munmap(0x76deb68000, 2560) = 0 munmap(0x76deb69000, 8960) = 0 munmap(0x76deb6c000, 632) = 0 munmap(0x76dec05000, 28205) = 0 munmap(0x76ded65000, 1792) = 0 munmap(0x76ded66000, 9152) = 0 munmap(0x76ded69000, 688) = 0 munmap(0x76ded71000, 5641) = 0 munmap(0x76ded76000, 656) = 0 munmap(0x76ded79000, 7904) = 0 munmap(0x76ded7c000, 688) = 0 munmap(0x76debf2000, 2024) = 0 munmap(0x76debf3000, 464) = 0 munmap(0x76debf4000, 4240) = 0 munmap(0x76debf6000, 632) = 0 munmap(0x76ded6a000, 11474) = 0 munmap(0x76ded6d000, 7760) = 0 munmap(0x76ded6f000, 6384) = 0 munmap(0x76ded75000, 688) = 0 munmap(0x76deafa000, 2971) = 0 munmap(0x76deafb000, 512) = 0 munmap(0x76deafc000, 3696) = 0 munmap(0x76deafd000, 688) = 0 munmap(0x76dea9b000, 4096) = 0 mmap(NULL, 20480, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x76ded6e000 mprotect(0x76ded6f000, 12288, PROT_READ|PROT_WRITE) = 0 rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded6f000, 12288, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x6d\x61\x69\x6e") = 0 munmap(0x76dfeff000, 12288) = 0 mprotect(0x76dbf2b000, 4096, PROT_READ) = 0 mprotect(0x76dbf2b000, 4096, PROT_READ|PROT_WRITE) = 0 faccessat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x75\x72\x61\x6e\x64\x6f\x6d", R_OK) = 0 getrandom("\x77\x44\xb0\x3d\x4b\x6c\x7b\x6e\x17\xde\x1b\xc7\x05\xa3\xa5\xca\x32\x8a\xcf\xaf\x68\x57\xf0\x47\x3a\xb5\xf6\x58\x97\x9d\xc5\x2a\xae\xa5\xaa\xd4\x60\x64\x7f\xa6", 40, GRND_NONBLOCK) = 40 mmap(NULL, 1104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dff01000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dff01000, 1104, "\x61\x72\x63\x34\x72\x61\x6e\x64\x6f\x6d\x20\x64\x61\x74\x61") = 0 mprotect(0x76dbf2b000, 4096, PROT_READ) = 0 newfstatat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f", {st_mode=S_IFDIR|0711, st_size=7020, ...}, 0) = 0 faccessat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x5f\x69\x6e\x66\x6f", R_OK) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x79\x5f\x69\x6e\x66\x6f", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=81240, ...}) = 0 mmap(NULL, 81240, PROT_READ, MAP_SHARED, 3, 0) = 0x76debf8000 close(3) = 0 mmap(NULL, 13880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded6a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76ded6a000, 13880, "\x53\x79\x73\x74\x65\x6d\x20\x70\x72\x6f\x70\x65\x72\x74\x79\x20\x63\x6f\x6e\x74\x65\x78\x74\x20\x6e\x6f\x64\x65\x73") = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x73\x65\x72\x69\x61\x6c", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76debd8000 close(3) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x64\x65\x62\x75\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76debb8000 close(3) = 0 rt_sigaction(SIGRT_7, {sa_handler=0x76dbeb7240, sa_mask=[], sa_flags=SA_RESTART}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 getrandom("\x4e\x50\x6e\x77", 4, GRND_NONBLOCK) = 4 mmap(NULL, 8858370048, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x74c9057000 getrandom("\xcd\x0a\xc5\x58", 4, GRND_NONBLOCK) = 4 sched_getaffinity(0, 128, [0, 1, 2, 3, 4, 6]) = 8 mmap(0x74f9058000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x74f9058000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74f9058000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x74c905b000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x74c905b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74c905b000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 futex(0x76dbf40800, FUTEX_WAKE_PRIVATE, 2147483647) = 0 mprotect(0x76dbf2b000, 4096, PROT_READ|PROT_WRITE) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x6c\x69\x62\x63\x5f\x64\x65\x62\x75\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76deb98000 close(3) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x68\x65\x61\x70\x70\x72\x6f\x66\x64\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76deb78000 close(3) = 0 mprotect(0x76dbf2b000, 4096, PROT_READ) = 0 rt_sigaction(SIGRT_4, {sa_handler=0x76dbea0f50, sa_mask=[], sa_flags=SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_6, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=SA_RESTART}, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, 8) = 0 getuid() = 0 prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) openat(AT_FDCWD, "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6e\x65\x74\x64\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 3 readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x33", "\x2f\x73\x79\x73\x74\x65\x6d\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x6e\x65\x74\x64\x5f\x63\x6c\x69\x65\x6e\x74\x2e\x73\x6f", 4096) = 31 fstat(3, {st_mode=S_IFREG|0644, st_size=32592, ...}) = 0 fstatfs(3, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=339256, f_bfree=121976, f_bavail=117880, f_files=86240, f_ffree=82384, f_fsid={val=[3970594789, 1343899743]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_NODEV|ST_RELATIME}) = 0 pread64(3, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x10\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x0a\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 mmap(NULL, 688, PROT_READ, MAP_PRIVATE, 3, 0) = 0x76dff00000 mmap(NULL, 6240, PROT_READ, MAP_PRIVATE, 3, 0x7000) = 0x76ded79000 mmap(NULL, 560, PROT_READ, MAP_PRIVATE, 3, 0x7000) = 0x76dfeff000 mmap(NULL, 7480, PROT_READ, MAP_PRIVATE, 3, 0) = 0x76ded75000 mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deab4000 munmap(0x76deab4000, 114688) = 0 munmap(0x76dead9000, 368640) = 0 mmap(0x76dead0000, 9212, PROT_READ, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x76dead0000 mmap(0x76dead3000, 15904, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0x3000) = 0x76dead3000 mmap(0x76dead7000, 936, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0x76dead7000 mmap(0x76dead8000, 937, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 0x76dead8000 mprotect(0x76dead7000, 4096, PROT_READ) = 0 mmap(NULL, 2147483648, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7449057000 mprotect(0x76de9d9000, 4096, PROT_READ) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744930d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744930d000) = 0x744930d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded7c000 mprotect(0x744940d000, 4096, PROT_READ) = 0 mprotect(0x76ded7c000, 4096, PROT_READ) = 0 mremap(0x76ded7c000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x744940d000) = 0x744940d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7449057000, 2147483648, "\x63\x66\x69\x20\x73\x68\x61\x64\x6f\x77") = 0 close(3) = 0 munmap(0x76ded75000, 7480) = 0 munmap(0x76dfeff000, 560) = 0 munmap(0x76ded79000, 6240) = 0 munmap(0x76dff00000, 688) = 0 munmap(0x76dec0c000, 409600) = 0 prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x76\x65\x6e\x64\x6f\x72\x5f\x73\x6f\x63\x6b\x65\x74\x5f\x68\x6f\x6f\x6b\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76dec50000 close(3) = 0 prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) futex(0x76dbf26054, FUTEX_WAKE_PRIVATE, 2147483647) = 0 mmap(0x74d9060000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x74d9060000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74d9060000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dff00000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76dff00000, 4096, "\x61\x74\x65\x78\x69\x74\x20\x68\x61\x6e\x64\x6c\x65\x72\x73") = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mmap(0x7529062000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7529062000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7529062000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mmap(0x7539060000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7539060000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7539060000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x751905d000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x751905d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x751905d000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x759905f000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x759905f000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x759905f000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x74e905b000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x74e905b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74e905b000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x757905d000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x757905d000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x757905d000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x754905c000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x754905c000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x754905c000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x750905a000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x750905a000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x750905a000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 socket(AF_QIPCRTR, SOCK_DGRAM|SOCK_CLOEXEC, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol) openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x71\x6d\x69\x5f\x66\x77\x2e\x63\x6f\x6e\x66", O_RDONLY) = -1 ENOENT (No such file or directory) mmap(0x75a905b000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x75a905b000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75a905b000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mmap(0x75c9058000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x75c9058000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75c9058000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x73\x65\x6e\x73\x6f\x72\x73\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 3, 0) = 0x76dec30000 close(3) = 0 mmap(0x756905e000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x756905e000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x756905e000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 mprotect(0x76deda7000, 409600, PROT_READ) = 0 mprotect(0x76dee8e000, 409600, PROT_READ) = 0 mprotect(0x76decd4000, 409600, PROT_READ) = 0 mprotect(0x76dec70000, 409600, PROT_READ) = 0 mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 mprotect(0x76dff00000, 4096, PROT_READ) = 0 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x68\x77\x62\x69\x6e\x64\x65\x72", O_RDWR|O_CLOEXEC) = 3 ioctl(3, BINDER_VERSION, 0x7fd1914ee4) = 0 ioctl(3, BINDER_SET_MAX_THREADS, 0x7fd1914ed8) = 0 ioctl(3, _IOC(_IOC_WRITE, 0x62, 0x10, 0x4), 0x7fd1914ed4) = -1 EINVAL (Invalid argument) openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x6c\x6f\x67\x5f\x74\x61\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 4 fstat(4, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 mmap(NULL, 131072, PROT_READ, MAP_SHARED, 4, 0) = 0x76dec10000 close(4) = 0 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 4 connect(4, {sa_family=AF_UNIX, sun_path="\x2f\x64\x65\x76\x2f\x73\x6f\x63\x6b\x65\x74\x2f\x6c\x6f\x67\x64\x77"}, 110) = 0 getuid() = 0 writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x15\x26\x2c\x0a", iov_len=11}, {iov_base="\x03", iov_len=1}, {iov_base="\x68\x77\x2d\x50\x72\x6f\x63\x65\x73\x73\x53\x74\x61\x74\x65\x00", iov_len=16}, {iov_base="\x42\x69\x6e\x64\x65\x72\x20\x69\x6f\x63\x74\x6c\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x6f\x6e\x65\x77\x61\x79\x20\x73\x70\x61\x6d\x20\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x00", iov_len=70}], 4) = 98 openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x70\x6d\x73\x67\x30", O_WRONLY|O_CLOEXEC) = 5 getuid() = 0 writev(5, [{iov_base="\x6c\x69\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x15\x26\x2c\x0a", iov_len=11}, {iov_base="\x03", iov_len=1}, {iov_base="\x68\x77\x2d\x50\x72\x6f\x63\x65\x73\x73\x53\x74\x61\x74\x65\x00", iov_len=16}, {iov_base="\x42\x69\x6e\x64\x65\x72\x20\x69\x6f\x63\x74\x6c\x20\x74\x6f\x20\x65\x6e\x61\x62\x6c\x65\x20\x6f\x6e\x65\x77\x61\x79\x20\x73\x70\x61\x6d\x20\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x49\x6e\x76\x61\x6c\x69\x64\x20\x61\x72\x67\x75\x6d\x65\x6e\x74\x00", iov_len=70}], 5) = 105 mmap(NULL, 1040384, PROT_READ, MAP_PRIVATE|MAP_NORESERVE, 3, 0) = 0x76d9302000 ioctl(3, BINDER_SET_MAX_THREADS, 0x7fd1914fb0) = 0 getuid() = 0 writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x3e\x99\x5c\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x79\x73\x74\x65\x6d\x5f\x63\x6f\x6e\x66\x69\x67\x3a\x37\x32\x2c\x20\x6c\x6f\x67\x5f\x6c\x65\x76\x65\x6c\x3a\x20\x32\x00", iov_len=35}], 4) = 59 getuid() = 0 writev(5, [{iov_base="\x6c\x42\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x3e\x99\x5c\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x79\x73\x74\x65\x6d\x5f\x63\x6f\x6e\x66\x69\x67\x3a\x37\x32\x2c\x20\x6c\x6f\x67\x5f\x6c\x65\x76\x65\x6c\x3a\x20\x32\x00", iov_len=35}], 5) = 66 getuid() = 0 writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xc3\xbd\x68\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x74\x5f\x74\x68\x72\x65\x61\x64\x5f\x65\x6e\x61\x62\x6c\x65\x64\x3a\x39\x31\x2c\x20\x73\x73\x63\x5f\x65\x6e\x61\x62\x6c\x65\x5f\x72\x74\x5f\x74\x61\x73\x6b\x20\x3a\x20\x74\x72\x75\x65\x00", iov_len=51}], 4) = 75 getuid() = 0 writev(5, [{iov_base="\x6c\x52\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xc3\xbd\x68\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x74\x5f\x74\x68\x72\x65\x61\x64\x5f\x65\x6e\x61\x62\x6c\x65\x64\x3a\x39\x31\x2c\x20\x73\x73\x63\x5f\x65\x6e\x61\x62\x6c\x65\x5f\x72\x74\x5f\x74\x61\x73\x6b\x20\x3a\x20\x74\x72\x75\x65\x00", iov_len=51}], 5) = 82 getuid() = 0 writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xd9\xa1\x73\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x3a\x31\x35\x36\x2c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x00", iov_len=42}], 4) = 66 getuid() = 0 writev(5, [{iov_base="\x6c\x49\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xd9\xa1\x73\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x3a\x31\x35\x36\x2c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x00", iov_len=42}], 5) = 73 mmap(0x7619061000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7619061000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7619061000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 openat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x73\x65\x74\x74\x69\x6e\x67\x73", O_RDONLY) = 6 mmap(0x7609066000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7609066000 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7609066000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 fstat(6, {st_mode=S_IFREG|0664, st_size=0, ...}) = 0 read(6, "", 4096) = 0 getuid() = 0 writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x4e\xac\x94\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x6e\x73\x5f\x73\x65\x74\x74\x69\x6e\x67\x73\x3a\x32\x30\x32\x2c\x20\x73\x65\x74\x74\x69\x6e\x67\x73\x20\x30\x00", iov_len=33}], 4) = 57 getuid() = 0 writev(5, [{iov_base="\x6c\x40\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x4e\xac\x94\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x6e\x73\x5f\x73\x65\x74\x74\x69\x6e\x67\x73\x3a\x32\x30\x32\x2c\x20\x73\x65\x74\x74\x69\x6e\x67\x73\x20\x30\x00", iov_len=33}], 5) = 64 lseek(6, 0, SEEK_CUR) = 0 lseek(6, 0, SEEK_SET) = 0 close(6) = 0 mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7448f5a000 mprotect(0x7448f5b000, 1028096, PROT_READ|PROT_WRITE) = 0 rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 clone(strace: Process 4588 attached child_stack=0x7449052cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7449052d10, tls=0x7449053010, child_tidptr=0x7449052d10) = 4588 [pid 4588] futex(0x7449052d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7449052d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4588] <... futex resumed> ) = 0 [pid 4587] getuid( [pid 4588] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7448f5b000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x38\x38" [pid 4587] <... getuid resumed> ) = 0 [pid 4588] <... prctl resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x7e\xf8\xbf\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4588] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 74 [pid 4588] <... mmap resumed> ) = 0x76deb6f000 [pid 4587] getuid( [pid 4588] mprotect(0x76deb6f000, 4096, PROT_NONE [pid 4587] <... getuid resumed> ) = 0 [pid 4588] <... mprotect resumed> ) = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x7e\xf8\xbf\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4588] sigaltstack({ss_sp=0x76deb70000, ss_flags=0, ss_size=32768}, [pid 4587] <... writev resumed> ) = 81 [pid 4588] <... sigaltstack resumed> NULL) = 0 [pid 4588] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb70000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0 [pid 4588] <... prctl resumed> ) = 0 [pid 4588] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... socket resumed> ) = 6 [pid 4588] <... mmap resumed> ) = 0x7447f5a000 [pid 4587] ioctl(6, _IOC(_IOC_READ, 0xc3, 0x4, 0x4) [pid 4588] mprotect(0x7448b64000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... ioctl resumed> , 0) = 0 [pid 4588] <... mprotect resumed> ) = 0 [pid 4587] pipe2( [pid 4588] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... pipe2 resumed> [7, 8], 0) = 0 [pid 4588] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7447e5d000 [pid 4588] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] mprotect(0x7447e5e000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4589 attached child_stack=0x7447f55cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7447f55d10, tls=0x7447f56010, child_tidptr=0x7447f55d10) = 4589 [pid 4589] futex(0x7447f55d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7447f55d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4589] <... futex resumed> ) = 0 [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0 [pid 4589] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7447e5e000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x38\x39" [pid 4587] <... socket resumed> ) = 9 [pid 4589] <... prctl resumed> ) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4589] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... ioctl resumed> , 0x74e905b5e0) = 0 [pid 4589] <... mmap resumed> ) = 0x76deb66000 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4589] mprotect(0x76deb66000, 4096, PROT_NONE [pid 4587] <... clock_gettime resumed> {tv_sec=244, tv_nsec=991355340}) = 0 [pid 4589] <... mprotect resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4589] sigaltstack({ss_sp=0x76deb67000, ss_flags=0, ss_size=32768}, [pid 4587] <... clock_gettime resumed> {tv_sec=244, tv_nsec=991533778}) = 0 [pid 4589] <... sigaltstack resumed> NULL) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4589] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb67000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... ioctl resumed> , 0x7539060d90) = 0 [pid 4589] <... prctl resumed> ) = 0 [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0 [pid 4589] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... socket resumed> ) = 10 [pid 4589] <... mmap resumed> ) = 0x7446e5d000 [pid 4587] pipe2( [pid 4589] mprotect(0x744709a000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... pipe2 resumed> [11, 12], 0) = 0 [pid 4589] <... mprotect resumed> ) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4589] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... mmap resumed> ) = 0x7446d60000 [pid 4589] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] mprotect(0x7446d61000, 1028096, PROT_READ|PROT_WRITE [pid 4589] ppoll([{fd=7, events=POLLIN}, {fd=6, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... mprotect resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4590 attached child_stack=0x7446e58cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7446e58d10, tls=0x7446e59010, child_tidptr=0x7446e58d10) = 4590 [pid 4590] futex(0x7446e58d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7446e58d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4590] <... futex resumed> ) = 0 [pid 4587] fcntl(10, F_GETFL [pid 4590] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7446d61000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x30") = 0 [pid 4590] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb5d000 [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4590] mprotect(0x76deb5d000, 4096, PROT_NONE) = 0 [pid 4590] sigaltstack({ss_sp=0x76deb5e000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4590] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb5e000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] fcntl(10, F_SETFL, O_RDWR|O_NONBLOCK [pid 4590] <... prctl resumed> ) = 0 [pid 4587] <... fcntl resumed> ) = 0 [pid 4590] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] write(12, "\x61", 1 [pid 4590] <... mmap resumed> ) = 0x7445d60000 [pid 4590] mprotect(0x74466e2000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4587] <... write resumed> ) = 1 [pid 4590] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4590] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] <... ioctl resumed> , 0x74e905b5e0) = 0 [pid 4590] ppoll([{fd=11, events=POLLIN}, {fd=10, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4590] <... ppoll resumed> ) = 1 ([{fd=11, revents=POLLIN}]) [pid 4587] <... ioctl resumed> , 0x74f905b4d0) = 0 [pid 4590] read(11, [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [pid 4590] <... read resumed> "\x61", 1) = 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4590] ppoll([{fd=11, events=POLLIN}, {fd=10, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7445c63000 [pid 4587] mprotect(0x7445c64000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4591 attached child_stack=0x7445d5bcf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7445d5bd10, tls=0x7445d5c010, child_tidptr=0x7445d5bd10) = 4591 [pid 4591] futex(0x7445d5bd9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7445d5bd9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4591] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922374272, sival_ptr=0x75c905af80}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4591}, [0]) = 0 [pid 4591] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7445c64000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x31" [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x39\x31\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4591] <... prctl resumed> ) = 0 [pid 4591] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb54000 [pid 4587] <... openat resumed> ) = 13 [pid 4591] mprotect(0x76deb54000, 4096, PROT_NONE [pid 4587] write(13, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x30", 13 [pid 4591] <... mprotect resumed> ) = 0 [pid 4587] <... write resumed> ) = 13 [pid 4591] sigaltstack({ss_sp=0x76deb55000, ss_flags=0, ss_size=32768}, [pid 4587] close(13 [pid 4591] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... close resumed> ) = 0 [pid 4591] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb55000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x38\x38\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4591] <... prctl resumed> ) = 0 [pid 4591] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... openat resumed> ) = 13 [pid 4591] <... mmap resumed> ) = 0x7444c63000 [pid 4587] write(13, "\x73\x65\x65\x5f\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70", 15 [pid 4591] mprotect(0x74455bc000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... write resumed> ) = 15 [pid 4591] <... mprotect resumed> ) = 0 [pid 4587] close(13 [pid 4591] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... close resumed> ) = 0 [pid 4591] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4591] rt_sigtimedwait([RTMIN], [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x5e\x84\x52\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x75\x70\x3a\x32\x37\x34\x2c\x20\x52\x65\x6d\x6f\x74\x65\x20\x53\x65\x6e\x73\x6f\x72\x53\x65\x72\x76\x69\x63\x65\x20\x55\x70\x54\x69\x6d\x65\x20\x66\x72\x6f\x6d\x20\x68\x61\x6c\x5f\x73\x65\x72\x76\x69\x63\x65\x20\x73\x74\x61\x72\x74\x20\x3d\x20\x30\x2e\x30\x31\x31\x32\x36\x31\x73\x00", iov_len=83}], 4) = 107 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x72\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x5e\x84\x52\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x75\x70\x3a\x32\x37\x34\x2c\x20\x52\x65\x6d\x6f\x74\x65\x20\x53\x65\x6e\x73\x6f\x72\x53\x65\x72\x76\x69\x63\x65\x20\x55\x70\x54\x69\x6d\x65\x20\x66\x72\x6f\x6d\x20\x68\x61\x6c\x5f\x73\x65\x72\x76\x69\x63\x65\x20\x73\x74\x61\x72\x74\x20\x3d\x20\x30\x2e\x30\x31\x31\x32\x36\x31\x73\x00", iov_len=83}], 5) = 114 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=244, tv_nsec=998714768}) = 0 [pid 4587] rt_sigprocmask(0xd1914380 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914390 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914370 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(10, "\x00\x01\x00\x20\x00\x3a\x00\x01\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x10\x12\x0e\x0a\x08\x72\x65\x67\x69\x73\x74\x72\x79\x10\x01\x18\x00\x10\x01\x00\x01", 65, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 65 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=56799}, FUTEX_BITSET_MATCH_ANY [pid 4590] <... ppoll resumed> ) = 1 ([{fd=10, revents=POLLIN}]) [pid 4590] mmap(0x76c9060000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76c9060000 [pid 4590] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76c9060000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4590] recvfrom(10, "\x02\x01\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x11\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4590] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4590] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4590] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4590] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4590] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4590] ppoll([{fd=11, events=POLLIN}, {fd=10, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4590] <... ppoll resumed> ) = 1 ([{fd=10, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4590] recvfrom(10, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=5953258}) = 0 [pid 4590] <... recvfrom resumed> "\x04\x01\x00\x22\x00\x54\x00\x01\x08\x00\x11\x00\x00\x00\x00\x00\x00\x00\x02\x46\x00\x44\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2e\x0d\x00\x03\x00\x00\x11\x6f\x5a\xa9\x27\x01\x00\x00\x00\x1a\x1e\x0a\x08\x72\x65\x67\x69\x73\x74\x72\x79\x12\x12\x09\x75\x22\x1e\x70\xb4\x41\x25\x5e\x11\x59\x27\x7f\x00\xa7\x54\x27\xe1", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 91 [pid 4587] timer_settime(0, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4590] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4590] <... clock_gettime resumed> {tv_sec=245, tv_nsec=6155967}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4590] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4588] <... futex resumed> ) = 0 [pid 4587] futex(0x76da774568, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=246, tv_nsec=6411435}, FUTEX_BITSET_MATCH_ANY [pid 4590] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4588] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 4, NULL, FUTEX_BITSET_MATCH_ANY [pid 4590] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4588] <... futex resumed> ) = 0 [pid 4590] ppoll([{fd=11, events=POLLIN}, {fd=10, events=POLLIN}], 2, NULL, NULL, 0 [pid 4588] getuid() = 0 [pid 4588] writev(4, [{iov_base="\x00\xec\x11\xd6\x61\xb8\x62\x6e\xcd\xdb\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 4) = 74 [pid 4588] getuid() = 0 [pid 4588] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xec\x11\xd6\x61\xb8\x62\x6e\xcd\xdb\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 5) = 81 [pid 4588] prctl(PR_SET_NAME, "\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65"...) = 0 [pid 4588] futex(0x76da774568, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4588] <... futex resumed> ) = 1 [pid 4587] futex(0x76da774540, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4588] futex(0x76da774540, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4588] <... futex resumed> ) = 1 [pid 4587] futex(0x76da774540, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4588] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 8, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x42\x79\xf9\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x75\x70\x3a\x32\x39\x34\x2c\x20\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x73\x65\x6e\x73\x6f\x72\x20\x61\x76\x61\x69\x6c\x61\x62\x69\x6c\x69\x74\x79\x20\x74\x69\x6d\x65\x20\x27\x30\x2e\x30\x31\x30\x32\x33\x32\x73\x65\x63\x27\x20\x66\x72\x6f\x6d\x20\x73\x65\x72\x76\x69\x63\x65\x75\x70\x28\x6e\x6f\x20\x6f\x66\x20\x72\x65\x70\x65\x61\x74\x73\x3a\x27\x30\x27\x29\x20\x00", iov_len=103}], 4) = 127 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x86\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x42\x79\xf9\x0b", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x73\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x75\x70\x3a\x32\x39\x34\x2c\x20\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x73\x65\x6e\x73\x6f\x72\x20\x61\x76\x61\x69\x6c\x61\x62\x69\x6c\x69\x74\x79\x20\x74\x69\x6d\x65\x20\x27\x30\x2e\x30\x31\x30\x32\x33\x32\x73\x65\x63\x27\x20\x66\x72\x6f\x6d\x20\x73\x65\x72\x76\x69\x63\x65\x75\x70\x28\x6e\x6f\x20\x6f\x66\x20\x72\x65\x70\x65\x61\x74\x73\x3a\x27\x30\x27\x29\x20\x00", iov_len=103}], 5) = 134 [pid 4587] timer_delete(0) = 0 [pid 4587] tgkill(4587, 4591, SIGRTMIN) = 0 [pid 4591] <... rt_sigtimedwait resumed> {si_signo=SIGRTMIN, si_code=SI_TKILL, si_pid=4587, si_uid=0}, NULL, 8) = 32 (SIGRTMIN) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4591] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=10079821}) = 0 [pid 4591] <... sigaltstack resumed> NULL) = 0 [pid 4587] write(12, "\x64", 1 [pid 4591] munmap(0x76deb54000, 36864 [pid 4587] <... write resumed> ) = 1 [pid 4591] <... munmap resumed> ) = 0 [pid 4587] futex(0x7fd1914acc, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4591] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4590] <... ppoll resumed> ) = 1 ([{fd=11, revents=POLLIN}]) [pid 4591] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4590] read(11, [pid 4591] munmap(0x7444c63000, 16777216 [pid 4590] <... read resumed> "\x64", 1) = 1 [pid 4591] <... munmap resumed> ) = 0 [pid 4590] close(11 [pid 4591] set_tid_address(0 [pid 4590] <... close resumed> ) = 0 [pid 4591] <... set_tid_address resumed> ) = 4591 [pid 4590] close(12 [pid 4591] munmap(0x7445c63000, 1036288) = 0 [pid 4590] <... close resumed> ) = 0 [pid 4591] exit(0 [pid 4590] close(10 [pid 4591] <... exit resumed>) = ? [pid 4590] <... close resumed> ) = 0 [pid 4591] +++ exited with 0 +++ [pid 4590] futex(0x7fd1914acc, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4590] <... futex resumed> ) = 1 [pid 4587] futex(0x7fd1914b08, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4590] futex(0x7fd1914b08, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4590] <... futex resumed> ) = 0 [pid 4587] futex(0x7fd1914b08, FUTEX_WAKE_PRIVATE, 1 [pid 4590] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] <... futex resumed> ) = 0 [pid 4590] <... sigaltstack resumed> NULL) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4590] munmap(0x76deb5d000, 36864 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=11741540}) = 0 [pid 4590] <... munmap resumed> ) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4590] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4587] <... futex resumed> ) = 1 [pid 4590] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x7449052d10, FUTEX_WAIT, 4588, NULL [pid 4590] munmap(0x7445d60000, 16777216 [pid 4588] <... futex resumed> ) = 0 [pid 4590] <... munmap resumed> ) = 0 [pid 4588] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4590] set_tid_address(0) = 4590 [pid 4590] munmap(0x7446d60000, 1036288 [pid 4588] <... sigaltstack resumed> NULL) = 0 [pid 4590] <... munmap resumed> ) = 0 [pid 4588] munmap(0x76deb6f000, 36864 [pid 4590] exit(0 [pid 4588] <... munmap resumed> ) = 0 [pid 4590] <... exit resumed>) = ? [pid 4588] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4590] +++ exited with 0 +++ [pid 4588] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4588] munmap(0x7447f5a000, 16777216) = 0 [pid 4588] exit(0) = ? [pid 4587] <... futex resumed> ) = 0 [pid 4588] +++ exited with 0 +++ [pid 4587] munmap(0x7448f5a000, 1036288) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x47\x13\x42\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x63\x68\x65\x63\x6b\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x31\x35\x34\x2c\x20\x63\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x3a\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x63\x6f\x6e\x66\x69\x67\x00", iov_len=86}], 4) = 110 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x75\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x47\x13\x42\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x63\x68\x65\x63\x6b\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x31\x35\x34\x2c\x20\x63\x6f\x6e\x66\x69\x67\x20\x66\x69\x6c\x65\x20\x69\x73\x20\x3a\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x63\x6f\x6e\x66\x69\x67\x00", iov_len=86}], 5) = 117 [pid 4587] openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x63\x6f\x6e\x66\x69\x67", O_RDONLY) = 10 [pid 4587] fstat(10, {st_mode=S_IFREG|0644, st_size=553, ...}) = 0 [pid 4587] read(10, "\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x0a\x66\x69\x6c\x65\x3d\x68\x77\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x68\x77\x5f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x0a\x66\x69\x6c\x65\x3d\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x73\x75\x62\x74\x79\x70\x65\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x73\x75\x62\x74\x79\x70\x65\x0a\x66\x69\x6c\x65\x3d\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x73\x75\x62\x74\x79\x70\x65\x5f\x69\x64\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x73\x75\x62\x74\x79\x70\x65\x5f\x69\x64\x0a\x66\x69\x6c\x65\x3d\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x76\x65\x72\x73\x69\x6f\x6e\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x70\x6c\x61\x74\x66\x6f\x72\x6d\x5f\x76\x65\x72\x73\x69\x6f\x6e\x0a\x66\x69\x6c\x65\x3d\x73\x6f\x63\x5f\x69\x64\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x73\x6f\x63\x5f\x69\x64\x0a\x66\x69\x6c\x65\x3d\x72\x65\x76\x69\x73\x69\x6f\x6e\x3d\x2f\x73\x79\x73\x2f\x64\x65\x76\x69\x63\x65\x73\x2f\x73\x6f\x63\x30\x2f\x72\x65\x76\x69\x73\x69\x6f\x6e\x0a\x66\x69\x6c\x65\x3d\x6f\x75\x74\x70\x75\x74\x3d\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x0a\x70\x72\x6f\x70\x65\x72\x74\x79\x3d\x70\x65\x72\x73\x69\x73\x74\x2e\x76\x65\x6e\x64\x6f\x72\x2e\x73\x65\x6e\x73\x6f\x72\x73\x2e\x65\x6e\x61\x62\x6c\x65\x2e\x70\x72\x6f\x70\x65\x72\x74\x79\x3d\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x66\x69\x6c\x65\x31\x0a\x70\x72\x6f\x70\x65\x72\x74\x79\x3d\x70\x65\x72\x73\x69\x73\x74\x2e\x76\x65\x6e\x64\x6f\x72\x2e\x73\x65\x6e\x73\x6f\x72\x73\x2e\x65\x6e\x61\x62\x6c\x65\x2e\x70\x72\x6f\x70\x65\x72\x74\x79\x31\x3d\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x66\x69\x6c\x65\x32\x0a", 4096) = 553 [pid 4587] read(10, "", 4096) = 0 [pid 4587] newfstatat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x76\x65\x72\x73\x69\x6f\x6e", {st_mode=S_IFREG|0775, st_size=10, ...}, 0) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x76\x65\x72\x73\x69\x6f\x6e", O_RDONLY) = 11 [pid 4587] fstat(11, {st_mode=S_IFREG|0775, st_size=10, ...}) = 0 [pid 4587] read(11, "\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x0a", 4096) = 10 [pid 4587] read(11, "", 4096) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x7e\x25\x66\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x63\x68\x65\x63\x6b\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x31\x37\x33\x2c\x20\x27\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x63\x6f\x6e\x66\x69\x67\x27\x28\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x29\x20\x56\x73\x20\x27\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x76\x65\x72\x73\x69\x6f\x6e\x27\x28\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x29\x00", iov_len=152}], 4) = 176 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\xb7\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x7e\x25\x66\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x63\x68\x65\x63\x6b\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x31\x37\x33\x2c\x20\x27\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x65\x74\x63\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x63\x6f\x6e\x66\x69\x67\x27\x28\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x29\x20\x56\x73\x20\x27\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x72\x65\x67\x69\x73\x74\x72\x79\x2f\x73\x6e\x73\x5f\x72\x65\x67\x5f\x76\x65\x72\x73\x69\x6f\x6e\x27\x28\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31\x29\x00", iov_len=152}], 5) = 183 [pid 4587] lseek(11, 0, SEEK_CUR) = 10 [pid 4587] lseek(11, 10, SEEK_SET) = 10 [pid 4587] close(11) = 0 [pid 4587] lseek(10, 0, SEEK_CUR) = 553 [pid 4587] lseek(10, 10, SEEK_SET) = 10 [pid 4587] close(10) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xb6\x6b\x81\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x32\x33\x38\x2c\x20\x72\x65\x67\x69\x73\x74\x72\x79\x20\x76\x65\x72\x73\x69\x6f\x6e\x28\x31\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x63\x68\x61\x6e\x67\x65\x64\x00", iov_len=71}], 4) = 95 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x66\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\xb6\x6b\x81\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x72\x65\x67\x69\x73\x74\x72\x79\x5f\x76\x65\x72\x73\x69\x6f\x6e\x5f\x63\x68\x61\x6e\x67\x65\x3a\x32\x33\x38\x2c\x20\x72\x65\x67\x69\x73\x74\x72\x79\x20\x76\x65\x72\x73\x69\x6f\x6e\x28\x31\x29\x20\x69\x73\x20\x6e\x6f\x74\x20\x63\x68\x61\x6e\x67\x65\x64\x00", iov_len=71}], 5) = 102 [pid 4587] newfstatat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x6c\x69\x73\x74\x2e\x74\x78\x74", {st_mode=S_IFREG|0600, st_size=175, ...}, 0) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x6c\x69\x73\x74\x2e\x74\x78\x74", O_RDONLY) = 10 [pid 4587] fstat(10, {st_mode=S_IFREG|0600, st_size=175, ...}) = 0 [pid 4587] read(10, "\x70\x72\x6f\x78\x69\x6d\x69\x74\x79\x0a\x68\x61\x6c\x6c\x0a\x61\x6d\x62\x69\x65\x6e\x74\x5f\x6c\x69\x67\x68\x74\x0a\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x0a\x70\x72\x65\x73\x73\x75\x72\x65\x0a\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x0a\x6d\x61\x67\x0a\x6d\x61\x67\x5f\x63\x61\x6c\x0a\x61\x63\x63\x65\x6c\x0a\x67\x79\x72\x6f\x0a\x64\x65\x76\x69\x63\x65\x5f\x6f\x72\x69\x65\x6e\x74\x0a\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x0a\x70\x73\x6d\x64\x0a\x74\x69\x6c\x74\x0a\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x0a\x67\x79\x72\x6f\x5f\x63\x61\x6c\x0a\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x0a\x67\x72\x61\x76\x69\x74\x79\x0a\x67\x61\x6d\x65\x5f\x72\x76\x0a\x72\x6f\x74\x76\x0a", 4096) = 175 [pid 4587] read(10, "", 4096) = 0 [pid 4587] mmap(0x75b9058000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x75b9058000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75b9058000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] read(10, "", 4096) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x6d\x6e\x74\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x70\x65\x72\x73\x69\x73\x74\x2f\x73\x65\x6e\x73\x6f\x72\x73\x2f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x6c\x69\x73\x74\x2e\x74\x78\x74", O_WRONLY|O_CREAT|O_APPEND, 0666) = 11 [pid 4587] lseek(11, 0, SEEK_END) = 175 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7448f5a000 [pid 4587] mprotect(0x7448f5b000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4592 attached child_stack=0x7449052cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7449052d10, tls=0x7449053010, child_tidptr=0x7449052d10) = 4592 [pid 4592] futex(0x7449052d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7449052d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] getuid( [pid 4592] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7448f5b000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x32" [pid 4587] <... getuid resumed> ) = 0 [pid 4592] <... prctl resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x9e\x52\xc0\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4592] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 74 [pid 4592] <... mmap resumed> ) = 0x76deb6f000 [pid 4587] getuid( [pid 4592] mprotect(0x76deb6f000, 4096, PROT_NONE [pid 4587] <... getuid resumed> ) = 0 [pid 4592] <... mprotect resumed> ) = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x9e\x52\xc0\x0c", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4592] sigaltstack({ss_sp=0x76deb70000, ss_flags=0, ss_size=32768}, [pid 4587] <... writev resumed> ) = 81 [pid 4592] <... sigaltstack resumed> NULL) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4592] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb70000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... ioctl resumed> , 0x74e905b130) = 0 [pid 4592] <... prctl resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=22627999}) = 0 [pid 4592] <... mmap resumed> ) = 0x7447f5a000 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] mprotect(0x744811e000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=22770447}) = 0 [pid 4592] <... mprotect resumed> ) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4592] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... ioctl resumed> , 0x7539060d90) = 0 [pid 4592] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... socket resumed> ) = 12 [pid 4587] pipe2([13, 14], 0) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7446d60000 [pid 4587] mprotect(0x7446d61000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4593 attached child_stack=0x7446e58cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7446e58d10, tls=0x7446e59010, child_tidptr=0x7446e58d10) = 4593 [pid 4593] futex(0x7446e58d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7446e58d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] <... futex resumed> ) = 0 [pid 4587] fcntl(12, F_GETFL [pid 4593] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7446d61000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x33" [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4593] <... prctl resumed> ) = 0 [pid 4587] fcntl(12, F_SETFL, O_RDWR|O_NONBLOCK [pid 4593] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... fcntl resumed> ) = 0 [pid 4593] <... mmap resumed> ) = 0x76deb5d000 [pid 4587] write(14, "\x61", 1 [pid 4593] mprotect(0x76deb5d000, 4096, PROT_NONE [pid 4587] <... write resumed> ) = 1 [pid 4593] <... mprotect resumed> ) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4593] sigaltstack({ss_sp=0x76deb5e000, ss_flags=0, ss_size=32768}, [pid 4587] <... ioctl resumed> , 0x74e905b130) = 0 [pid 4593] <... sigaltstack resumed> NULL) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4593] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb5e000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... ioctl resumed> , 0x74f905c050) = 0 [pid 4593] <... prctl resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [pid 4593] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... mmap resumed> ) = 0x7445d60000 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4593] mprotect(0x744646c000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... mmap resumed> ) = 0x7445c63000 [pid 4593] <... mprotect resumed> ) = 0 [pid 4587] mprotect(0x7445c64000, 1028096, PROT_READ|PROT_WRITE [pid 4593] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... mprotect resumed> ) = 0 [pid 4593] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=13, revents=POLLIN}]) [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4593] read(13, [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4593] <... read resumed> "\x61", 1) = 1 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4594 attached child_stack=0x7445d5bcf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7445d5bd10, tls=0x7445d5c010, child_tidptr=0x7445d5bd10) = 4594 [pid 4594] futex(0x7445d5bd9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7445d5bd9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4594] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4594] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7445c64000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x34" [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4594] <... prctl resumed> ) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922374272, sival_ptr=0x75c905af80}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4594}, [pid 4594] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... timer_create resumed> [1]) = 0 [pid 4594] <... mmap resumed> ) = 0x76deb54000 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x39\x34\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4594] mprotect(0x76deb54000, 4096, PROT_NONE [pid 4587] <... openat resumed> ) = 15 [pid 4594] <... mprotect resumed> ) = 0 [pid 4587] write(15, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x31", 13 [pid 4594] sigaltstack({ss_sp=0x76deb55000, ss_flags=0, ss_size=32768}, [pid 4587] <... write resumed> ) = 13 [pid 4594] <... sigaltstack resumed> NULL) = 0 [pid 4587] close(15 [pid 4594] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb55000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... close resumed> ) = 0 [pid 4594] <... prctl resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x39\x32\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4594] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... openat resumed> ) = 15 [pid 4594] <... mmap resumed> ) = 0x7444c63000 [pid 4587] write(15, "\x73\x65\x65\x5f\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70", 15 [pid 4594] mprotect(0x7444f2a000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... write resumed> ) = 15 [pid 4594] <... mprotect resumed> ) = 0 [pid 4587] close(15 [pid 4594] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... close resumed> ) = 0 [pid 4594] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4594] rt_sigtimedwait([RTMIN], [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=27655187}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x01\x00\x20\x00\x44\x00\x01\x3d\x00\x3b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x1a\x12\x18\x0a\x12\x77\x72\x69\x73\x74\x5f\x74\x69\x6c\x74\x5f\x67\x65\x73\x74\x75\x72\x65\x10\x01\x18\x01\x10\x01\x00\x01", 75, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 75 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=28469823}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x01\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=33522167}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 4, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=33967584}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x02\x00\x20\x00\x3e\x00\x01\x37\x00\x35\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x14\x12\x12\x0a\x0c\x75\x6c\x74\x72\x61\x5f\x76\x69\x6f\x6c\x65\x74\x10\x01\x18\x01\x10\x01\x00\x01", 69, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... sendto resumed> ) = 69 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=34760292}, FUTEX_BITSET_MATCH_ANY [pid 4593] recvfrom(12, "\x04\x01\x00\x22\x00\x4a\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x3c\x00\x3a\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x24\x0d\x00\x03\x00\x00\x11\x1b\xcb\xb1\x27\x01\x00\x00\x00\x1a\x14\x0a\x12\x77\x72\x69\x73\x74\x5f\x74\x69\x6c\x74\x5f\x67\x65\x73\x74\x75\x72\x65", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 81 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=35282167}) = 0 [pid 4593] mmap(0x76c90a0000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x76c90a0000 [pid 4593] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76c90a0000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4592] getuid() = 0 [pid 4592] writev(4, [{iov_base="\x00\xf0\x11\xd6\x61\xb8\x62\x69\x48\x99\x0d", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 4) = 74 [pid 4592] getuid() = 0 [pid 4592] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xf0\x11\xd6\x61\xb8\x62\x69\x48\x99\x0d", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 5) = 81 [pid 4592] prctl(PR_SET_NAME, "\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65"...) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 8, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x02\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=43096491}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] recvfrom(12, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... recvfrom resumed> "\x04\x02\x00\x22\x00\x44\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x36\x00\x34\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1e\x0d\x00\x03\x00\x00\x11\x53\x68\xb4\x27\x01\x00\x00\x00\x1a\x0e\x0a\x0c\x75\x6c\x74\x72\x61\x5f\x76\x69\x6f\x6c\x65\x74", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 75 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=43695554}) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=43720293}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] sendto(12, "\x00\x03\x00\x20\x00\x3b\x00\x01\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x11\x12\x0f\x0a\x09\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x10\x01\x18\x01\x10\x01\x00\x01", 66, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 16, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 66 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=44352637}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x03\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=51883107}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... futex resumed> ) = 1 [pid 4593] recvfrom(12, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... recvfrom resumed> "\x04\x03\x00\x22\x00\x55\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x47\x00\x45\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2f\x0d\x00\x03\x00\x00\x11\x23\x05\xb7\x27\x01\x00\x00\x00\x1a\x1f\x0a\x09\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x12\x12\x09\x85\xd9\xe1\x72\xb2\x49\xf2\x57\x11\xf7\xda\x5b\x0c\x4f\xb0\x7e\xf6", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 92 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=52404877}) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=52564930}) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] sendto(12, "\x00\x04\x00\x20\x00\x35\x00\x01\x2e\x00\x2c\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0b\x12\x09\x0a\x03\x73\x61\x72\x10\x01\x18\x01\x10\x01\x00\x01", 60, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 60 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 24, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=53234617}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x04\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=60048680}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... futex resumed> ) = 1 [pid 4593] recvfrom(12, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... recvfrom resumed> "\x04\x04\x00\x22\x00\x3b\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x2d\x00\x2b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x15\x0d\x00\x03\x00\x00\x11\x90\x6a\xb9\x27\x01\x00\x00\x00\x1a\x05\x0a\x03\x73\x61\x72", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 66 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=61095295}) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=61303732}) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] sendto(12, "\x00\x05\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x72\x6f\x74\x76\x10\x01\x18\x01\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 61 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 32, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=62444514}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x05\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=70302431}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x05\x00\x22\x00\x50\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\xee\x07\xbc\x27\x01\x00\x00\x00\x1a\x1a\x0a\x04\x72\x6f\x74\x76\x12\x12\x09\x4c\xd4\x45\x7c\x66\x7d\x11\xe7\x11\x90\x7b\xa6\x00\x6a\xd3\xdb\xa0", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=70793577}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=71100036}) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 40, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x06\x00\x20\x00\x3c\x00\x01\x35\x00\x33\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x12\x12\x10\x0a\x0a\x74\x68\x65\x72\x6d\x6f\x70\x69\x6c\x65\x10\x01\x18\x01\x10\x01\x00\x01", 67, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 67 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=72286025}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x06\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, "\x04\x06\x00\x22\x00\x42\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1c\x0d\x00\x03\x00\x00\x11\xe4\xad\xbe\x27\x01\x00\x00\x00\x1a\x0c\x0a\x0a\x74\x68\x65\x72\x6d\x6f\x70\x69\x6c\x65", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 73 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=80847537}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=80926703}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 0 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=82390401}) = 0 [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 48, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x07\x00\x20\x00\x35\x00\x01\x2e\x00\x2c\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0b\x12\x09\x0a\x03\x72\x67\x62\x10\x01\x18\x01\x10\x01\x00\x01", 60, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 60 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=84004516}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x07\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=91304465}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x07\x00\x22\x00\x3b\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x2d\x00\x2b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x15\x0d\x00\x03\x00\x00\x11\x6d\xf4\xc1\x27\x01\x00\x00\x00\x1a\x05\x0a\x03\x72\x67\x62", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 66 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=91633110}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=92080402}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 56, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x08\x00\x20\x00\x3a\x00\x01\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x10\x12\x0e\x0a\x08\x70\x72\x65\x73\x73\x75\x72\x65\x10\x01\x18\x01\x10\x01\x00\x01", 65, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 65 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=93413371}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x08\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=103022018}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x08\x00\x22\x00\x54\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x46\x00\x44\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2e\x0d\x00\x03\x00\x00\x11\xd4\xba\xc4\x27\x01\x00\x00\x00\x1a\x1e\x0a\x08\x70\x72\x65\x73\x73\x75\x72\x65\x12\x12\x09\xb1\x0c\xd5\xe4\x0d\xe4\x4e\x5c\x11\xa3\x64\xba\xbb\x95\x29\x57\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 91 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=104069987}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=105169101}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 64, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x09\x00\x20\x00\x3b\x00\x01\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x11\x12\x0f\x0a\x09\x70\x6f\x73\x65\x5f\x36\x64\x6f\x66\x10\x01\x18\x01\x10\x01\x00\x01", 66, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 66 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=106869362}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x09\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=118547749}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x09\x00\x22\x00\x41\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1b\x0d\x00\x03\x00\x00\x11\xef\xd3\xc8\x27\x01\x00\x00\x00\x1a\x0b\x0a\x09\x70\x6f\x73\x65\x5f\x36\x64\x6f\x66", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 72 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=119647853}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=120234728}) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 72, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0a\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x74\x69\x6c\x74\x10\x01\x18\x01\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 61 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=122229259}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0a\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=129937281}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x0a\x00\x22\x00\x50\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\xaa\x1a\xcd\x27\x01\x00\x00\x00\x1a\x1a\x0a\x04\x74\x69\x6c\x74\x12\x12\x09\x93\x97\x87\x47\x14\xaa\xbb\xcc\x11\xdd\xee\xff\x14\x47\x87\x97\x93", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=130311604}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=130787437}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] sendto(12, "\x00\x0b\x00\x20\x00\x40\x00\x01\x39\x00\x37\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x16\x12\x14\x0a\x0e\x6f\x66\x66\x62\x6f\x64\x79\x5f\x64\x65\x74\x65\x63\x74\x10\x01\x18\x01\x10\x01\x00\x01", 71, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 71 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=132140250}, FUTEX_BITSET_MATCH_ANY [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 80, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0b\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=137621865}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x0b\x00\x22\x00\x46\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x38\x00\x36\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x20\x0d\x00\x03\x00\x00\x11\x32\x03\xd0\x27\x01\x00\x00\x00\x1a\x10\x0a\x0e\x6f\x66\x66\x62\x6f\x64\x79\x5f\x64\x65\x74\x65\x63\x74", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 77 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=137940980}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=138392021}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 88, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0c\x00\x20\x00\x39\x00\x01\x32\x00\x30\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0f\x12\x0d\x0a\x07\x67\x72\x61\x76\x69\x74\x79\x10\x01\x18\x01\x10\x01\x00\x01", 64, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 64 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=139597699}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0c\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Try again) [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=147291293}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x0c\x00\x22\x00\x53\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x45\x00\x43\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2d\x0d\x00\x03\x00\x00\x11\x34\x9a\xd2\x27\x01\x00\x00\x00\x1a\x1d\x0a\x07\x67\x72\x61\x76\x69\x74\x79\x12\x12\x09\x2e\xf5\x5b\xf6\xc0\x98\x43\xa7\x11\xa5\xa6\x50\x68\x2d\x5a\xd4\xc5", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 90 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=147731554}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=148118168}) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 96, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0d\x00\x20\x00\x3c\x00\x01\x35\x00\x33\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x12\x12\x10\x0a\x0a\x68\x65\x61\x72\x74\x5f\x62\x65\x61\x74\x10\x01\x18\x01\x10\x01\x00\x01", 67, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 67 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=149414366}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0d\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=160465722}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x0d\x00\x22\x00\x42\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1c\x0d\x00\x03\x00\x00\x11\xc8\x24\xd5\x27\x01\x00\x00\x00\x1a\x0c\x0a\x0a\x68\x65\x61\x72\x74\x5f\x62\x65\x61\x74", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 73 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=162267909}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=162333743}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 104, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] sendto(12, "\x00\x0e\x00\x20\x00\x35\x00\x01\x2e\x00\x2c\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0b\x12\x09\x0a\x03\x6d\x61\x67\x10\x01\x18\x01\x10\x01\x00\x01", 60, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 60 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=163938743}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0e\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=173615202}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x0e\x00\x22\x00\x4f\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x41\x00\x3f\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x29\x0d\x00\x03\x00\x00\x11\xc0\x3f\xd9\x27\x01\x00\x00\x00\x1a\x19\x0a\x03\x6d\x61\x67\x12\x12\x09\x5b\x79\x1d\xb7\x69\x08\x45\xac\x11\xb0\x48\x90\xc9\x17\xa5\xbb\x64", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 86 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=174702754}) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=175162129}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 108, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] sendto(12, "\x00\x0f\x00\x20\x00\x3c\x00\x01\x35\x00\x33\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x12\x12\x10\x0a\x0a\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x10\x01\x18\x01\x10\x01\x00\x01", 67, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... sendto resumed> ) = 67 [pid 4592] <... futex resumed> ) = 0 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=176962963}, FUTEX_BITSET_MATCH_ANY [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 112, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x0f\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... futex resumed> ) = 0 [pid 4593] recvfrom(12, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... recvfrom resumed> "\x04\x0f\x00\x22\x00\x56\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x48\x00\x46\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x30\x0d\x00\x03\x00\x00\x11\x83\x4a\xdd\x27\x01\x00\x00\x00\x1a\x20\x0a\x0a\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x12\x12\x09\xba\x7b\xfc\x77\xc3\x11\x3b\xb1\x11\xf4\xbb\x1b\xa6\x1a\xb0\x4f\x3b", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 93 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=184916974}) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=185188484}) = 0 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] <... futex resumed> ) = 0 [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=186155828}) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 116, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x10\x00\x20\x00\x3c\x00\x01\x35\x00\x33\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x12\x12\x10\x0a\x0a\x68\x65\x61\x72\x74\x5f\x72\x61\x74\x65\x10\x01\x18\x01\x10\x01\x00\x01", 67, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 67 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=187937391}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x10\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=198083382}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x10\x00\x22\x00\x42\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1c\x0d\x00\x03\x00\x00\x11\x4f\x57\xe0\x27\x01\x00\x00\x00\x1a\x0c\x0a\x0a\x68\x65\x61\x72\x74\x5f\x72\x61\x74\x65", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 73 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=198682496}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 120, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=199395986}) = 0 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] sendto(12, "\x00\x11\x00\x20\x00\x3b\x00\x01\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x11\x12\x0f\x0a\x09\x70\x72\x6f\x78\x69\x6d\x69\x74\x79\x10\x01\x18\x01\x10\x01\x00\x01", 66, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 66 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=201387236}, FUTEX_BITSET_MATCH_ANY [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 124, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x11\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, "\x04\x11\x00\x22\x00\x55\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x47\x00\x45\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2f\x0d\x00\x03\x00\x00\x11\x1a\x5c\xe4\x27\x01\x00\x00\x00\x1a\x1f\x0a\x09\x70\x72\x6f\x78\x69\x6d\x69\x74\x79\x12\x12\x09\xff\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 92 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=211948331}) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=212116560}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=214585310}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 132, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x12\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x70\x73\x6d\x64\x10\x01\x18\x01\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 61 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=216964790}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x12\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=228359687}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x12\x00\x22\x00\x50\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\x47\xbd\xe8\x27\x01\x00\x00\x00\x1a\x1a\x0a\x04\x70\x73\x6d\x64\x12\x12\x09\x39\x4b\x65\x4c\x41\xa4\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=228829062}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=229646353}) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 140, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x13\x00\x20\x00\x3a\x00\x01\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x10\x12\x0e\x0a\x08\x68\x75\x6d\x69\x64\x69\x74\x79\x10\x01\x18\x01\x10\x01\x00\x01", 65, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 65 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=231065260}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x13\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=241721719}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] recvfrom(12, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... recvfrom resumed> "\x04\x13\x00\x22\x00\x40\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x32\x00\x30\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x1a\x0d\x00\x03\x00\x00\x11\xbe\xc6\xec\x27\x01\x00\x00\x00\x1a\x0a\x0a\x08\x68\x75\x6d\x69\x64\x69\x74\x79", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 71 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... futex resumed> ) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 144, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=242888178}) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=242966511}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] sendto(12, "\x00\x14\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x68\x61\x6c\x6c\x10\x01\x18\x01\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 61 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 148, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=244635261}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x14\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=254791043}) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4593] recvfrom(12, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... recvfrom resumed> "\x04\x14\x00\x22\x00\x50\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\x91\xe7\xf0\x27\x01\x00\x00\x00\x1a\x1a\x0a\x04\x68\x61\x6c\x6c\x12\x12\x09\x52\x4f\x48\x4d\x20\x48\x41\x4c\x11\x4c\x20\x35\x32\x30\x35\x33\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] <... futex resumed> ) = 1 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=255903075}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=255984273}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 156, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] sendto(12, "\x00\x15\x00\x20\x00\x39\x00\x01\x32\x00\x30\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0f\x12\x0d\x0a\x07\x6d\x61\x67\x5f\x63\x61\x6c\x10\x01\x18\x01\x10\x01\x00\x01", 64, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 64 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=257577762}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x15\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=269367712}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x15\x00\x22\x00\x53\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x45\x00\x43\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2d\x0d\x00\x03\x00\x00\x11\xf2\xf8\xf4\x27\x01\x00\x00\x00\x1a\x1d\x0a\x07\x6d\x61\x67\x5f\x63\x61\x6c\x12\x12\x09\x70\x96\xd5\x32\x39\x7a\xa4\x8f\x11\x07\xa7\x9c\x6e\x57\x34\xc5\xc6", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 90 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=270747816}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=271263180}) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 164, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x16\x00\x20\x00\x3f\x00\x01\x38\x00\x36\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x15\x12\x13\x0a\x0d\x64\x65\x76\x69\x63\x65\x5f\x6f\x72\x69\x65\x6e\x74\x10\x01\x18\x01\x10\x01\x00\x01", 70, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 70 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=272709951}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x16\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=284022296}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x16\x00\x22\x00\x59\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x4b\x00\x49\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x33\x0d\x00\x03\x00\x00\x11\x11\x2c\xf9\x27\x01\x00\x00\x00\x1a\x23\x0a\x0d\x64\x65\x76\x69\x63\x65\x5f\x6f\x72\x69\x65\x6e\x74\x12\x12\x09\xab\x76\xb0\x4e\x4b\x1e\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 96 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=284652401}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 168, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=286234276}) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 172, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] sendto(12, "\x00\x17\x00\x20\x00\x44\x00\x01\x3d\x00\x3b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x1a\x12\x18\x0a\x12\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x10\x01\x18\x01\x10\x01\x00\x01", 75, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 75 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=288235682}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x17\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=299970735}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x17\x00\x22\x00\x5e\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x50\x00\x4e\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x38\x0d\x00\x03\x00\x00\x11\xa8\xa8\xfd\x27\x01\x00\x00\x00\x1a\x28\x0a\x12\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x54\x45\x4d\x50\x5f\x30\x30", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 101 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=300645631}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=301472611}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 180, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x18\x00\x20\x00\x3b\x00\x01\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x11\x12\x0f\x0a\x09\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x10\x01\x18\x01\x10\x01\x00\x01", 66, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 66 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=303704590}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x18\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x04\x18\x00\x22\x00\x55\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x47\x00\x45\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2f\x0d\x00\x03\x00\x00\x11\xfa\x1f\x02\x28\x01\x00\x00\x00\x1a\x1f\x0a\x09\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x12\x12\x09\x41\x42\x43\x44\x45\x46\x47\x48\x11\x90\x7b\xa6\xff\x6a\xd3\xdb\xb1", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 92 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=311483757}) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=311780841}) = 0 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4587] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... futex resumed> ) = 1 [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 188, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=314904591}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x19\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x67\x79\x72\x6f\x10\x01\x18\x01\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 61 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=316632977}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x19\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=323032352}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x19\x00\x22\x00\x50\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\x9e\xf0\x05\x28\x01\x00\x00\x00\x1a\x1a\x0a\x04\x67\x79\x72\x6f\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x47\x59\x52\x4f\x5f\x30\x30", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=324036363}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=324813655}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 196, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1a\x00\x20\x00\x3a\x00\x01\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x10\x12\x0e\x0a\x08\x67\x79\x72\x6f\x5f\x63\x61\x6c\x10\x01\x18\x01\x10\x01\x00\x01", 65, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 65 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=326851936}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1a\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=332304541}) = 0 [pid 4593] recvfrom(12, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... recvfrom resumed> "\x04\x1a\x00\x22\x00\x54\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x46\x00\x44\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2e\x0d\x00\x03\x00\x00\x11\x79\x09\x09\x28\x01\x00\x00\x00\x1a\x1e\x0a\x08\x67\x79\x72\x6f\x5f\x63\x61\x6c\x12\x12\x09\x9c\xc8\x2e\x54\x18\x2c\x41\x8b\x11\x9e\x44\xaa\x87\x79\xb9\x02\xb7", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 91 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=332874489}) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=333793135}) = 0 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 200, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1b\x00\x20\x00\x39\x00\x01\x32\x00\x30\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0f\x12\x0d\x0a\x07\x67\x61\x6d\x65\x5f\x72\x76\x10\x01\x18\x01\x10\x01\x00\x01", 64, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 64 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=335381312}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1b\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=341980479}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x1b\x00\x22\x00\x53\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x45\x00\x43\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2d\x0d\x00\x03\x00\x00\x11\x2d\x96\x0b\x28\x01\x00\x00\x00\x1a\x1d\x0a\x07\x67\x61\x6d\x65\x5f\x72\x76\x12\x12\x09\xf1\x94\xe9\xe3\x98\x4b\xb0\x89\x11\xda\x43\xde\x35\xd0\x55\x5c\x98", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 90 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=342462406}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=343063969}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 208, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1c\x00\x20\x00\x45\x00\x01\x3e\x00\x3c\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x1b\x12\x19\x0a\x13\x61\x6d\x62\x69\x65\x6e\x74\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x10\x01\x18\x01\x10\x01\x00\x01", 76, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 76 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=345267042}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1c\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, "\x04\x1c\x00\x22\x00\x4b\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x3d\x00\x3b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x25\x0d\x00\x03\x00\x00\x11\xdd\x25\x0e\x28\x01\x00\x00\x00\x1a\x15\x0a\x13\x61\x6d\x62\x69\x65\x6e\x74\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 82 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=351989178}) = 0 [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=352277095}) = 0 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4593] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] <... futex resumed> ) = 0 [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4592] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=353570064}) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 212, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1d\x00\x20\x00\x3f\x00\x01\x38\x00\x36\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x15\x12\x13\x0a\x0d\x61\x6d\x62\x69\x65\x6e\x74\x5f\x6c\x69\x67\x68\x74\x10\x01\x18\x01\x10\x01\x00\x01", 70, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 70 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=355509022}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1d\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=363068606}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x1d\x00\x22\x00\x59\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x4b\x00\x49\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x33\x0d\x00\x03\x00\x00\x11\xa7\x71\x11\x28\x01\x00\x00\x00\x1a\x23\x0a\x0d\x61\x6d\x62\x69\x65\x6e\x74\x5f\x6c\x69\x67\x68\x74\x12\x12\x09\x11\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 96 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=363781315}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4593] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=364389179}) = 0 [pid 4593] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4592] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 220, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1e\x00\x20\x00\x37\x00\x01\x30\x00\x2e\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0d\x12\x0b\x0a\x05\x61\x63\x63\x65\x6c\x10\x01\x18\x01\x10\x01\x00\x01", 62, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 62 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=366355586}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1e\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=385357463}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x1e\x00\x22\x00\x51\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x43\x00\x41\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2b\x0d\x00\x03\x00\x00\x11\x74\x73\x15\x28\x01\x00\x00\x00\x1a\x1b\x0a\x05\x61\x63\x63\x65\x6c\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x41\x43\x43\x45\x4c\x5f\x30", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 88 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4593] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4593] <... clock_gettime resumed> {tv_sec=245, tv_nsec=385940588}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4593] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4592] <... futex resumed> ) = 0 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 224, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=388491942}) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4593] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4593] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 228, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x1f\x00\x20\x00\x3b\x00\x01\x34\x00\x32\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x11\x12\x0f\x0a\x09\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x10\x01\x18\x01\x10\x01\x00\x01", 66, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 66 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=247, tv_nsec=391336474}, FUTEX_BITSET_MATCH_ANY [pid 4593] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4593] recvfrom(12, "\x02\x1f\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4593] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4593] <... futex resumed> ) = 0 [pid 4587] futex(0x757905edb0, FUTEX_WAKE_PRIVATE, 1 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4593] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=245, tv_nsec=404603038}) = 0 [pid 4593] <... recvfrom resumed> "\x04\x1f\x00\x22\x00\x55\x00\x01\x08\x00\x12\x00\x00\x00\x00\x00\x00\x00\x02\x47\x00\x45\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2f\x0d\x00\x03\x00\x00\x11\xaf\xcb\x1b\x28\x01\x00\x00\x00\x1a\x1f\x0a\x09\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x12\x12\x09\xc1\x83\x4b\x97\x9e\x50\x43\x56\x11\xb4\xe7\x97\xb0\x11\xde\x33\xd2", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 92 [pid 4593] clock_gettime(CLOCK_BOOTTIME, {tv_sec=245, tv_nsec=405195538}) = 0 [pid 4593] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4593] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4592] <... futex resumed> ) = 0 [pid 4593] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] timer_settime(1, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 232, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 0 [pid 4592] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] getuid( [pid 4592] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 236, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... getuid resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x27\xf5\xba\x23", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x35\x32\x30\x2c\x20\x77\x61\x69\x74\x69\x6e\x67\x20\x66\x6f\x72\x20\x73\x75\x69\x64\x73\x20\x66\x6f\x72\x20\x31\x73\x20\x2e\x2e\x2e\x00", iov_len=51}], 4) = 75 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x52\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd6\x61\xb8\x62\x27\xf5\xba\x23", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x35\x32\x30\x2c\x20\x77\x61\x69\x74\x69\x6e\x67\x20\x66\x6f\x72\x20\x73\x75\x69\x64\x73\x20\x66\x6f\x72\x20\x31\x73\x20\x2e\x2e\x2e\x00", iov_len=51}], 5) = 82 [pid 4587] nanosleep({tv_sec=1, tv_nsec=0}, 0x7fd1914b28) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7444b66000 [pid 4587] mprotect(0x7444b67000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4598 attached child_stack=0x7444c5ecf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7444c5ed10, tls=0x7444c5f010, child_tidptr=0x7444c5ed10) = 4598 [pid 4598] futex(0x7444c5ed9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7444c5ed9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4598] <... futex resumed> ) = 0 [pid 4587] getuid( [pid 4598] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7444b67000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x38" [pid 4587] <... getuid resumed> ) = 0 [pid 4598] <... prctl resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\xb6\x21\xe9\x24", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4598] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 74 [pid 4598] <... mmap resumed> ) = 0x76deb4b000 [pid 4598] mprotect(0x76deb4b000, 4096, PROT_NONE [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\xb6\x21\xe9\x24", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4598] <... mprotect resumed> ) = 0 [pid 4587] <... writev resumed> ) = 81 [pid 4598] sigaltstack({ss_sp=0x76deb4c000, ss_flags=0, ss_size=32768}, [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4598] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... ioctl resumed> , 0x74e905d950) = 0 [pid 4598] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb4c000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=431555484}) = 0 [pid 4598] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4598] <... mmap resumed> ) = 0x7443b66000 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=431879494}) = 0 [pid 4598] mprotect(0x7444058000, 8192, PROT_READ|PROT_WRITE [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4598] <... mprotect resumed> ) = 0 [pid 4587] <... ioctl resumed> , 0x7539060d90) = 0 [pid 4598] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0 [pid 4598] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] <... socket resumed> ) = 15 [pid 4598] futex(0x75c905a540, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] pipe2([16, 17], 0) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7443a69000 [pid 4587] mprotect(0x7443a6a000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4599 attached child_stack=0x7443b61cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7443b61d10, tls=0x7443b62010, child_tidptr=0x7443b61d10) = 4599 [pid 4599] futex(0x7443b61d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7443b61d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] fcntl(15, F_GETFL [pid 4599] <... futex resumed> ) = 0 [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4599] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7443a6a000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x35\x39\x39" [pid 4587] fcntl(15, F_SETFL, O_RDWR|O_NONBLOCK [pid 4599] <... prctl resumed> ) = 0 [pid 4587] <... fcntl resumed> ) = 0 [pid 4599] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] write(17, "\x61", 1 [pid 4599] <... mmap resumed> ) = 0x76deb42000 [pid 4587] <... write resumed> ) = 1 [pid 4599] mprotect(0x76deb42000, 4096, PROT_NONE) = 0 [pid 4599] sigaltstack({ss_sp=0x76deb43000, ss_flags=0, ss_size=32768}, [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x74e905d950) = 0 [pid 4599] <... sigaltstack resumed> NULL) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4599] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb43000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... ioctl resumed> , 0x74f905bf50) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [pid 4599] <... prctl resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4599] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7442a69000 [pid 4587] <... mmap resumed> ) = 0x744296c000 [pid 4599] mprotect(0x7442bcc000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4599] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] mprotect(0x744296d000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4599] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4599] <... ppoll resumed> ) = 1 ([{fd=16, revents=POLLIN}]) [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4599] read(16, [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4599] <... read resumed> "\x61", 1) = 1 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4600 attached child_stack=0x7442a64cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7442a64d10, tls=0x7442a65010, child_tidptr=0x7442a64d10) = 4600 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4600] futex(0x7442a64d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x7442a64d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4600] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4600] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x744296d000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x30" [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4600] <... prctl resumed> ) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922377584, sival_ptr=0x75c905a290}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4600}, [pid 4600] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... timer_create resumed> [2]) = 0 [pid 4600] <... mmap resumed> ) = 0x76deb39000 [pid 4600] mprotect(0x76deb39000, 4096, PROT_NONE) = 0 [pid 4600] sigaltstack({ss_sp=0x76deb3a000, ss_flags=0, ss_size=32768}, [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x30\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4600] <... sigaltstack resumed> NULL) = 0 [pid 4600] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb3a000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... openat resumed> ) = 18 [pid 4600] <... prctl resumed> ) = 0 [pid 4600] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] write(18, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x32", 13 [pid 4600] <... mmap resumed> ) = 0x744196c000 [pid 4587] <... write resumed> ) = 13 [pid 4600] mprotect(0x744232e000, 8192, PROT_READ|PROT_WRITE [pid 4587] close(18 [pid 4600] <... mprotect resumed> ) = 0 [pid 4587] <... close resumed> ) = 0 [pid 4600] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x39\x38\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4600] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4600] rt_sigtimedwait([RTMIN], [pid 4587] <... openat resumed> ) = 18 [pid 4587] write(18, "\x73\x65\x65\x5f\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70", 15) = 15 [pid 4587] close(18) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=449336631}) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(15, "\x00\x01\x00\x20\x00\x44\x00\x01\x3d\x00\x3b\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x1a\x12\x18\x0a\x12\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x10\x01\x18\x00\x10\x01\x00\x01", 75, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 75 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=451193715}, FUTEX_BITSET_MATCH_ANY [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4599] recvfrom(15, "\x02\x01\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4599] rt_sigprocmask(0x43b619f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4599] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] recvfrom(15, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=457564913}) = 0 [pid 4599] <... recvfrom resumed> "\x04\x01\x00\x22\x00\x72\x00\x01\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02\x64\x00\x62\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x4c\x0d\x00\x03\x00\x00\x11\x6c\x81\x52\x29\x01\x00\x00\x00\x1a\x3c\x0a\x12\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x54\x45\x4d\x50\x5f\x30\x30\x12\x12\x09\x02\x68\x2a\x93\x17\xbc\x4d\xad\x11\xbb\xe8\xfe\x1d\x2e\xe1\xd2\x2b", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 121 [pid 4587] timer_settime(2, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905a540, FUTEX_WAKE_PRIVATE, 1 [pid 4599] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... futex resumed> ) = 1 [pid 4599] <... clock_gettime resumed> {tv_sec=246, tv_nsec=458178820}) = 0 [pid 4598] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] rt_sigprocmask(0x43b618b0 /* SIG_??? */, NULL, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=458441632}) = 0 [pid 4599] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4598] futex(0x75c905a540, FUTEX_WAIT_BITSET_PRIVATE, 4, NULL, FUTEX_BITSET_MATCH_ANY [pid 4599] futex(0x75c905a540, FUTEX_WAKE_PRIVATE, 1 [pid 4598] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4599] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4598] getuid() = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [pid 4598] writev(4, [{iov_base="\x00\xf6\x11\xd7\x61\xb8\x62\x5a\xfa\xce\x26", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 4 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4598] <... writev resumed> ) = 74 [pid 4587] sendto(15, "\x00\x02\x00\x20\x00\x36\x00\x01\x2f\x00\x2d\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0c\x12\x0a\x0a\x04\x67\x79\x72\x6f\x10\x01\x18\x00\x10\x01\x00\x01", 61, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 61 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=459757518}, FUTEX_BITSET_MATCH_ANY [pid 4598] getuid() = 0 [pid 4598] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xf6\x11\xd7\x61\xb8\x62\x5a\xfa\xce\x26", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x68\x61\x6e\x64\x6c\x65\x5f\x73\x73\x63\x5f\x65\x76\x65\x6e\x74\x3a\x38\x39\x2c\x20\x74\x68\x72\x65\x61\x64\x5f\x6e\x61\x6d\x65\x3d\x20\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65\x00", iov_len=50}], 5) = 81 [pid 4598] prctl(PR_SET_NAME, "\x73\x75\x69\x64\x5f\x6c\x6f\x6f\x6b\x75\x70\x5f\x73\x65\x65"...) = 0 [pid 4598] futex(0x76da774090, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4599] recvfrom(15, "\x02\x02\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4599] rt_sigprocmask(0x43b619f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4599] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4599] <... futex resumed> ) = 1 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=465135904}) = 0 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] timer_settime(2, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4599] recvfrom(15, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] <... recvfrom resumed> "\x04\x02\x00\x22\x00\x50\x00\x01\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x40\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2a\x0d\x00\x03\x00\x00\x11\x2e\xec\x54\x29\x01\x00\x00\x00\x1a\x1a\x0a\x04\x67\x79\x72\x6f\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x47\x59\x52\x4f\x5f\x30\x30", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 87 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=465669237}) = 0 [pid 4599] clock_gettime(CLOCK_BOOTTIME, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4599] <... clock_gettime resumed> {tv_sec=246, tv_nsec=465852154}) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4599] rt_sigprocmask(0x43b618b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [pid 4599] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(15, "\x00\x03\x00\x20\x00\x3a\x00\x01\x33\x00\x31\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x10\x12\x0e\x0a\x08\x67\x79\x72\x6f\x5f\x63\x61\x6c\x10\x01\x18\x00\x10\x01\x00\x01", 65, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 65 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=467128768}, FUTEX_BITSET_MATCH_ANY [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4599] recvfrom(15, "\x02\x03\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4599] rt_sigprocmask(0x43b619f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4599] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] recvfrom(15, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=473841842}) = 0 [pid 4587] timer_settime(2, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4599] <... recvfrom resumed> "\x04\x03\x00\x22\x00\x54\x00\x01\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02\x46\x00\x44\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2e\x0d\x00\x03\x00\x00\x11\xe7\x65\x57\x29\x01\x00\x00\x00\x1a\x1e\x0a\x08\x67\x79\x72\x6f\x5f\x63\x61\x6c\x12\x12\x09\x9c\xc8\x2e\x54\x18\x2c\x41\x8b\x11\x9e\x44\xaa\x87\x79\xb9\x02\xb7", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 91 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4599] clock_gettime(CLOCK_BOOTTIME, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] <... clock_gettime resumed> {tv_sec=246, tv_nsec=474419290}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=474601894}) = 0 [pid 4599] rt_sigprocmask(0x43b618b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd19142f0 /* SIG_??? */, NULL, [pid 4599] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914300 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd19142e0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(15, "\x00\x04\x00\x20\x00\x37\x00\x01\x30\x00\x2e\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x15\x00\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x0d\x12\x0b\x0a\x05\x61\x63\x63\x65\x6c\x10\x01\x18\x00\x10\x01\x00\x01", 62, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 62 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=475850071}, FUTEX_BITSET_MATCH_ANY [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4599] recvfrom(15, "\x02\x04\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4599] rt_sigprocmask(0x43b619f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4599] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=482434655}) = 0 [pid 4599] recvfrom(15, [pid 4587] timer_settime(2, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4599] <... recvfrom resumed> "\x04\x04\x00\x22\x00\x51\x00\x01\x08\x00\x13\x00\x00\x00\x00\x00\x00\x00\x02\x43\x00\x41\x00\x0a\x12\x09\xab\xab\xab\xab\xab\xab\xab\xab\x11\xab\xab\xab\xab\xab\xab\xab\xab\x12\x2b\x0d\x00\x03\x00\x00\x11\x41\xe0\x59\x29\x01\x00\x00\x00\x1a\x1b\x0a\x05\x61\x63\x63\x65\x6c\x12\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x41\x43\x43\x45\x4c\x5f\x30", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 88 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4599] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x76da774090, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4599] <... clock_gettime resumed> {tv_sec=246, tv_nsec=483412676}) = 0 [pid 4587] futex(0x76da774508, FUTEX_WAIT_BITSET_PRIVATE, 0, {tv_sec=246, tv_nsec=983127252}, FUTEX_BITSET_MATCH_ANY [pid 4598] <... futex resumed> ) = 0 [pid 4599] rt_sigprocmask(0x43b618b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4599] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4598] futex(0x76da774508, FUTEX_WAKE_PRIVATE, 1 [pid 4599] ppoll([{fd=16, events=POLLIN}, {fd=15, events=POLLIN}], 2, NULL, NULL, 0 [pid 4598] <... futex resumed> ) = 0 [pid 4587] futex(0x76da774090, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4598] futex(0x76da774090, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4598] <... futex resumed> ) = 0 [pid 4587] futex(0x76da774090, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4598] futex(0x76da774508, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x76da774508, FUTEX_WAIT_BITSET_PRIVATE, 4, {tv_sec=246, tv_nsec=983123470}, FUTEX_BITSET_MATCH_ANY [pid 4598] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x76da774508, FUTEX_WAIT_BITSET_PRIVATE, 8, {tv_sec=246, tv_nsec=983124002}, FUTEX_BITSET_MATCH_ANY [pid 4598] futex(0x76da774508, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4598] <... futex resumed> ) = 0 [pid 4587] futex(0x76da774090, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4598] futex(0x76da774090, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4598] <... futex resumed> ) = 0 [pid 4587] futex(0x76da774090, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4598] futex(0x76da774508, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x76da774508, FUTEX_WAIT_BITSET_PRIVATE, 12, {tv_sec=246, tv_nsec=983123106}, FUTEX_BITSET_MATCH_ANY [pid 4598] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4598] futex(0x75c905a540, FUTEX_WAIT_BITSET_PRIVATE, 8, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\x62\xc2\x6e\x28", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x35\x39\x35\x2c\x20\x6e\x6f\x74\x2d\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x75\x69\x64\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x74\x69\x6d\x65\x20\x3d\x20\x30\x2e\x30\x36\x38\x33\x34\x31\x73\x00", iov_len=66}], 4) = 90 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x61\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\x62\xc2\x6e\x28", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x35\x39\x35\x2c\x20\x6e\x6f\x74\x2d\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x75\x69\x64\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x74\x69\x6d\x65\x20\x3d\x20\x30\x2e\x30\x36\x38\x33\x34\x31\x73\x00", iov_len=66}], 5) = 97 [pid 4587] timer_delete(2) = 0 [pid 4587] tgkill(4587, 4600, SIGRTMIN) = 0 [pid 4600] <... rt_sigtimedwait resumed> {si_signo=SIGRTMIN, si_code=SI_TKILL, si_pid=4587, si_uid=0}, NULL, 8) = 32 (SIGRTMIN) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4600] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=489390646}) = 0 [pid 4600] <... sigaltstack resumed> NULL) = 0 [pid 4587] write(17, "\x64", 1 [pid 4600] munmap(0x76deb39000, 36864 [pid 4587] <... write resumed> ) = 1 [pid 4600] <... munmap resumed> ) = 0 [pid 4587] futex(0x7fd1914a3c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4600] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4599] <... ppoll resumed> ) = 1 ([{fd=16, revents=POLLIN}]) [pid 4600] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4599] read(16, [pid 4600] munmap(0x744196c000, 16777216 [pid 4599] <... read resumed> "\x64", 1) = 1 [pid 4600] <... munmap resumed> ) = 0 [pid 4599] close(16 [pid 4600] set_tid_address(0) = 4600 [pid 4599] <... close resumed> ) = 0 [pid 4600] munmap(0x744296c000, 1036288 [pid 4599] close(17 [pid 4600] <... munmap resumed> ) = 0 [pid 4599] <... close resumed> ) = 0 [pid 4600] exit(0 [pid 4599] close(15 [pid 4600] <... exit resumed>) = ? [pid 4599] <... close resumed> ) = 0 [pid 4599] futex(0x7fd1914a3c, FUTEX_WAKE_PRIVATE, 1 [pid 4600] +++ exited with 0 +++ [pid 4587] <... futex resumed> ) = 0 [pid 4599] <... futex resumed> ) = 1 [pid 4587] futex(0x7fd1914a78, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4599] futex(0x7fd1914a78, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4599] <... futex resumed> ) = 0 [pid 4587] futex(0x7fd1914a78, FUTEX_WAKE_PRIVATE, 1 [pid 4599] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0 [pid 4599] munmap(0x76deb42000, 36864 [pid 4587] <... futex resumed> ) = 0 [pid 4599] <... munmap resumed> ) = 0 [pid 4599] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4599] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4599] munmap(0x7442a69000, 16777216 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=493726688}) = 0 [pid 4599] <... munmap resumed> ) = 0 [pid 4587] futex(0x75c905a540, FUTEX_WAKE_PRIVATE, 1 [pid 4599] set_tid_address(0 [pid 4587] <... futex resumed> ) = 1 [pid 4599] <... set_tid_address resumed> ) = 4599 [pid 4598] <... futex resumed> ) = 0 [pid 4599] munmap(0x7443a69000, 1036288 [pid 4598] futex(0x75c905a518, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905a518, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4599] <... munmap resumed> ) = 0 [pid 4587] futex(0x7444c5ed10, FUTEX_WAIT, 4598, NULL [pid 4599] exit(0 [pid 4598] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4599] <... exit resumed>) = ? [pid 4598] futex(0x75c905a518, FUTEX_WAKE_PRIVATE, 1 [pid 4599] +++ exited with 0 +++ [pid 4598] <... futex resumed> ) = 0 [pid 4598] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0 [pid 4598] munmap(0x76deb4b000, 36864) = 0 [pid 4598] rt_sigprocmask(SIG_BLOCK, ~[], NULL, 8) = 0 [pid 4598] munmap(0x7443b66000, 16777216) = 0 [pid 4598] exit(0) = ? [pid 4587] <... futex resumed> ) = 0 [pid 4598] +++ exited with 0 +++ [pid 4587] munmap(0x7444b66000, 1036288) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\xcb\x61\x31\x29", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x36\x30\x32\x2c\x20\x73\x75\x69\x64\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x74\x69\x6d\x65\x20\x3d\x20\x31\x2e\x30\x37\x38\x31\x39\x37\x73\x00", iov_len=54}], 4) = 78 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x55\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\xcb\x61\x31\x29", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x64\x69\x73\x63\x6f\x76\x65\x72\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x36\x30\x32\x2c\x20\x73\x75\x69\x64\x20\x64\x69\x73\x63\x6f\x76\x65\x72\x79\x20\x74\x69\x6d\x65\x20\x3d\x20\x31\x2e\x30\x37\x38\x31\x39\x37\x73\x00", iov_len=54}], 5) = 85 [pid 4587] timer_delete(1) = 0 [pid 4587] tgkill(4587, 4594, SIGRTMIN) = 0 [pid 4594] <... rt_sigtimedwait resumed> {si_signo=SIGRTMIN, si_code=SI_TKILL, si_pid=4587, si_uid=0}, NULL, 8) = 32 (SIGRTMIN) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4594] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=501120334}) = 0 [pid 4594] <... sigaltstack resumed> NULL) = 0 [pid 4587] write(14, "\x64", 1 [pid 4594] munmap(0x76deb54000, 36864 [pid 4587] <... write resumed> ) = 1 [pid 4594] <... munmap resumed> ) = 0 [pid 4593] <... ppoll resumed> ) = 1 ([{fd=13, revents=POLLIN}]) [pid 4587] futex(0x7fd1914a3c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4594] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4593] read(13, [pid 4594] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4593] <... read resumed> "\x64", 1) = 1 [pid 4594] munmap(0x7444c63000, 16777216 [pid 4593] close(13 [pid 4594] <... munmap resumed> ) = 0 [pid 4593] <... close resumed> ) = 0 [pid 4594] set_tid_address(0 [pid 4593] close(14 [pid 4594] <... set_tid_address resumed> ) = 4594 [pid 4593] <... close resumed> ) = 0 [pid 4594] munmap(0x7445c63000, 1036288 [pid 4593] close(12 [pid 4594] <... munmap resumed> ) = 0 [pid 4593] <... close resumed> ) = 0 [pid 4594] exit(0 [pid 4593] futex(0x7fd1914a3c, FUTEX_WAKE_PRIVATE, 1 [pid 4594] <... exit resumed>) = ? [pid 4587] <... futex resumed> ) = 0 [pid 4594] +++ exited with 0 +++ [pid 4587] futex(0x7fd1914a78, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4593] <... futex resumed> ) = 1 [pid 4593] futex(0x7fd1914a78, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4593] <... futex resumed> ) = 1 [pid 4587] futex(0x7fd1914a78, FUTEX_WAKE_PRIVATE, 1 [pid 4593] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=503516637}) = 0 [pid 4593] <... sigaltstack resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4593] munmap(0x76deb5d000, 36864 [pid 4592] <... futex resumed> ) = 0 [pid 4587] futex(0x7449052d10, FUTEX_WAIT, 4592, NULL [pid 4593] <... munmap resumed> ) = 0 [pid 4592] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4593] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4592] <... sigaltstack resumed> NULL) = 0 [pid 4593] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4592] munmap(0x76deb6f000, 36864 [pid 4593] munmap(0x7445d60000, 16777216) = 0 [pid 4592] <... munmap resumed> ) = 0 [pid 4593] set_tid_address(0 [pid 4592] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4593] <... set_tid_address resumed> ) = 4593 [pid 4592] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4593] munmap(0x7446d60000, 1036288 [pid 4592] munmap(0x7447f5a000, 16777216 [pid 4593] <... munmap resumed> ) = 0 [pid 4593] exit(0 [pid 4592] <... munmap resumed> ) = 0 [pid 4593] <... exit resumed>) = ? [pid 4592] exit(0 [pid 4593] +++ exited with 0 +++ [pid 4592] <... exit resumed>) = ? [pid 4587] <... futex resumed> ) = 0 [pid 4592] +++ exited with 0 +++ [pid 4587] munmap(0x7448f5a000, 1036288) = 0 [pid 4587] madvise(0x7619067000, 4096, MADV_DONTNEED) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7448f5a000 [pid 4587] mprotect(0x7448f5b000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4601 attached child_stack=0x7449052cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7449052d10, tls=0x7449053010, child_tidptr=0x7449052d10) = 4601 [pid 4601] futex(0x7449052d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7449052d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4601] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7448f5b000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x31" [pid 4587] getuid( [pid 4601] <... prctl resumed> ) = 0 [pid 4601] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb6f000 [pid 4587] <... getuid resumed> ) = 0 [pid 4601] mprotect(0x76deb6f000, 4096, PROT_NONE [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\x27\x84\xcc\x29", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4601] <... mprotect resumed> ) = 0 [pid 4587] <... writev resumed> ) = 74 [pid 4601] sigaltstack({ss_sp=0x76deb70000, ss_flags=0, ss_size=32768}, [pid 4587] getuid( [pid 4601] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... getuid resumed> ) = 0 [pid 4601] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb70000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd7\x61\xb8\x62\x27\x84\xcc\x29", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4601] <... prctl resumed> ) = 0 [pid 4587] <... writev resumed> ) = 81 [pid 4601] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4601] <... mmap resumed> ) = 0x7447f5a000 [pid 4587] <... ioctl resumed> , 0x74e905b130) = 0 [pid 4601] mprotect(0x7448e74000, 8192, PROT_READ|PROT_WRITE [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=512333044}) = 0 [pid 4601] <... mprotect resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=512662523}) = 0 [pid 4601] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4601] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] <... ioctl resumed> , 0x75390601c0) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 12 [pid 4587] pipe2([13, 14], 0) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7446d60000 [pid 4587] mprotect(0x7446d61000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4602 attached child_stack=0x7446e58cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7446e58d10, tls=0x7446e59010, child_tidptr=0x7446e58d10) = 4602 [pid 4602] futex(0x7446e58d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7446e58d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] fcntl(12, F_GETFL [pid 4602] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7446d61000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x32" [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4602] <... prctl resumed> ) = 0 [pid 4587] fcntl(12, F_SETFL, O_RDWR|O_NONBLOCK [pid 4602] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... fcntl resumed> ) = 0 [pid 4602] <... mmap resumed> ) = 0x76deb5d000 [pid 4602] mprotect(0x76deb5d000, 4096, PROT_NONE [pid 4587] write(14, "\x61", 1 [pid 4602] <... mprotect resumed> ) = 0 [pid 4587] <... write resumed> ) = 1 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4602] sigaltstack({ss_sp=0x76deb5e000, ss_flags=0, ss_size=32768}, [pid 4587] <... ioctl resumed> , 0x74e905b130) = 0 [pid 4602] <... sigaltstack resumed> NULL) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4602] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb5e000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... ioctl resumed> , 0x74f905b590) = 0 [pid 4602] <... prctl resumed> ) = 0 [pid 4602] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [pid 4602] <... mmap resumed> ) = 0x7445d60000 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4602] mprotect(0x7446bc2000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... mmap resumed> ) = 0x7445c63000 [pid 4602] <... mprotect resumed> ) = 0 [pid 4587] mprotect(0x7445c64000, 1028096, PROT_READ|PROT_WRITE [pid 4602] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... mprotect resumed> ) = 0 [pid 4602] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=13, revents=POLLIN}]) [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4602] read(13, [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4602] <... read resumed> "\x61", 1) = 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4603 attached child_stack=0x7445d5bcf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7445d5bd10, tls=0x7445d5c010, child_tidptr=0x7445d5bd10) = 4603 [pid 4603] futex(0x7445d5bd9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7445d5bd9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4603] <... futex resumed> ) = 0 [pid 4603] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7445c64000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x33" [pid 4587] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0 [pid 4603] <... prctl resumed> ) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922374272, sival_ptr=0x75c905af80}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4603}, [pid 4603] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... timer_create resumed> [3]) = 0 [pid 4603] <... mmap resumed> ) = 0x76deb54000 [pid 4603] mprotect(0x76deb54000, 4096, PROT_NONE) = 0 [pid 4603] sigaltstack({ss_sp=0x76deb55000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4603] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb55000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x33\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4603] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... openat resumed> ) = 15 [pid 4587] write(15, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x33", 13 [pid 4603] <... mmap resumed> ) = 0x7444c63000 [pid 4603] mprotect(0x7444df8000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... write resumed> ) = 13 [pid 4603] <... mprotect resumed> ) = 0 [pid 4587] close(15 [pid 4603] rt_sigprocmask(SIG_SETMASK, [RTMIN], [pid 4587] <... close resumed> ) = 0 [pid 4603] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x31\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4603] rt_sigtimedwait([RTMIN], [pid 4587] <... openat resumed> ) = 15 [pid 4587] write(15, "\x73\x65\x65\x5f\x61\x74\x74\x72\x5f\x63\x62", 11) = 11 [pid 4587] close(15) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=523146795}) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x01\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xc1\x83\x4b\x97\x9e\x50\x43\x56\x11\xb4\xe7\x97\xb0\x11\xde\x33\xd2\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=524436587}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x01\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=529012629}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x01\x00\x22\x00\xbd\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xaf\x00\xad\x00\x0a\x12\x09\xc1\x83\x4b\x97\x9e\x50\x43\x56\x11\xb4\xe7\x97\xb0\x11\xde\x33\xd2\x12\x96\x01\x0d\x80\x00\x00\x00\x11\xd7\xd8\x67\x29\x01\x00\x00\x00\x1a\x85\x01\x0a\x12\x08\x00\x12\x0e\x0a\x0c\x12\x0a\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x00\x0a\x12\x08\x02\x12\x0e\x0a\x0c\x12\x0a\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1c\x08\x05\x12\x18\x0a\x16\x12\x14\x73\x6e\x73\x5f\x72\x65\x73\x61\x6d\x70\x6c\x65\x72\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 196 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=529324035}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] mmap(0x7559067000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... mmap resumed> ) = 0x7559067000 [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7559067000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79" [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... prctl resumed> ) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 4, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=531277056}) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x02\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x41\x43\x43\x45\x4c\x5f\x30\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=532476587}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x02\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=538364505}) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] recvfrom(12, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... recvfrom resumed> "\x04\x02\x00\x22\x00\xb3\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xa5\x02\xa3\x02\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x41\x43\x43\x45\x4c\x5f\x30\x12\x8c\x05\x0d\x80\x00\x00\x00\x11\xb8\x4e\x6a\x29\x01\x00\x00\x00\x1a\xfb\x04\x0a\x4c\x08\x0b\x12\x48\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\xc0\x0a\x05\x1d\x00\x00\x00\x40\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x80\xc0\x0a\x05\x1d\x00\x00\x80\x40\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\xc1\x0a\x05\x1d\x00\x00\x00\x41\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x80\xc1\x0a\x05\x1d\x00\x00\x80\x41\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x25\x08\x09\x12\x21\x0a\x09\x21\x41\x01\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x32\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x4a\x01\x00\x00\x00\x00\x00\x00\x0a\x27\x08\x06\x12\x23\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x70\x41\x0a\x05\x1d\x00\x00\x48\x42\x0a\x05\x1d\x00\x00\xc8\x42\x0a\x05\x1d\x00\x00\x48\x43\x0a\x20\x08\x07\x12\x1c\x0a\x05\x1d\x23\xdb\x79\x3d\x0a\x05\x1d\x91\x0f\xfa\x3d\x0a\x05\x1d\x5a\xf5\x79\x3e\x0a\x05\x1d\x75\x02\xfa\x3e\x0a\x25\x08\x0c\x12\x21\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x18\x08\x05\x12\x14\x0a\x12\x12\x10\x73\x6e\x73\x5f\x61\x63\x63\x65\x6c\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0e\x08\x02\x12\x0a\x0a\x08\x12\x06\x61\x63\x63\x65\x6c\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x04\x01\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x10\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x06\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x11\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x49\x43\x4d\x32\x30\x36\x30\x30\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x5a\xf5\x79\x3e\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\xc1\x0a\x05\x1d\x00\x00\x00\x41", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 698 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=539043255}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 8, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=539386328}) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 12, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x03\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x11\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=541258099}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x03\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=551715704}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x03\x00\x22\x00\x09\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xfb\x01\xf9\x01\x0a\x12\x09\x11\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47\x12\xe2\x03\x0d\x80\x00\x00\x00\x11\xdd\xc4\x6c\x29\x01\x00\x00\x00\x1a\xd1\x03\x0a\x16\x08\x02\x12\x12\x0a\x10\x12\x0e\x61\x6d\x62\x69\x65\x6e\x74\x5f\x6c\x69\x67\x68\x74\x00\x0a\x0b\x08\x07\x12\x07\x0a\x05\x1d\x71\x3d\x0a\x3f\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x80\x45\x0a\x20\x08\x06\x12\x1c\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x70\x41\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x5a\x00\x00\x00\x00\x00\x00\x00\x0a\x25\x08\x0c\x12\x21\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x20\x08\x05\x12\x1c\x0a\x1a\x12\x18\x73\x6e\x73\x5f\x61\x6d\x62\x69\x65\x6e\x74\x5f\x6c\x69\x67\x68\x74\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x18\x08\x00\x12\x14\x0a\x12\x12\x10\x73\x74\x6b\x5f\x73\x74\x6b\x33\x78\x31\x78\x5f\x61\x6c\x73\x00\x0a\x12\x08\x01\x12\x0e\x0a\x0c\x12\x0a\x73\x65\x6e\x73\x6f\x72\x74\x65\x6b\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x38\x01\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x0c\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x71\x3d\x0a\x3f\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x80\x45", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 528 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=552187058}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 16, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=552681589}) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x04\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x47\x59\x52\x4f\x5f\x30\x30\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 20, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=554110548}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x04\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=561057059}) = 0 [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] recvfrom(12, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... recvfrom resumed> "\x04\x04\x00\x22\x00\xb1\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xa3\x02\xa1\x02\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x47\x59\x52\x4f\x5f\x30\x30\x12\x8a\x05\x0d\x80\x00\x00\x00\x11\xcd\xa2\x70\x29\x01\x00\x00\x00\x1a\xf9\x04\x0a\x4c\x08\x0b\x12\x48\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x7a\xc3\x0a\x05\x1d\x00\x00\x7a\x43\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\xfa\xc3\x0a\x05\x1d\x00\x00\xfa\x43\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x7a\xc4\x0a\x05\x1d\x00\x00\x7a\x44\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\xfa\xc4\x0a\x05\x1d\x00\x00\xfa\x44\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x25\x08\x09\x12\x21\x0a\x09\x21\xf6\x09\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x78\x05\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x54\x0b\x00\x00\x00\x00\x00\x00\x0a\x27\x08\x06\x12\x23\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x70\x41\x0a\x05\x1d\x00\x00\x48\x42\x0a\x05\x1d\x00\x00\xc8\x42\x0a\x05\x1d\x00\x00\x48\x43\x0a\x20\x08\x07\x12\x1c\x0a\x05\x1d\x14\x05\xfa\x3b\x0a\x05\x1d\x14\x05\x7a\x3c\x0a\x05\x1d\x14\x05\xfa\x3c\x0a\x05\x1d\x14\x05\x7a\x3d\x0a\x25\x08\x0c\x12\x21\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x17\x08\x05\x12\x13\x0a\x11\x12\x0f\x73\x6e\x73\x5f\x67\x79\x72\x6f\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0d\x08\x02\x12\x09\x0a\x07\x12\x05\x67\x79\x72\x6f\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x04\x01\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x10\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x06\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x11\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x49\x43\x4d\x32\x30\x36\x30\x30\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x14\x05\x7a\x3d\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\xfa\xc4\x0a\x05\x1d\x00\x00\xfa\x44", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 696 [pid 4602] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=561842892}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=562341851}) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 24, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] sendto(12, "\x00\x05\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x9c\xc8\x2e\x54\x18\x2c\x41\x8b\x11\x9e\x44\xaa\x87\x79\xb9\x02\xb7\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... sendto resumed> ) = 53 [pid 4601] <... futex resumed> ) = 0 [pid 4587] futex(0x757905edec, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=564016018}, FUTEX_BITSET_MATCH_ANY [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 28, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x05\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905edec, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905ee28, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Try again) [pid 4602] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x757905ee28, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=568834508}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x05\x00\x22\x00\xf0\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xe2\x00\xe0\x00\x0a\x12\x09\x9c\xc8\x2e\x54\x18\x2c\x41\x8b\x11\x9e\x44\xaa\x87\x79\xb9\x02\xb7\x12\xc9\x01\x0d\x80\x00\x00\x00\x11\xa4\x1e\x73\x29\x01\x00\x00\x00\x1a\xb8\x01\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x67\x79\x72\x6f\x5f\x63\x61\x6c\x00\x0a\x11\x08\x02\x12\x0d\x0a\x0b\x12\x09\x67\x79\x72\x6f\x5f\x63\x61\x6c\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1b\x08\x05\x12\x17\x0a\x15\x12\x13\x73\x6e\x73\x5f\x67\x79\x72\x6f\x5f\x63\x61\x6c\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x27\x01\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x20\x41\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 247 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=569473414}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=569683518}) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 36, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x06\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x41\x42\x43\x44\x45\x46\x47\x48\x11\x90\x7b\xa6\xff\x6a\xd3\xdb\xb1\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d64c, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=572343883}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x06\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d64c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=577739925}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x06\x00\x22\x00\xf7\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xe9\x00\xe7\x00\x0a\x12\x09\x41\x42\x43\x44\x45\x46\x47\x48\x11\x90\x7b\xa6\xff\x6a\xd3\xdb\xb1\x12\xd0\x01\x0d\x80\x00\x00\x00\x11\x4e\xe9\x75\x29\x01\x00\x00\x00\x1a\xbf\x01\x0a\x16\x08\x00\x12\x12\x0a\x10\x12\x0e\x73\x6e\x73\x5f\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x00\x0a\x12\x08\x02\x12\x0e\x0a\x0c\x12\x0a\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1c\x08\x05\x12\x18\x0a\x16\x12\x14\x73\x6e\x73\x5f\x67\x65\x6f\x6d\x61\x67\x5f\x72\x76\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\xc8\x42\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x1a\x04\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 254 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=578301384}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=578922738}) = 0 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 40, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x07\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x54\x45\x4d\x50\x5f\x30\x30\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=580229092}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x07\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=591889406}) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] recvfrom(12, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... recvfrom resumed> "\x04\x07\x00\x22\x00\x62\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x54\x02\x52\x02\x0a\x12\x09\x49\x43\x4d\x32\x30\x36\x58\x58\x11\x5f\x54\x45\x4d\x50\x5f\x30\x30\x12\xbb\x04\x0d\x80\x00\x00\x00\x11\x7c\x2e\x78\x29\x01\x00\x00\x00\x1a\xaa\x04\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x20\xc2\x0a\x05\x1d\x00\x00\xaa\x42\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x25\x08\x09\x12\x21\x0a\x09\x21\x41\x01\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x32\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x4a\x01\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x0b\x08\x07\x12\x07\x0a\x05\x1d\x48\x8a\x48\x3b\x0a\x25\x08\x0c\x12\x21\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x25\x08\x05\x12\x21\x0a\x1f\x12\x1d\x73\x6e\x73\x5f\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x1b\x08\x02\x12\x17\x0a\x15\x12\x13\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x04\x01\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x06\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x11\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x16\x12\x0b\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x48\x8a\x48\x3b\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x20\xc2\x0a\x05\x1d\x00\x00\xaa\x42\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x49\x43\x4d\x32\x30\x36\x30\x30\x00\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 617 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=592636541}) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=592836385}) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x08\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x02\x68\x2a\x93\x17\xbc\x4d\xad\x11\xbb\xe8\xfe\x1d\x2e\xe1\xd2\x2b\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 48, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=594304614}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x08\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=605952063}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x08\x00\x22\x00\x30\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x22\x02\x20\x02\x0a\x12\x09\x02\x68\x2a\x93\x17\xbc\x4d\xad\x11\xbb\xe8\xfe\x1d\x2e\xe1\xd2\x2b\x12\x89\x04\x0d\x80\x00\x00\x00\x11\xbc\x5f\x7c\x29\x01\x00\x00\x00\x1a\xf8\x03\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x20\xc2\x0a\x05\x1d\x00\x00\xaa\x42\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x1a\x08\x09\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x45\x01\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x0b\x08\x07\x12\x07\x0a\x05\x1d\x0a\xd7\x23\x3c\x0a\x17\x08\x0c\x12\x13\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x25\x08\x05\x12\x21\x0a\x1f\x12\x1d\x73\x6e\x73\x5f\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x15\x08\x00\x12\x11\x0a\x0f\x12\x0d\x62\x6f\x73\x63\x68\x5f\x62\x6d\x70\x32\x38\x35\x00\x0a\x1b\x08\x02\x12\x17\x0a\x15\x12\x13\x73\x65\x6e\x73\x6f\x72\x5f\x74\x65\x6d\x70\x65\x72\x61\x74\x75\x72\x65\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x0e\x08\x01\x12\x0a\x0a\x08\x12\x06\x42\x6f\x73\x63\x68\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x18\x22\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x07\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 567 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=606689980}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=607584564}) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 56, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] sendto(12, "\x00\x09\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xab\x76\xb0\x4e\x4b\x1e\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=610028574}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x09\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=622220398}) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... recvfrom resumed> "\x04\x09\x00\x22\x00\xf3\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xe5\x00\xe3\x00\x0a\x12\x09\xab\x76\xb0\x4e\x4b\x1e\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33\x12\xcc\x01\x0d\x80\x00\x00\x00\x11\x00\xed\x80\x29\x01\x00\x00\x00\x1a\xbb\x01\x0a\x1b\x08\x00\x12\x17\x0a\x15\x12\x13\x44\x65\x76\x69\x63\x65\x20\x4f\x72\x69\x65\x6e\x74\x61\x74\x69\x6f\x6e\x00\x0a\x16\x08\x02\x12\x12\x0a\x10\x12\x0e\x64\x65\x76\x69\x63\x65\x5f\x6f\x72\x69\x65\x6e\x74\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x20\x08\x05\x12\x1c\x0a\x1a\x12\x18\x73\x6e\x73\x5f\x64\x65\x76\x69\x63\x65\x5f\x6f\x72\x69\x65\x6e\x74\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x19\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xa0\x41\x0a\x05\x1d\x00\x00\xa0\x41\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 250 [pid 4587] <... futex resumed> ) = 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 60, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=624137169}) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=624127846}) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] sendto(12, "\x00\x0a\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x4c\xd4\x45\x7c\x66\x7d\x11\xe7\x11\x90\x7b\xa6\x00\x6a\xd3\xdb\xa0\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 53 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=626551076}, FUTEX_BITSET_MATCH_ANY [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Try again) [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 64, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0a\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=632543629}) = 0 [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] recvfrom(12, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... recvfrom resumed> "\x04\x0a\x00\x22\x00\xfa\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xec\x00\xea\x00\x0a\x12\x09\x4c\xd4\x45\x7c\x66\x7d\x11\xe7\x11\x90\x7b\xa6\x00\x6a\xd3\xdb\xa0\x12\xd3\x01\x0d\x80\x00\x00\x00\x11\x80\xa9\x85\x29\x01\x00\x00\x00\x1a\xc2\x01\x0a\x18\x08\x00\x12\x14\x0a\x12\x12\x10\x52\x6f\x74\x61\x74\x69\x6f\x6e\x20\x56\x65\x63\x74\x6f\x72\x00\x0a\x0d\x08\x02\x12\x09\x0a\x07\x12\x05\x72\x6f\x74\x76\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x17\x08\x05\x12\x13\x0a\x11\x12\x0f\x73\x6e\x73\x5f\x72\x6f\x74\x76\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x48\x43\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x1a\x08\x09\x12\x16\x0a\x09\x21\xab\x04\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x87\x05\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 257 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=633535035}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=633543941}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] sendto(12, "\x00\x0b\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x70\x96\xd5\x32\x39\x7a\xa4\x8f\x11\x07\xa7\x9c\x6e\x57\x34\xc5\xc6\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... sendto resumed> ) = 53 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=635062275}, FUTEX_BITSET_MATCH_ANY [pid 4601] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 72, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0b\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Try again) [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d070, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=640816911}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x0b\x00\x22\x00\xd9\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xcb\x00\xc9\x00\x0a\x12\x09\x70\x96\xd5\x32\x39\x7a\xa4\x8f\x11\x07\xa7\x9c\x6e\x57\x34\xc5\xc6\x12\xb2\x01\x0d\x80\x00\x00\x00\x11\xff\xe5\x87\x29\x01\x00\x00\x00\x1a\xa1\x01\x0a\x10\x08\x00\x12\x0c\x0a\x0a\x12\x08\x6d\x61\x67\x5f\x63\x61\x6c\x00\x0a\x10\x08\x02\x12\x0c\x0a\x0a\x12\x08\x6d\x61\x67\x5f\x63\x61\x6c\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1a\x08\x05\x12\x16\x0a\x14\x12\x12\x73\x6e\x73\x5f\x6d\x61\x67\x5f\x63\x61\x6c\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x9d\x03\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 224 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=641226494}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=641447952}) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 80, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0c\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x52\x4f\x48\x4d\x20\x48\x41\x4c\x11\x4c\x20\x35\x32\x30\x35\x33\x00\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=642617848}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0c\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d070, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=652628474}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x0c\x00\x22\x00\x59\x01\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x4b\x01\x49\x01\x0a\x12\x09\x52\x4f\x48\x4d\x20\x48\x41\x4c\x11\x4c\x20\x35\x32\x30\x35\x33\x00\x12\xb2\x02\x0d\x80\x00\x00\x00\x11\x26\x2a\x8a\x29\x01\x00\x00\x00\x1a\xa1\x02\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x05\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x0c\x12\x0e\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x17\x08\x05\x12\x13\x0a\x11\x12\x0f\x73\x6e\x73\x5f\x68\x61\x6c\x6c\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x13\x08\x00\x12\x0f\x0a\x0d\x12\x0b\x62\x75\x35\x32\x30\x35\x33\x6e\x76\x78\x00\x0a\x0d\x08\x02\x12\x09\x0a\x07\x12\x05\x68\x61\x6c\x6c\x00\x0a\x0d\x08\x01\x12\x09\x0a\x07\x12\x05\x52\x4f\x48\x4d\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x05\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x04\x00\x00\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 352 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=653203422}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=653305089}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] mmap(0x7589063000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 84, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... mmap resumed> ) = 0x7589063000 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4602] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7589063000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79" [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0d\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x39\x4b\x65\x4c\x41\xa4\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] <... prctl resumed> ) = 0 [pid 4587] <... sendto resumed> ) = 53 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=654873266}, FUTEX_BITSET_MATCH_ANY [pid 4601] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 88, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0d\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] recvfrom(12, "\x04\x0d\x00\x22\x00\xe9\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xdb\x00\xd9\x00\x0a\x12\x09\x39\x4b\x65\x4c\x41\xa4\x11\xe7\x11\xa9\x19\x92\xeb\xcb\x67\xfe\x33\x12\xc2\x01\x0d\x80\x00\x00\x00\x11\xfd\x1a\x8e\x29\x01\x00\x00\x00\x1a\xb1\x01\x0a\x23\x08\x00\x12\x1f\x0a\x1d\x12\x1b\x50\x65\x72\x73\x69\x73\x74\x65\x6e\x74\x20\x4d\x6f\x74\x69\x6f\x6e\x20\x44\x65\x74\x65\x63\x74\x6f\x72\x00\x0a\x0d\x08\x02\x12\x09\x0a\x07\x12\x05\x70\x73\x6d\x64\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x17\x08\x05\x12\x13\x0a\x11\x12\x0f\x73\x6e\x73\x5f\x70\x73\x6d\x64\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x19\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x20\x41\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 240 [pid 4602] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=666678267}) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=666684153}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=668178268}) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] sendto(12, "\x00\x0e\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x2e\xf5\x5b\xf6\xc0\x98\x43\xa7\x11\xa5\xa6\x50\x68\x2d\x5a\xd4\xc5\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 96, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=669669101}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0e\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=682231550}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x0e\x00\x22\x00\x10\x01\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x02\x01\x00\x01\x0a\x12\x09\x2e\xf5\x5b\xf6\xc0\x98\x43\xa7\x11\xa5\xa6\x50\x68\x2d\x5a\xd4\xc5\x12\xe9\x01\x0d\x80\x00\x00\x00\x11\x15\x75\x92\x29\x01\x00\x00\x00\x1a\xd8\x01\x0a\x10\x08\x00\x12\x0c\x0a\x0a\x12\x08\x67\x72\x61\x76\x69\x74\x79\x00\x0a\x10\x08\x02\x12\x0c\x0a\x0a\x12\x08\x67\x72\x61\x76\x69\x74\x79\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1a\x08\x05\x12\x16\x0a\x14\x12\x12\x71\x74\x69\x5f\x67\x72\x61\x76\x69\x74\x79\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x48\x43\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x1a\x08\x09\x12\x16\x0a\x09\x21\x27\x01\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x03\x02\x00\x00\x00\x00\x00\x00\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x76\xfd\x1c\xc3\x0a\x05\x1d\x76\xfd\x1c\x43\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 279 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=683215977}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 100, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=683869207}) = 0 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x0f\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xb1\x0c\xd5\xe4\x0d\xe4\x4e\x5c\x11\xa3\x64\xba\xbb\x95\x29\x57\x00\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 104, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=685639676}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x0f\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4587] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=698731239}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x0f\x00\x22\x00\x42\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x34\x02\x32\x02\x0a\x12\x09\xb1\x0c\xd5\xe4\x0d\xe4\x4e\x5c\x11\xa3\x64\xba\xbb\x95\x29\x57\x00\x12\x9b\x04\x0d\x80\x00\x00\x00\x11\xe8\x2d\x97\x29\x01\x00\x00\x00\x1a\x8a\x04\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x96\x43\x0a\x05\x1d\x00\x80\x89\x44\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x96\x43\x0a\x05\x1d\x00\x80\x89\x44\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x1a\x08\x09\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\xd0\x02\x00\x00\x00\x00\x00\x00\x0a\x20\x08\x06\x12\x1c\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\xc8\x41\x0a\x0b\x08\x07\x12\x07\x0a\x05\x1d\x17\xb7\xd1\x3a\x0a\x17\x08\x0c\x12\x13\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x1b\x08\x05\x12\x17\x0a\x15\x12\x13\x73\x6e\x73\x5f\x70\x72\x65\x73\x73\x75\x72\x65\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x15\x08\x00\x12\x11\x0a\x0f\x12\x0d\x62\x6f\x73\x63\x68\x5f\x62\x6d\x70\x32\x38\x35\x00\x0a\x11\x08\x02\x12\x0d\x0a\x0b\x12\x09\x70\x72\x65\x73\x73\x75\x72\x65\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x0e\x08\x01\x12\x0a\x0a\x08\x12\x06\x42\x6f\x73\x63\x68\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x18\x22\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x07\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 585 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=699887594}) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 108, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=700303948}) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] sendto(12, "\x00\x10\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xff\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] <... futex resumed> ) = 1 [pid 4587] <... sendto resumed> ) = 53 [pid 4601] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=701775146}, FUTEX_BITSET_MATCH_ANY [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 112, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x10\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=707933636}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x10\x00\x22\x00\xd9\x01\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xcb\x01\xc9\x01\x0a\x12\x09\xff\x14\x9a\x2a\xac\x2e\x46\x2a\x11\x96\x6a\x5f\x14\xea\xec\x95\x47\x12\xb2\x03\x0d\x80\x00\x00\x00\x11\x02\xd4\x9b\x29\x01\x00\x00\x00\x1a\xa1\x03\x0a\x12\x08\x02\x12\x0e\x0a\x0c\x12\x0a\x70\x72\x6f\x78\x69\x6d\x69\x74\x79\x00\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x20\x08\x06\x12\x1c\x0a\x05\x1d\x00\x00\x80\x3f\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x70\x41\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x64\x00\x00\x00\x00\x00\x00\x00\x0a\x25\x08\x0c\x12\x21\x0a\x06\x12\x04\x4c\x50\x4d\x00\x0a\x09\x12\x07\x4e\x4f\x52\x4d\x41\x4c\x00\x0a\x0c\x12\x0a\x48\x49\x47\x48\x5f\x50\x45\x52\x46\x00\x0a\x1c\x08\x05\x12\x18\x0a\x16\x12\x14\x73\x6e\x73\x5f\x70\x72\x6f\x78\x69\x6d\x69\x74\x79\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x19\x08\x00\x12\x15\x0a\x13\x12\x11\x73\x74\x6b\x5f\x73\x74\x6b\x33\x78\x31\x78\x5f\x70\x72\x6f\x78\x00\x0a\x12\x08\x01\x12\x0e\x0a\x0c\x12\x0a\x73\x65\x6e\x73\x6f\x72\x74\x65\x6b\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x38\x01\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x16\x12\x0b\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x00\x00\x00\x00\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\xa0\x40", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 480 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=708333428}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=708569938}) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 116, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 120, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] sendto(12, "\x00\x11\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x93\x97\x87\x47\x14\xaa\xbb\xcc\x11\xdd\xee\xff\x14\x47\x87\x97\x93\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=710011918}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x11\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=722219106}) = 0 [pid 4602] <... recvfrom resumed> "\x04\x11\x00\x22\x00\xd7\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xc9\x00\xc7\x00\x0a\x12\x09\x93\x97\x87\x47\x14\xaa\xbb\xcc\x11\xdd\xee\xff\x14\x47\x87\x97\x93\x12\xb0\x01\x0d\x80\x00\x00\x00\x11\xbb\x30\x9e\x29\x01\x00\x00\x00\x1a\x9f\x01\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x73\x6e\x73\x5f\x74\x69\x6c\x74\x00\x0a\x0d\x08\x02\x12\x09\x0a\x07\x12\x05\x74\x69\x6c\x74\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x17\x08\x05\x12\x13\x0a\x11\x12\x0f\x73\x6e\x73\x5f\x74\x69\x6c\x74\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x19\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x20\x41", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 222 [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=722735721}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=723130461}) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 128, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x12\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xf1\x94\xe9\xe3\x98\x4b\xb0\x89\x11\xda\x43\xde\x35\xd0\x55\x5c\x98\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=724822075}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x12\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=736193535}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4602] <... recvfrom resumed> "\x04\x12\x00\x22\x00\x05\x01\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xf7\x00\xf5\x00\x0a\x12\x09\xf1\x94\xe9\xe3\x98\x4b\xb0\x89\x11\xda\x43\xde\x35\xd0\x55\x5c\x98\x12\xde\x01\x0d\x80\x00\x00\x00\x11\xb7\x9f\xa2\x29\x01\x00\x00\x00\x1a\xcd\x01\x0a\x1d\x08\x00\x12\x19\x0a\x17\x12\x15\x47\x61\x6d\x65\x20\x52\x6f\x74\x61\x74\x69\x6f\x6e\x20\x56\x65\x63\x74\x6f\x72\x00\x0a\x10\x08\x02\x12\x0c\x0a\x0a\x12\x08\x67\x61\x6d\x65\x5f\x72\x76\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1a\x08\x05\x12\x16\x0a\x14\x12\x12\x73\x6e\x73\x5f\x67\x61\x6d\x65\x5f\x72\x76\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x48\x43\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x1a\x08\x09\x12\x16\x0a\x09\x21\x27\x01\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x03\x02\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 268 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=737113691}) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=737252754}) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] <... futex resumed> ) = 0 [pid 4587] sendto(12, "\x00\x13\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xba\x7b\xfc\x77\xc3\x11\x3b\xb1\x11\xf4\xbb\x1b\xa6\x1a\xb0\x4f\x3b\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=738508743}, FUTEX_BITSET_MATCH_ANY [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 136, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x13\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=745903640}) = 0 [pid 4602] <... recvfrom resumed> "\x04\x13\x00\x22\x00\xe2\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xd4\x00\xd2\x00\x0a\x12\x09\xba\x7b\xfc\x77\xc3\x11\x3b\xb1\x11\xf4\xbb\x1b\xa6\x1a\xb0\x4f\x3b\x12\xbb\x01\x0d\x80\x00\x00\x00\x11\xfd\x90\xa6\x29\x01\x00\x00\x00\x1a\xaa\x01\x0a\x10\x08\x00\x12\x0c\x0a\x0a\x12\x08\x73\x6e\x73\x5f\x73\x6d\x64\x00\x0a\x13\x08\x02\x12\x0f\x0a\x0d\x12\x0b\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1d\x08\x05\x12\x19\x0a\x17\x12\x15\x73\x6e\x73\x5f\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x02\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x19\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x20\x41\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 233 [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=746517755}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4601] <... futex resumed> ) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=746941452}) = 0 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 140, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x14\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x5b\x79\x1d\xb7\x69\x08\x45\xac\x11\xb0\x48\x90\xc9\x17\xa5\xbb\x64\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 144, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=748453484}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x14\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d070, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] futex(0x757905d070, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=765498381}) = 0 [pid 4602] recvfrom(12, [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] <... recvfrom resumed> "\x04\x14\x00\x22\x00\x3a\x02\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\x2c\x02\x2a\x02\x0a\x12\x09\x5b\x79\x1d\xb7\x69\x08\x45\xac\x11\xb0\x48\x90\xc9\x17\xa5\xbb\x64\x12\x93\x04\x0d\x80\x00\x00\x00\x11\x7e\x5f\xaa\x29\x01\x00\x00\x00\x1a\x82\x04\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x16\x08\x05\x12\x12\x0a\x10\x12\x0e\x73\x6e\x73\x5f\x6d\x61\x67\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x11\x08\x00\x12\x0d\x0a\x0b\x12\x09\x6d\x6d\x63\x35\x36\x30\x33\x78\x00\x0a\x0c\x08\x02\x12\x08\x0a\x06\x12\x04\x6d\x61\x67\x00\x0a\x0f\x08\x01\x12\x0b\x0a\x09\x12\x07\x6d\x65\x6d\x73\x69\x63\x00\x0a\x08\x08\x11\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x74\x6b\x9a\x00\x00\x00\x00\x00\x0a\x0f\x08\x0f\x12\x0b\x0a\x09\x21\x11\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x15\x12\x04\x0a\x02\x28\x01\x0a\x1a\x08\x16\x12\x16\x0a\x09\x21\x03\x00\x00\x00\x00\x00\x00\x00\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x08\x08\x0d\x12\x04\x0a\x02\x28\x00\x0a\x08\x08\x0e\x12\x04\x0a\x02\x28\x00\x0a\x0f\x08\x12\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x58\x08\x14\x12\x54\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x05\x1d\x00\x00\x00\x00\x0a\x0f\x08\x13\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x16\x08\x0b\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x80\x3b\xc5\x0a\x05\x1d\x00\x80\x3b\x45\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\xe8\x03\x00\x00\x00\x00\x00\x00\x0a\x2e\x08\x06\x12\x2a\x0a\x05\x1d\x00\x00\xa0\x40\x0a\x05\x1d\x00\x00\x20\x41\x0a\x05\x1d\x00\x00\x70\x41\x0a\x05\x1d\x00\x00\xc8\x41\x0a\x05\x1d\x00\x00\x48\x42\x0a\x05\x1d\x00\x00\xc8\x42\x0a\x0b\x08\x07\x12\x07\x0a\x05\x1d\x82\xe2\xc7\x3d\x0a\x0c\x08\x0c\x12\x08\x0a\x06\x12\x04\x4e\x4f\x52\x4d\x0a\x0f\x08\x08\x12\x0b\x0a\x09\x21\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x0a\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0b\x08\x17\x12\x07\x0a\x05\x1d\x82\xe2\xc7\x3d\x0a\x16\x08\x18\x12\x12\x0a\x10\x0a\x0e\x0a\x05\x1d\x00\x80\x3b\xc5\x0a\x05\x1d\x00\x80\x3b\x45\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 577 [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=766106402}) = 0 [pid 4587] <... futex resumed> ) = 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4601] <... futex resumed> ) = 0 [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=766683694}) = 0 [pid 4602] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1 [pid 4587] rt_sigprocmask(0xd1914480 /* SIG_??? */, NULL, [pid 4602] <... futex resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(0xd1914490 /* SIG_??? */, NULL, [pid 4601] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4587] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4601] futex(0x75c905b208, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4587] rt_sigprocmask(0xd1914470 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4587] sendto(12, "\x00\x15\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\x85\xd9\xe1\x72\xb2\x49\xf2\x57\x11\xf7\xda\x5b\x0c\x4f\xb0\x7e\xf6\x15\x01\x00\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x12\x02\x10\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 148, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... sendto resumed> ) = 53 [pid 4587] futex(0x757905d0ac, FUTEX_WAIT_BITSET_PRIVATE, 2, {tv_sec=248, tv_nsec=769191871}, FUTEX_BITSET_MATCH_ANY [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4602] recvfrom(12, "\x02\x15\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4602] rt_sigprocmask(0x46e589f0 /* SIG_??? */, NULL, [RTMIN], 8) = 0 [pid 4602] futex(0x757905d0ac, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x757905d0e8, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x757905d0e8, FUTEX_WAKE_PRIVATE, 1 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=12, revents=POLLIN}]) [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4602] recvfrom(12, [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=774311039}) = 0 [pid 4602] <... recvfrom resumed> "\x04\x15\x00\x22\x00\xe2\x00\x01\x08\x00\x14\x00\x00\x00\x00\x00\x00\x00\x02\xd4\x00\xd2\x00\x0a\x12\x09\x85\xd9\xe1\x72\xb2\x49\xf2\x57\x11\xf7\xda\x5b\x0c\x4f\xb0\x7e\xf6\x12\xbb\x01\x0d\x80\x00\x00\x00\x11\xcc\x53\xaf\x29\x01\x00\x00\x00\x1a\xaa\x01\x0a\x12\x08\x00\x12\x0e\x0a\x0c\x12\x0a\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x00\x0a\x12\x08\x02\x12\x0e\x0a\x0c\x12\x0a\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x00\x0a\x11\x08\x01\x12\x0d\x0a\x0b\x12\x09\x71\x75\x61\x6c\x63\x6f\x6d\x6d\x00\x0a\x1c\x08\x05\x12\x18\x0a\x16\x12\x14\x73\x6e\x73\x5f\x70\x65\x64\x6f\x6d\x65\x74\x65\x72\x2e\x70\x72\x6f\x74\x6f\x00\x0a\x08\x08\x03\x12\x04\x0a\x02\x28\x01\x0a\x0f\x08\x04\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x10\x12\x0b\x0a\x09\x21\x01\x00\x00\x00\x00\x00\x00\x00\x0a\x0f\x08\x09\x12\x0b\x0a\x09\x21\x96\x00\x00\x00\x00\x00\x00\x00\x0a\x12\x08\x06\x12\x0e\x0a\x05\x1d\x00\x00\xc8\x41\x0a\x05\x1d\x00\x00\xc8\x41", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 233 [pid 4587] timer_settime(3, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, [pid 4602] clock_gettime(CLOCK_BOOTTIME, [pid 4587] <... timer_settime resumed> NULL) = 0 [pid 4602] <... clock_gettime resumed> {tv_sec=246, tv_nsec=774772237}) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1 [pid 4602] rt_sigprocmask(0x46e588b0 /* SIG_??? */, NULL, [pid 4587] <... futex resumed> ) = 1 [pid 4602] <... rt_sigprocmask resumed> [RTMIN], 8) = 0 [pid 4587] clock_nanosleep(CLOCK_MONOTONIC, 0, {tv_sec=0, tv_nsec=30000000}, [pid 4602] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4602] ppoll([{fd=13, events=POLLIN}, {fd=12, events=POLLIN}], 2, NULL, NULL, 0 [pid 4601] <... futex resumed> ) = 0 [pid 4601] futex(0x75c905b230, FUTEX_WAIT_BITSET_PRIVATE, 156, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... clock_nanosleep resumed> NULL) = 0 [pid 4587] timer_delete(3) = 0 [pid 4587] tgkill(4587, 4603, SIGRTMIN) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, [pid 4603] <... rt_sigtimedwait resumed> {si_signo=SIGRTMIN, si_code=SI_TKILL, si_pid=4587, si_uid=0}, NULL, 8) = 32 (SIGRTMIN) [pid 4587] <... clock_gettime resumed> {tv_sec=246, tv_nsec=814511303}) = 0 [pid 4603] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, NULL) = 0 [pid 4587] write(14, "\x64", 1) = 1 [pid 4603] munmap(0x76deb54000, 36864 [pid 4602] <... ppoll resumed> ) = 1 ([{fd=13, revents=POLLIN}]) [pid 4587] futex(0x7fd1914adc, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4603] <... munmap resumed> ) = 0 [pid 4603] rt_sigprocmask(SIG_BLOCK, ~[], NULL, 8) = 0 [pid 4603] munmap(0x7444c63000, 16777216 [pid 4602] read(13, [pid 4603] <... munmap resumed> ) = 0 [pid 4602] <... read resumed> "\x64", 1) = 1 [pid 4603] set_tid_address(0 [pid 4602] close(13 [pid 4603] <... set_tid_address resumed> ) = 4603 [pid 4602] <... close resumed> ) = 0 [pid 4603] munmap(0x7445c63000, 1036288) = 0 [pid 4603] exit(0 [pid 4602] close(14 [pid 4603] <... exit resumed>) = ? [pid 4602] <... close resumed> ) = 0 [pid 4602] close(12 [pid 4603] +++ exited with 0 +++ [pid 4602] <... close resumed> ) = 0 [pid 4602] futex(0x7fd1914adc, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = 0 [pid 4602] <... futex resumed> ) = 1 [pid 4587] futex(0x7fd1914b18, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4602] futex(0x7fd1914b18, FUTEX_WAKE_PRIVATE, 1 [pid 4587] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4602] <... futex resumed> ) = 0 [pid 4587] futex(0x7fd1914b18, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4602] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=820610783}) = 0 [pid 4602] <... sigaltstack resumed> NULL) = 0 [pid 4587] futex(0x75c905b230, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4602] munmap(0x76deb5d000, 36864 [pid 4587] futex(0x7449052d10, FUTEX_WAIT, 4601, NULL [pid 4602] <... munmap resumed> ) = 0 [pid 4601] <... futex resumed> ) = 0 [pid 4602] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4601] sigaltstack({ss_sp=NULL, ss_flags=SS_DISABLE, ss_size=0}, [pid 4602] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4601] <... sigaltstack resumed> NULL) = 0 [pid 4602] munmap(0x7445d60000, 16777216 [pid 4601] munmap(0x76deb6f000, 36864 [pid 4602] <... munmap resumed> ) = 0 [pid 4601] <... munmap resumed> ) = 0 [pid 4602] set_tid_address(0 [pid 4601] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4602] <... set_tid_address resumed> ) = 4602 [pid 4601] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4602] munmap(0x7446d60000, 1036288 [pid 4601] munmap(0x7447f5a000, 16777216 [pid 4602] <... munmap resumed> ) = 0 [pid 4601] <... munmap resumed> ) = 0 [pid 4602] exit(0 [pid 4601] exit(0 [pid 4602] <... exit resumed>) = ? [pid 4601] <... exit resumed>) = ? [pid 4587] <... futex resumed> ) = 0 [pid 4602] +++ exited with 0 +++ [pid 4587] munmap(0x7448f5a000, 1036288 [pid 4601] +++ exited with 0 +++ [pid 4587] <... munmap resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x73\x6c\x70\x69\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 12 [pid 4587] fstat(12, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 [pid 4587] mmap(NULL, 131072, PROT_READ, MAP_SHARED, 12, 0) = 0x76deb46000 [pid 4587] close(12) = 0 [pid 4587] close(11) = 0 [pid 4587] lseek(10, 0, SEEK_CUR) = 175 [pid 4587] lseek(10, 175, SEEK_SET) = 175 [pid 4587] close(10) = 0 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ) = 0 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x73\x79\x73\x2f\x70\x6f\x77\x65\x72\x2f\x77\x61\x6b\x65\x5f\x6c\x6f\x63\x6b", O_RDWR|O_CLOEXEC) = 10 [pid 4587] openat(AT_FDCWD, "\x2f\x73\x79\x73\x2f\x70\x6f\x77\x65\x72\x2f\x77\x61\x6b\x65\x5f\x75\x6e\x6c\x6f\x63\x6b", O_RDWR|O_CLOEXEC) = 11 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=828656304}) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x64\x69\x61\x67", O_RDWR|O_CLOEXEC) = 12 [pid 4587] rt_sigprocmask(SIG_BLOCK, [USR2 RTMIN], [RTMIN], 8) = 0 [pid 4587] mmap(0x75e9064000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x75e9064000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75e9064000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] mmap(0x7689066000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7689066000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7689066000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] mmap(0x7649061000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7649061000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7649061000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7448f5a000 [pid 4587] mprotect(0x7448f5b000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4604 attached child_stack=0x7449052cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7449052d10, tls=0x7449053010, child_tidptr=0x7449052d10) = 4604 [pid 4604] futex(0x7449052d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7449052d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4604] <... futex resumed> ) = 0 [pid 4587] ioctl(12, _IOC(_IOC_NONE, 0, 0x20, 0) [pid 4604] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7448f5b000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x34") = 0 [pid 4604] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... ioctl resumed> , 0x7fd1914be4) = 1 [pid 4604] <... mmap resumed> ) = 0x76deb6f000 [pid 4587] futex(0x76d908cd2c, FUTEX_WAKE_PRIVATE, 2147483647 [pid 4604] mprotect(0x76deb6f000, 4096, PROT_NONE [pid 4587] <... futex resumed> ) = 0 [pid 4604] <... mprotect resumed> ) = 0 [pid 4587] nanosleep({tv_sec=0, tv_nsec=1000000}, [pid 4604] sigaltstack({ss_sp=0x76deb70000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4604] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb70000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4604] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7447f5a000 [pid 4604] mprotect(0x7448076000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4587] <... nanosleep resumed> NULL) = 0 [pid 4604] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] nanosleep({tv_sec=0, tv_nsec=1000000}, [pid 4604] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4604] rt_sigaction(SIGUSR2, {sa_handler=0x76d9068fe4, sa_mask=[], sa_flags=0}, NULL, 8) = 0 [pid 4604] rt_sigprocmask(SIG_UNBLOCK, [USR2 RT_1 RT_2 RT_3 RT_4 RT_5 RT_6 RT_7 RT_8], [USR2 RTMIN], 8) = 0 [pid 4604] rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 TERM RTMIN], [RTMIN], 8) = 0 [pid 4604] read(12, [pid 4587] <... nanosleep resumed> NULL) = 0 [pid 4587] nanosleep({tv_sec=0, tv_nsec=1000000}, [pid 4604] <... read resumed> "\x01\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x00\x00\xfa\x01\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"..., 100000) = 21116 [pid 4604] read(12, "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 100000) = 517 [pid 4604] read(12, "\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\xdd\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x03\x00\x00\x00\x00\x04\x10\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x20\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x07\xff\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"..., 100000) = 1576 [pid 4604] read(12, [pid 4587] <... nanosleep resumed> NULL) = 0 [pid 4604] <... read resumed> "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 100000) = 520 [pid 4587] ioctl(12, _IOC(_IOC_NONE, 0, 0x28, 0), 0x7fd1914c40) = -1 EINVAL (Invalid argument) [pid 4604] read(12, [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7446d60000 [pid 4604] <... read resumed> "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"..., 100000) = 8232 [pid 4604] read(12, [pid 4587] mprotect(0x7446d61000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4605 attached child_stack=0x7446e58cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7446e58d10, tls=0x7446e59010, child_tidptr=0x7446e58d10) = 4605 [pid 4605] futex(0x7446e58d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7446e58d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4605] <... futex resumed> ) = 0 [pid 4605] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7446d61000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x35" [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4605] <... prctl resumed> ) = 0 [pid 4605] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb3d000 [pid 4605] mprotect(0x76deb3d000, 4096, PROT_NONE [pid 4587] <... mmap resumed> ) = 0x7446c63000 [pid 4605] <... mprotect resumed> ) = 0 [pid 4587] mprotect(0x7446c64000, 1028096, PROT_READ|PROT_WRITE [pid 4605] sigaltstack({ss_sp=0x76deb3e000, ss_flags=0, ss_size=32768}, [pid 4587] <... mprotect resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4605] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4605] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb3e000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4605] <... prctl resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4605] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4605] <... mmap resumed> ) = 0x7445c63000 [pid 4587] clone( [pid 4605] mprotect(0x7446358000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4605] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], strace: Process 4606 attached [pid 4587] <... clone resumed> child_stack=0x7446d5bcf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7446d5bd10, tls=0x7446d5c010, child_tidptr=0x7446d5bd10) = 4606 [pid 4606] futex(0x7446d5bd9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4605] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x7446d5bd9c, FUTEX_WAKE_PRIVATE, 1 [pid 4605] futex(0x75c905f858, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... futex resumed> ) = 1 [pid 4606] <... futex resumed> ) = 0 [pid 4587] mmap(0x75d9058000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0 [pid 4606] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7446c64000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x36" [pid 4587] <... mmap resumed> ) = 0x75d9058000 [pid 4606] <... prctl resumed> ) = 0 [pid 4606] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb34000 [pid 4606] mprotect(0x76deb34000, 4096, PROT_NONE) = 0 [pid 4606] sigaltstack({ss_sp=0x76deb35000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4606] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb35000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75d9058000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4606] <... prctl resumed> ) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4606] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... mmap resumed> ) = 0x7445b66000 [pid 4606] <... mmap resumed> ) = 0x7444b66000 [pid 4587] mprotect(0x7445b67000, 1028096, PROT_READ|PROT_WRITE [pid 4606] mprotect(0x744571e000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... mprotect resumed> ) = 0 [pid 4606] <... mprotect resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4606] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4606] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4606] futex(0x75c905e2c8, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4607 attached child_stack=0x7445c5ecf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7445c5ed10, tls=0x7445c5f010, child_tidptr=0x7445c5ed10) = 4607 [pid 4607] futex(0x7445c5ed9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7445c5ed9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4607] <... futex resumed> ) = 0 [pid 4607] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7445b67000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x37" [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x37\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4607] <... prctl resumed> ) = 0 [pid 4587] <... openat resumed> ) = 13 [pid 4587] write(13, "\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e", 10 [pid 4607] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... write resumed> ) = 10 [pid 4607] <... mmap resumed> ) = 0x76deb2a000 [pid 4587] close(13) = 0 [pid 4607] mprotect(0x76deb2a000, 4096, PROT_NONE) = 0 [pid 4607] sigaltstack({ss_sp=0x76deb2b000, ss_flags=0, ss_size=32768}, [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4607] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... mmap resumed> ) = 0x7444a69000 [pid 4607] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb2b000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] mprotect(0x7444a6a000, 1028096, PROT_READ|PROT_WRITE [pid 4607] <... prctl resumed> ) = 0 [pid 4587] <... mprotect resumed> ) = 0 [pid 4607] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4607] <... mmap resumed> ) = 0x7443a69000 [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4607] mprotect(0x7443b36000, 8192, PROT_READ|PROT_WRITE [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4607] <... mprotect resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [pid 4607] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4607] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] clone(strace: Process 4608 attached child_stack=0x7444b61cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7444b61d10, tls=0x7444b62010, child_tidptr=0x7444b61d10) = 4608 [pid 4608] futex(0x7444b61d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4607] futex(0x75d905a418, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x7444b61d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4608] <... futex resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x38\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC) = 13 [pid 4587] write(13, "\x6d\x6f\x74\x69\x6f\x6e\x5f\x64\x65\x74\x65\x63\x74", 13 [pid 4608] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7444a6a000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x38" [pid 4587] <... write resumed> ) = 13 [pid 4608] <... prctl resumed> ) = 0 [pid 4587] close(13 [pid 4608] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... close resumed> ) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x744396c000 [pid 4587] mprotect(0x744396d000, 1028096, PROT_READ|PROT_WRITE [pid 4608] <... mmap resumed> ) = 0x76deb21000 [pid 4587] <... mprotect resumed> ) = 0 [pid 4608] mprotect(0x76deb21000, 4096, PROT_NONE [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [pid 4608] <... mprotect resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4608] sigaltstack({ss_sp=0x76deb22000, ss_flags=0, ss_size=32768}, [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4608] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4608] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb22000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [pid 4608] <... prctl resumed> ) = 0 [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4608] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] clone( [pid 4608] <... mmap resumed> ) = 0x744296c000 [pid 4608] mprotect(0x74437b4000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... clone resumed> child_stack=0x7443a64cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7443a64d10, tls=0x7443a65010, child_tidptr=0x7443a64d10) = 4609 [pid 4608] <... mprotect resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4608] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4608] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x39\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4608] futex(0x75c9059dc8, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... openat resumed> ) = 13 [pid 4587] write(13, "\x6d\x6f\x74\x69\x6f\x6e\x5f\x64\x65\x74\x65\x63\x74", 13) = 13 [pid 4587] close(13strace: Process 4609 attached ) = 0 [pid 4609] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x744396d000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x30\x39") = 0 [pid 4609] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb18000 [pid 4609] mprotect(0x76deb18000, 4096, PROT_NONE) = 0 [pid 4609] sigaltstack({ss_sp=0x76deb19000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4609] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb19000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4609] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x744196c000 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x11\x89\xff\x02", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 4 [pid 4609] mprotect(0x74425ca000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... writev resumed> ) = 98 [pid 4609] <... mprotect resumed> ) = 0 [pid 4609] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] getuid() = 0 [pid 4609] futex(0x75c905bbf8, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] writev(5, [{iov_base="\x6c\x69\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x11\x89\xff\x02", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 5) = 105 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xe0\xf8\x1c\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 4) = 69 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x4c\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xe0\xf8\x1c\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 5) = 76 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x15\x47\x3e\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 4) = 98 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x69\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x15\x47\x3e\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 5) = 105 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x7a\xc2\x62\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 4) = 69 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x4c\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x7a\xc2\x62\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 5) = 76 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x76\xb6\x70\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 4) = 98 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x69\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x76\xb6\x70\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 5) = 105 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x1f\x79\x7c\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 4) = 69 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x4c\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x1f\x79\x7c\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 5) = 76 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x40\xc9\x98\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 4) = 98 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x69\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x40\xc9\x98\x03", iov_len=11}, {iov_base="\x06", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x70\x61\x69\x72\x65\x64\x63\x61\x6c\x73\x75\x69\x64\x3a\x38\x31\x37\x2c\x20\x6e\x6f\x20\x64\x61\x74\x61\x20\x74\x79\x70\x65\x20\x6d\x61\x70\x70\x69\x6e\x67\x20\x62\x2f\x77\x20\x6d\x61\x73\x74\x65\x72\x2f\x70\x61\x69\x72\x65\x64\x20\x30\x2f\x61\x63\x63\x65\x6c\x5f\x63\x61\x6c\x00", iov_len=74}], 5) = 105 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xd2\x3a\xa6\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 4) = 69 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x4c\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xd2\x3a\xa6\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x63\x65\x6c\x65\x72\x6f\x6d\x65\x74\x65\x72\x3a\x31\x32\x30\x2c\x20\x61\x63\x63\x65\x6c\x63\x61\x6c\x20\x69\x73\x20\x6e\x6f\x74\x20\x61\x76\x61\x69\x6c\x61\x62\x6c\x65\x00", iov_len=45}], 5) = 76 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x51\x74\xd4\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x6e\x69\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x33\x30\x31\x2c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x73\x65\x6e\x73\x6f\x72\x73\x00", iov_len=39}], 4) = 63 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x46\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x51\x74\xd4\x03", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x6e\x69\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x33\x30\x31\x2c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67\x20\x73\x65\x6e\x73\x6f\x72\x73\x00", iov_len=39}], 5) = 70 [pid 4587] mmap(0x7639065000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7639065000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7639065000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] newfstatat(AT_FDCWD, "\x73\x79\x73\x2f\x6b\x65\x72\x6e\x65\x6c\x2f\x62\x6f\x6f\x74\x5f\x73\x6c\x70\x69", 0x7fd1914d48, 0) = -1 ENOENT (No such file or directory) [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x90\xea\x18\x04", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x33\x38\x33\x2c\x20\x64\x6c\x6f\x70\x65\x6e\x28\x6c\x69\x62\x61\x64\x73\x70\x72\x70\x63\x2e\x73\x6f\x29\x00", iov_len=50}], 4) = 74 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x90\xea\x18\x04", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x33\x38\x33\x2c\x20\x64\x6c\x6f\x70\x65\x6e\x28\x6c\x69\x62\x61\x64\x73\x70\x72\x70\x63\x2e\x73\x6f\x29\x00", iov_len=50}], 5) = 81 [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] mprotect(0x76deda7000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dee8e000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76decd4000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dec70000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da60f000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76da60f000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x61\x64\x73\x70\x72\x70\x63\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 13 [pid 4587] readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x33", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x61\x64\x73\x70\x72\x70\x63\x2e\x73\x6f", 4096) = 27 [pid 4587] fstat(13, {st_mode=S_IFREG|0644, st_size=178856, ...}) = 0 [pid 4587] fstatfs(13, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 [pid 4587] pread64(13, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\xb4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x19\x00\x17\x00", 64, 0) = 64 [pid 4587] mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 13, 0) = 0x76dfeff000 [pid 4587] mmap(NULL, 3856, PROT_READ, MAP_PRIVATE, 13, 0x2b000) = 0x76ded7c000 [pid 4587] mmap(NULL, 608, PROT_READ, MAP_PRIVATE, 13, 0x2a000) = 0x76ded7a000 [pid 4587] mmap(NULL, 2030, PROT_READ, MAP_PRIVATE, 13, 0x1000) = 0x76ded79000 [pid 4587] mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x74418ed000 [pid 4587] munmap(0x74418ed000, 135168) = 0 [pid 4587] munmap(0x744193d000, 192512) = 0 [pid 4587] mmap(0x744190e000, 62508, PROT_READ, MAP_PRIVATE|MAP_FIXED, 13, 0) = 0x744190e000 [pid 4587] mmap(0x744191e000, 101280, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 13, 0x10000) = 0x744191e000 [pid 4587] mmap(0x7441937000, 5752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 13, 0x29000) = 0x7441937000 [pid 4587] mmap(0x7441939000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7441939000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7441939000, 16384, "\x2e\x62\x73\x73") = 0 [pid 4587] mprotect(0x7441938000, 4096, PROT_READ) = 0 [pid 4587] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded76000 [pid 4587] mprotect(0x74493f9000, 4096, PROT_READ) = 0 [pid 4587] mprotect(0x76ded76000, 4096, PROT_READ) = 0 [pid 4587] mremap(0x76ded76000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x74493f9000) = 0x74493f9000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7449057000, 2147483648, "\x63\x66\x69\x20\x73\x68\x61\x64\x6f\x77") = 0 [pid 4587] close(13) = 0 [pid 4587] munmap(0x76ded79000, 2030) = 0 [pid 4587] munmap(0x76ded7a000, 608) = 0 [pid 4587] munmap(0x76ded7c000, 3856) = 0 [pid 4587] munmap(0x76dfeff000, 632) = 0 [pid 4587] futex(0x744193ab98, FUTEX_WAKE_PRIVATE, 2147483647) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x69\x6f\x6e", O_RDONLY) = 13 [pid 4587] ioctl(13, _IOC(_IOC_READ|_IOC_WRITE, 0x49, 0x1, 0x4), 0x7fd1913990) = -1 EINVAL (Invalid argument) [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x49\x3b\x18\x05", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x76\x65\x6e\x64\x6f\x72\x2f\x71\x63\x6f\x6d\x2f\x70\x72\x6f\x70\x72\x69\x65\x74\x61\x72\x79\x2f\x63\x6f\x6d\x6d\x6f\x6e\x73\x79\x73\x2d\x69\x6e\x74\x66\x2f\x61\x64\x73\x70\x72\x70\x63\x2f\x73\x72\x63\x2f\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x2e\x63\x3a\x32\x35\x36\x34\x3a\x20\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x5f\x69\x6e\x69\x74\x20\x64\x6f\x6e\x65\x0a\x00", iov_len=106}], 4) = 155 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\xa2\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x49\x3b\x18\x05", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x76\x65\x6e\x64\x6f\x72\x2f\x71\x63\x6f\x6d\x2f\x70\x72\x6f\x70\x72\x69\x65\x74\x61\x72\x79\x2f\x63\x6f\x6d\x6d\x6f\x6e\x73\x79\x73\x2d\x69\x6e\x74\x66\x2f\x61\x64\x73\x70\x72\x70\x63\x2f\x73\x72\x63\x2f\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x2e\x63\x3a\x32\x35\x36\x34\x3a\x20\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x5f\x69\x6e\x69\x74\x20\x64\x6f\x6e\x65\x0a\x00", iov_len=106}], 5) = 162 [pid 4587] futex(0x744193aa14, FUTEX_WAKE_PRIVATE, 2147483647) = 0 [pid 4587] mprotect(0x76deda7000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76dee8e000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76decd4000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76dec70000, 409600, PROT_READ) = 0 [pid 4587] munmap(0x76da60f000, 409600) = 0 [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x32\x85\x4e\x05", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x33\x39\x38\x2c\x20\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x20\x6c\x6f\x61\x64\x69\x6e\x67\x20\x73\x74\x75\x62\x28\x6c\x69\x62\x73\x6e\x73\x5f\x6c\x6f\x77\x5f\x6c\x61\x74\x5f\x73\x74\x72\x65\x61\x6d\x5f\x73\x74\x75\x62\x2e\x73\x6f\x29\x20\x6c\x6c\x63\x6d\x68\x61\x6e\x64\x6c\x65\x72\x3d\x30\x78\x30\x20\x21\x00", iov_len=114}], 4) = 138 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x91\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x32\x85\x4e\x05", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x33\x39\x38\x2c\x20\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x20\x6c\x6f\x61\x64\x69\x6e\x67\x20\x73\x74\x75\x62\x28\x6c\x69\x62\x73\x6e\x73\x5f\x6c\x6f\x77\x5f\x6c\x61\x74\x5f\x73\x74\x72\x65\x61\x6d\x5f\x73\x74\x75\x62\x2e\x73\x6f\x29\x20\x6c\x6c\x63\x6d\x68\x61\x6e\x64\x6c\x65\x72\x3d\x30\x78\x30\x20\x21\x00", iov_len=114}], 5) = 145 [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] mprotect(0x76deda7000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dee8e000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76decd4000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dec70000, 409600, PROT_READ|PROT_WRITE) = 0 [pid 4587] mmap(NULL, 409600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76da60f000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76da60f000, 409600, "\x6c\x69\x6e\x6b\x65\x72\x5f\x61\x6c\x6c\x6f\x63") = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x6e\x73\x5f\x6c\x6f\x77\x5f\x6c\x61\x74\x5f\x73\x74\x72\x65\x61\x6d\x5f\x73\x74\x75\x62\x2e\x73\x6f", O_RDONLY|O_CLOEXEC) = 14 [pid 4587] readlinkat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x66\x64\x2f\x31\x34", "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x6c\x69\x62\x36\x34\x2f\x6c\x69\x62\x73\x6e\x73\x5f\x6c\x6f\x77\x5f\x6c\x61\x74\x5f\x73\x74\x72\x65\x61\x6d\x5f\x73\x74\x75\x62\x2e\x73\x6f", 4096) = 43 [pid 4587] fstat(14, {st_mode=S_IFREG|0644, st_size=15968, ...}) = 0 [pid 4587] fstatfs(14, {f_type=EXT2_SUPER_MAGIC, f_bsize=4096, f_blocks=187410, f_bfree=64006, f_bavail=60255, f_files=2208, f_ffree=91, f_fsid={val=[840863793, 2038714783]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RDONLY|ST_RELATIME}) = 0 [pid 4587] pread64(14, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x18\x00\x16\x00", 64, 0) = 64 [pid 4587] mmap(NULL, 632, PROT_READ, MAP_PRIVATE, 14, 0) = 0x76dfeff000 [pid 4587] mmap(NULL, 5824, PROT_READ, MAP_PRIVATE, 14, 0x3000) = 0x76ded79000 [pid 4587] mmap(NULL, 1648, PROT_READ, MAP_PRIVATE, 14, 0x3000) = 0x76ded7c000 [pid 4587] mmap(NULL, 3079, PROT_READ, MAP_PRIVATE, 14, 0) = 0x76ded76000 [pid 4587] mmap(NULL, 520192, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x744188f000 [pid 4587] munmap(0x744188f000, 212992) = 0 [pid 4587] munmap(0x74418c8000, 286720) = 0 [pid 4587] mmap(0x74418c3000, 3820, PROT_READ, MAP_PRIVATE|MAP_FIXED, 14, 0) = 0x74418c3000 [pid 4587] mmap(0x74418c4000, 1520, PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 14, 0x1000) = 0x74418c4000 [pid 4587] mmap(0x74418c5000, 5232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 14, 0x2000) = 0x74418c5000 [pid 4587] mmap(0x74418c7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x74418c7000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74418c7000, 4096, "\x2e\x62\x73\x73") = 0 [pid 4587] mprotect(0x74418c6000, 4096, PROT_READ) = 0 [pid 4587] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76ded75000 [pid 4587] mprotect(0x74493f9000, 4096, PROT_READ) = 0 [pid 4587] mprotect(0x76ded75000, 4096, PROT_READ) = 0 [pid 4587] mremap(0x76ded75000, 4096, 4096, MREMAP_MAYMOVE|MREMAP_FIXED, 0x74493f9000) = 0x74493f9000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7449057000, 2147483648, "\x63\x66\x69\x20\x73\x68\x61\x64\x6f\x77") = 0 [pid 4587] close(14) = 0 [pid 4587] munmap(0x76ded76000, 3079) = 0 [pid 4587] munmap(0x76ded7c000, 1648) = 0 [pid 4587] munmap(0x76ded79000, 5824) = 0 [pid 4587] munmap(0x76dfeff000, 632) = 0 [pid 4587] mprotect(0x76deda7000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76dee8e000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76decd4000, 409600, PROT_READ) = 0 [pid 4587] mprotect(0x76dec70000, 409600, PROT_READ) = 0 [pid 4587] munmap(0x76da60f000, 409600) = 0 [pid 4587] prctl(PR_GET_DUMPABLE) = 1 (SUID_DUMP_USER) [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xeb\xe5\x93\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x76\x65\x6e\x64\x6f\x72\x2f\x71\x63\x6f\x6d\x2f\x70\x72\x6f\x70\x72\x69\x65\x74\x61\x72\x79\x2f\x63\x6f\x6d\x6d\x6f\x6e\x73\x79\x73\x2d\x69\x6e\x74\x66\x2f\x61\x64\x73\x70\x72\x70\x63\x2f\x73\x72\x63\x2f\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x2e\x63\x3a\x31\x31\x35\x35\x3a\x20\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x5f\x6f\x70\x65\x6e\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x6f\x70\x65\x6e\x65\x64\x20\x68\x61\x6e\x64\x6c\x65\x20\x30\x78\x30\x20\x66\x6f\x72\x20\x27\x22\x3a\x3b\x2e\x2f\x5c\x63\x72\x65\x61\x74\x65\x73\x74\x61\x74\x69\x63\x70\x64\x3a\x73\x65\x6e\x73\x6f\x72\x73\x70\x64\x20\x6f\x6e\x20\x64\x6f\x6d\x61\x69\x6e\x20\x30\x00", iov_len=176}], 4) = 225 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\xe8\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xeb\xe5\x93\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x76\x65\x6e\x64\x6f\x72\x2f\x71\x63\x6f\x6d\x2f\x70\x72\x6f\x70\x72\x69\x65\x74\x61\x72\x79\x2f\x63\x6f\x6d\x6d\x6f\x6e\x73\x79\x73\x2d\x69\x6e\x74\x66\x2f\x61\x64\x73\x70\x72\x70\x63\x2f\x73\x72\x63\x2f\x66\x61\x73\x74\x72\x70\x63\x5f\x61\x70\x70\x73\x5f\x75\x73\x65\x72\x2e\x63\x3a\x31\x31\x35\x35\x3a\x20\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x5f\x6f\x70\x65\x6e\x3a\x20\x53\x75\x63\x63\x65\x73\x73\x66\x75\x6c\x6c\x79\x20\x6f\x70\x65\x6e\x65\x64\x20\x68\x61\x6e\x64\x6c\x65\x20\x30\x78\x30\x20\x66\x6f\x72\x20\x27\x22\x3a\x3b\x2e\x2f\x5c\x63\x72\x65\x61\x74\x65\x73\x74\x61\x74\x69\x63\x70\x64\x3a\x73\x65\x6e\x73\x6f\x72\x73\x70\x64\x20\x6f\x6e\x20\x64\x6f\x6d\x61\x69\x6e\x20\x30\x00", iov_len=176}], 5) = 232 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xdb\x42\xb7\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x6f\x70\x65\x6e\x65\x64\x20\x72\x65\x6d\x6f\x74\x65\x20\x68\x61\x6e\x64\x6c\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x73\x6f\x72\x73\x70\x64\x00", iov_len=35}], 4) = 84 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x5b\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xdb\x42\xb7\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", iov_len=37}, {iov_base="\x6f\x70\x65\x6e\x65\x64\x20\x72\x65\x6d\x6f\x74\x65\x20\x68\x61\x6e\x64\x6c\x65\x20\x66\x6f\x72\x20\x73\x65\x6e\x73\x6f\x72\x73\x70\x64\x00", iov_len=35}], 5) = 91 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x68\xf6\xdb\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x34\x31\x35\x2c\x20\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x20\x69\x73\x20\x73\x75\x63\x65\x73\x73\x66\x75\x6c\x00", iov_len=64}], 4) = 88 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x5f\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x68\xf6\xdb\x06", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x3a\x34\x31\x35\x2c\x20\x75\x70\x64\x61\x74\x65\x5f\x72\x65\x6d\x6f\x74\x65\x5f\x68\x61\x6e\x64\x6c\x65\x72\x73\x20\x69\x73\x20\x73\x75\x63\x65\x73\x73\x66\x75\x6c\x00", iov_len=64}], 5) = 95 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x74417c6000 [pid 4587] mprotect(0x74417c7000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(child_stack=0x74418becf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x74418bed10, tls=0x74418bf010, child_tidptr=0x74418bed10) = 4610 strace: Process 4610 attached [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4610] futex(0x74418bed9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x74418bed9c, FUTEX_WAKE_PRIVATE, 1) = 0 [pid 4610] <... futex resumed> ) = -1 EAGAIN (Try again) [pid 4610] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74417c7000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x30") = 0 [pid 4610] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deb0f000 [pid 4610] mprotect(0x76deb0f000, 4096, PROT_NONE [pid 4587] getuid() = 0 [pid 4610] <... mprotect resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x36\x17\x50\x07", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4610] sigaltstack({ss_sp=0x76deb10000, ss_flags=0, ss_size=32768}, [pid 4587] <... writev resumed> ) = 74 [pid 4610] <... sigaltstack resumed> NULL) = 0 [pid 4587] getuid( [pid 4610] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb10000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... getuid resumed> ) = 0 [pid 4610] <... prctl resumed> ) = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x36\x17\x50\x07", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4610] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 81 [pid 4610] <... mmap resumed> ) = 0x74407c6000 [pid 4610] mprotect(0x74411ec000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4610] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4610] futex(0x75c9066300, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x74e905f7b0) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=933546575}) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=246, tv_nsec=933788971}) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x7539061a80) = 0 [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 14 [pid 4587] pipe2([15, 16], 0) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x74406c9000 [pid 4587] mprotect(0x74406ca000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4611 attached child_stack=0x74407c1cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x74407c1d10, tls=0x74407c2010, child_tidptr=0x74407c1d10) = 4611 [pid 4611] futex(0x74407c1d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x74407c1d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4611] <... futex resumed> ) = 0 [pid 4587] fcntl(14, F_GETFL [pid 4611] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x74406ca000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x31" [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4611] <... prctl resumed> ) = 0 [pid 4587] fcntl(14, F_SETFL, O_RDWR|O_NONBLOCK [pid 4611] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... fcntl resumed> ) = 0 [pid 4611] <... mmap resumed> ) = 0x76deb06000 [pid 4587] write(16, "\x61", 1 [pid 4611] mprotect(0x76deb06000, 4096, PROT_NONE [pid 4587] <... write resumed> ) = 1 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4611] <... mprotect resumed> ) = 0 [pid 4611] sigaltstack({ss_sp=0x76deb07000, ss_flags=0, ss_size=32768}, [pid 4587] <... ioctl resumed> , 0x74e905f7b0) = 0 [pid 4611] <... sigaltstack resumed> NULL) = 0 [pid 4611] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deb07000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x74f906a550) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [pid 4611] <... prctl resumed> ) = 0 [pid 4611] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x743f6c9000 [pid 4611] mprotect(0x743feb2000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4611] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] <... rt_sigprocmask resumed> [USR2 RTMIN], 8) = 0 [pid 4611] ppoll([{fd=15, events=POLLIN}, {fd=14, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4611] <... ppoll resumed> ) = 1 ([{fd=15, revents=POLLIN}]) [pid 4587] <... mmap resumed> ) = 0x743f5cc000 [pid 4611] read(15, [pid 4587] mprotect(0x743f5cd000, 1028096, PROT_READ|PROT_WRITE [pid 4611] <... read resumed> "\x61", 1) = 1 [pid 4587] <... mprotect resumed> ) = 0 [pid 4611] ppoll([{fd=15, events=POLLIN}, {fd=14, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4612 attached child_stack=0x743f6c4cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743f6c4d10, tls=0x743f6c5010, child_tidptr=0x743f6c4d10) = 4612 [pid 4612] futex(0x743f6c4d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x743f6c4d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4612] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4612] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743f5cd000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x32" [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4612] <... prctl resumed> ) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922329008, sival_ptr=0x75c9066050}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4612}, [pid 4612] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... timer_create resumed> [4]) = 0 [pid 4612] <... mmap resumed> ) = 0x76deafd000 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x32\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4612] mprotect(0x76deafd000, 4096, PROT_NONE) = 0 [pid 4612] sigaltstack({ss_sp=0x76deafe000, ss_flags=0, ss_size=32768}, [pid 4587] <... openat resumed> ) = 17 [pid 4587] write(17, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x34", 13 [pid 4612] <... sigaltstack resumed> NULL) = 0 [pid 4587] <... write resumed> ) = 13 [pid 4612] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deafe000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4612] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x743e5cc000 [pid 4612] mprotect(0x743f438000, 8192, PROT_READ|PROT_WRITE) = 0 [pid 4612] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4612] rt_sigtimedwait([RTMIN], [pid 4587] close(17) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x0b\x26\x6a\x08", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x6e\x69\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x33\x35\x32\x2c\x20\x53\x53\x52\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x69\x73\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x00", iov_len=44}], 4) = 68 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x4b\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x0b\x26\x6a\x08", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x69\x6e\x69\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3a\x33\x35\x32\x2c\x20\x53\x53\x52\x20\x68\x61\x6e\x64\x6c\x65\x72\x20\x69\x73\x20\x72\x65\x67\x69\x73\x74\x65\x72\x65\x64\x00", iov_len=44}], 5) = 75 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [USR2 RTMIN], 8) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x743e4cf000 [pid 4587] mprotect(0x743e4d0000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4613 attached child_stack=0x743e5c7cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743e5c7d10, tls=0x743e5c8010, child_tidptr=0x743e5c7d10) = 4613 [pid 4613] futex(0x743e5c7d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x743e5c7d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4613] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4613] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743e4d0000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x33") = 0 [pid 4613] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4613] <... mmap resumed> ) = 0x76deaf4000 [pid 4587] timer_create(CLOCK_BOOTTIME, {sigev_value={sival_int=1761998320, sival_ptr=0x756905f5f0}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4613}, [pid 4613] mprotect(0x76deaf4000, 4096, PROT_NONE [pid 4587] <... timer_create resumed> [5]) = 0 [pid 4613] <... mprotect resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x33\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4613] sigaltstack({ss_sp=0x76deaf5000, ss_flags=0, ss_size=32768}, [pid 4587] <... openat resumed> ) = 17 [pid 4613] <... sigaltstack resumed> NULL) = 0 [pid 4587] write(17, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x35", 13) = 13 [pid 4587] close(17) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x39\x10\xea\x08", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x3a\x31\x38\x30\x2c\x20\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64\x2c\x20\x69\x6e\x69\x74\x5f\x74\x69\x6d\x65\x20\x3d\x20\x31\x2e\x39\x37\x35\x37\x32\x38\x73\x00", iov_len=64}], 4) = 88 [pid 4613] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deaf5000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] getuid() = 0 [pid 4613] <... prctl resumed> ) = 0 [pid 4587] writev(5, [{iov_base="\x6c\x5f\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x39\x10\xea\x08", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x3a\x31\x38\x30\x2c\x20\x73\x65\x6e\x73\x6f\x72\x73\x5f\x68\x61\x6c\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x65\x64\x2c\x20\x69\x6e\x69\x74\x5f\x74\x69\x6d\x65\x20\x3d\x20\x31\x2e\x39\x37\x35\x37\x32\x38\x73\x00", iov_len=64}], 5 [pid 4613] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 95 [pid 4613] <... mmap resumed> ) = 0x743d4cf000 [pid 4587] faccessat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x68\x77\x62\x69\x6e\x64\x65\x72", R_OK|W_OK [pid 4613] mprotect(0x743dc04000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... faccessat resumed> ) = 0 [pid 4613] <... mprotect resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x68\x77\x73\x65\x72\x76\x69\x63\x65\x6d\x61\x6e\x61\x67\x65\x72\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC [pid 4613] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4613] rt_sigtimedwait([RTMIN], [pid 4587] <... openat resumed> ) = 17 [pid 4587] fstat(17, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 [pid 4587] mmap(NULL, 131072, PROT_READ, MAP_SHARED, 17, 0) = 0x76deab0000 [pid 4587] close(17) = 0 [pid 4587] getrlimit(RLIMIT_NOFILE, {rlim_cur=32*1024, rlim_max=32*1024}) = 0 [pid 4587] getuid() = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x68\x61\x6c\x5f\x69\x6e\x73\x74\x72\x75\x6d\x65\x6e\x74\x61\x74\x69\x6f\x6e\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 17 [pid 4587] fstat(17, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 [pid 4587] mmap(NULL, 131072, PROT_READ, MAP_SHARED, 17, 0) = 0x76dea72000 [pid 4587] close(17) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x76\x74\x73\x5f\x63\x6f\x6e\x66\x69\x67\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 17 [pid 4587] fstat(17, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 [pid 4587] mmap(NULL, 131072, PROT_READ, MAP_SHARED, 17, 0) = 0x76dea50000 [pid 4587] close(17) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x64\x65\x76\x2f\x5f\x5f\x70\x72\x6f\x70\x65\x72\x74\x69\x65\x73\x5f\x5f\x2f\x75\x3a\x6f\x62\x6a\x65\x63\x74\x5f\x72\x3a\x62\x75\x69\x6c\x64\x5f\x70\x72\x6f\x70\x3a\x73\x30", O_RDONLY|O_NOFOLLOW|O_CLOEXEC) = 17 [pid 4587] fstat(17, {st_mode=S_IFREG|0444, st_size=131072, ...}) = 0 [pid 4587] mmap(NULL, 131072, PROT_READ, MAP_SHARED, 17, 0) = 0x76dea30000 [pid 4587] close(17) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x73\x79\x73\x2f\x6b\x65\x72\x6e\x65\x6c\x2f\x74\x72\x61\x63\x69\x6e\x67\x2f\x74\x72\x61\x63\x65\x5f\x6d\x61\x72\x6b\x65\x72", O_WRONLY|O_CLOEXEC) = 17 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x6d\x64\x6c\x69\x6e\x65", O_RDONLY|O_CLOEXEC) = 18 [pid 4587] fstat(18, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 [pid 4587] read(18, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 1024) = 52 [pid 4587] read(18, "", 1024) = 0 [pid 4587] close(18) = 0 [pid 4587] futex(0x76da87c610, FUTEX_WAKE_PRIVATE, 2147483647) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x6d\x64\x6c\x69\x6e\x65", O_RDONLY|O_CLOEXEC) = 18 [pid 4587] fstat(18, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 [pid 4587] read(18, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 1024) = 52 [pid 4587] read(18, "", 1024) = 0 [pid 4587] close(18) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914a60) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x6d\x64\x6c\x69\x6e\x65", O_RDONLY|O_CLOEXEC) = 18 [pid 4587] fstat(18, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 [pid 4587] read(18, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 1024) = 52 [pid 4587] read(18, "", 1024) = 0 [pid 4587] close(18) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914980) = 0 [pid 4587] futex(0x76da8bdf48, FUTEX_WAKE_PRIVATE, 2147483647) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xe8\x87\x63\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x48\x69\x64\x6c\x53\x65\x72\x76\x69\x63\x65\x4d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x00", iov_len=22}, {iov_base="\x52\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x3a\x3a\x49\x53\x65\x6e\x73\x6f\x72\x73\x2f\x64\x65\x66\x61\x75\x6c\x74\x00", iov_len=58}], 4) = 92 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x63\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xe8\x87\x63\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x48\x69\x64\x6c\x53\x65\x72\x76\x69\x63\x65\x4d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x00", iov_len=22}, {iov_base="\x52\x65\x67\x69\x73\x74\x65\x72\x65\x64\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x3a\x3a\x49\x53\x65\x6e\x73\x6f\x72\x73\x2f\x64\x65\x66\x61\x75\x6c\x74\x00", iov_len=58}], 5) = 99 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ|PROT_WRITE) = 0 [pid 4587] mprotect(0x76dff00000, 4096, PROT_READ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x63\x6d\x64\x6c\x69\x6e\x65", O_RDONLY) = 18 [pid 4587] fstat(18, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 [pid 4587] read(18, "\x2f\x76\x65\x6e\x64\x6f\x72\x2f\x62\x69\x6e\x2f\x68\x77\x2f\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 4096) = 52 [pid 4587] read(18, "", 4044) = 0 [pid 4587] read(18, "", 1024) = 0 [pid 4587] lseek(18, 0, SEEK_CUR) = 52 [pid 4587] lseek(18, 52, SEEK_SET) = 52 [pid 4587] close(18) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x88\x4f\xa8\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x48\x69\x64\x6c\x53\x65\x72\x76\x69\x63\x65\x4d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x00", iov_len=22}, {iov_base="\x52\x65\x6d\x6f\x76\x69\x6e\x67\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x20\x66\x72\x6f\x6d\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6e\x61\x6d\x65\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x20\x74\x6f\x20\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x2e\x00", iov_len=98}], 4) = 132 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x8b\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x88\x4f\xa8\x0a", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x48\x69\x64\x6c\x53\x65\x72\x76\x69\x63\x65\x4d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x00", iov_len=22}, {iov_base="\x52\x65\x6d\x6f\x76\x69\x6e\x67\x20\x6e\x61\x6d\x65\x73\x70\x61\x63\x65\x20\x66\x72\x6f\x6d\x20\x70\x72\x6f\x63\x65\x73\x73\x20\x6e\x61\x6d\x65\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x65\x2e\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x20\x74\x6f\x20\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x2e\x00", iov_len=98}], 5) = 139 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f", O_RDONLY|O_CLOEXEC|O_DIRECTORY) = 18 [pid 4587] mmap(0x7629060000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7629060000 [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7629060000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] getdents64(18, /* 14 entries */, 4200) = 336 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x38\x37\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x35\x38\x39\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x34\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x35\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x36\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x37\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x73\x69\x67\x5f\x6d\x6f\x74\x69\x6f\x6e\x0a", 4096) = 11 [pid 4587] read(19, "", 4085) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 11 [pid 4587] lseek(19, 10, SEEK_SET) = 10 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x38\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x6d\x6f\x74\x69\x6f\x6e\x5f\x64\x65\x74\x65\x63\x74\x0a", 4096) = 14 [pid 4587] read(19, "", 4082) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 14 [pid 4587] lseek(19, 13, SEEK_SET) = 13 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x30\x39\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x6d\x6f\x74\x69\x6f\x6e\x5f\x64\x65\x74\x65\x63\x74\x0a", 4096) = 14 [pid 4587] read(19, "", 4082) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 14 [pid 4587] lseek(19, 13, SEEK_SET) = 13 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x30\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x31\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x61\x6e\x64\x72\x6f\x69\x64\x2e\x68\x61\x72\x64\x77\x61\x72\x0a", 4096) = 16 [pid 4587] read(19, "", 4080) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 16 [pid 4587] lseek(19, 15, SEEK_SET) = 15 [pid 4587] lseek(19, 0, SEEK_SET) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 0 [pid 4587] write(19, "\x73\x65\x6e\x73\x6f\x72\x73\x40\x32\x2e\x30\x2d\x73\x65\x72\x76\x69\x63\x65\x00", 20) = 20 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x32\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x34\x0a", 4096) = 14 [pid 4587] read(19, "", 4082) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 14 [pid 4587] lseek(19, 5, SEEK_SET) = 5 [pid 4587] close(19) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x33\x2f\x63\x6f\x6d\x6d", O_RDWR) = 19 [pid 4587] fstat(19, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 [pid 4587] read(19, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x35\x0a", 4096) = 14 [pid 4587] read(19, "", 4082) = 0 [pid 4587] lseek(19, 0, SEEK_CUR) = 14 [pid 4587] lseek(19, 5, SEEK_SET) = 5 [pid 4587] close(19) = 0 [pid 4587] getdents64(18, /* 0 entries */, 4200) = 0 [pid 4587] close(18) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914e68) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd19144b0) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914e68) = 0 [pid 4587] dup(18) = 20 [pid 4587] mmap(NULL, 8, PROT_READ|PROT_WRITE, MAP_SHARED, 20, 0) = 0x76dfeff000 [pid 4587] mmap(NULL, 16, PROT_READ|PROT_WRITE, MAP_SHARED, 20, 0) = 0x76ded7c000 [pid 4587] mmap(NULL, 20496, PROT_READ|PROT_WRITE, MAP_SHARED, 20, 0) = 0x76ded64000 [pid 4587] mmap(NULL, 20, PROT_READ|PROT_WRITE, MAP_SHARED, 20, 0x5000) = 0x76ded7a000 [pid 4587] dup(19) = 21 [pid 4587] mmap(NULL, 8, PROT_READ|PROT_WRITE, MAP_SHARED, 21, 0) = 0x76ded79000 [pid 4587] mmap(NULL, 16, PROT_READ|PROT_WRITE, MAP_SHARED, 21, 0) = 0x76ded76000 [pid 4587] mmap(NULL, 1040, PROT_READ|PROT_WRITE, MAP_SHARED, 21, 0) = 0x76ded75000 [pid 4587] mmap(NULL, 1044, PROT_READ|PROT_WRITE, MAP_SHARED, 21, 0) = 0x76ded60000 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x743d3d2000 [pid 4587] mprotect(0x743d3d3000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(child_stack=0x743d4cacf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743d4cad10, tls=0x743d4cb010, child_tidptr=0x743d4cad10) = 4614 strace: Process 4614 attached [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4614] futex(0x743d4cad9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x743d4cad9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4614] <... futex resumed> ) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ [pid 4614] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743d3d3000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x34" [pid 4587] <... ioctl resumed> , 0x7fd19147b0) = 0 [pid 4614] <... prctl resumed> ) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ [pid 4614] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... ioctl resumed> , 0x7fd1914898) = 0 [pid 4614] <... mmap resumed> ) = 0x76deaeb000 [pid 4587] ioctl(3, BINDER_WRITE_READ [pid 4614] mprotect(0x76deaeb000, 4096, PROT_NONE [pid 4587] <... ioctl resumed> , 0x7fd1914e68) = 0 [pid 4614] <... mprotect resumed> ) = 0 [pid 4587] getuid( [pid 4614] sigaltstack({ss_sp=0x76deaec000, ss_flags=0, ss_size=32768}, [pid 4587] <... getuid resumed> ) = 0 [pid 4614] <... sigaltstack resumed> NULL) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x28\xdd\x1e\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x6c\x69\x73\x74\x3a\x33\x36\x32\x2c\x20\x6e\x75\x6d\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3d\x34\x32\x00", iov_len=37}], 4 [pid 4614] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deaec000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... writev resumed> ) = 61 [pid 4614] <... prctl resumed> ) = 0 [pid 4587] getuid( [pid 4614] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... getuid resumed> ) = 0 [pid 4614] <... mmap resumed> ) = 0x743c3d2000 [pid 4587] writev(5, [{iov_base="\x6c\x44\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x28\xdd\x1e\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x73\x65\x6e\x73\x6f\x72\x73\x5f\x6c\x69\x73\x74\x3a\x33\x36\x32\x2c\x20\x6e\x75\x6d\x5f\x73\x65\x6e\x73\x6f\x72\x73\x3d\x34\x32\x00", iov_len=37}], 5 [pid 4614] mprotect(0x743c844000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... writev resumed> ) = 68 [pid 4614] <... mprotect resumed> ) = 0 [pid 4614] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] mmap(0x75f905e000, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x75f905e000 [pid 4614] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4614] futex(0x7539060dbc, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x75f905e000, 262144, "\x73\x63\x75\x64\x6f\x3a\x70\x72\x69\x6d\x61\x72\x79") = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914670) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914e68) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x09\x87\x56\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x62\x61\x74\x63\x68\x3a\x32\x32\x39\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x2c\x20\x70\x65\x72\x69\x6f\x64\x3d\x31\x30\x30\x30\x30\x30\x30\x2c\x20\x6d\x61\x78\x5f\x6c\x61\x74\x65\x6e\x63\x79\x3d\x30\x00", iov_len=80}], 4) = 104 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x6f\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x09\x87\x56\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x62\x61\x74\x63\x68\x3a\x32\x32\x39\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x2c\x20\x70\x65\x72\x69\x6f\x64\x3d\x31\x30\x30\x30\x30\x30\x30\x2c\x20\x6d\x61\x78\x5f\x6c\x61\x74\x65\x6e\x63\x79\x3d\x30\x00", iov_len=80}], 5) = 111 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x75\x98\x65\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x62\x61\x74\x63\x68\x3a\x32\x34\x30\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x2c\x20\x70\x65\x72\x69\x6f\x64\x3d\x31\x30\x30\x30\x30\x30\x30\x2c\x20\x6d\x61\x78\x5f\x6c\x61\x74\x65\x6e\x63\x79\x3d\x30\x20\x72\x65\x71\x75\x65\x73\x74\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x00", iov_len=98}], 4) = 122 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x81\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x75\x98\x65\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x62\x61\x74\x63\x68\x3a\x32\x34\x30\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x2c\x20\x70\x65\x72\x69\x6f\x64\x3d\x31\x30\x30\x30\x30\x30\x30\x2c\x20\x6d\x61\x78\x5f\x6c\x61\x74\x65\x6e\x63\x79\x3d\x30\x20\x72\x65\x71\x75\x65\x73\x74\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x00", iov_len=98}], 5) = 129 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd19147c0) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd1914e68) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x4e\xfa\x8b\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x74\x69\x76\x61\x74\x65\x3a\x31\x39\x34\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x20\x65\x6e\x3d\x31\x00", iov_len=57}], 4) = 81 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x58\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x4e\xfa\x8b\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x74\x69\x76\x61\x74\x65\x3a\x31\x39\x34\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x20\x65\x6e\x3d\x31\x00", iov_len=57}], 5) = 88 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=247, tv_nsec=53046900}) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x743c2d5000 [pid 4587] mprotect(0x743c2d6000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4615 attached child_stack=0x743c3cdcf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743c3cdd10, tls=0x743c3ce010, child_tidptr=0x743c3cdd10) = 4615 [pid 4615] futex(0x743c3cdd9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x743c3cdd9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4615] <... futex resumed> ) = 0 [pid 4587] getuid( [pid 4615] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743c2d6000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x35" [pid 4587] <... getuid resumed> ) = 0 [pid 4615] <... prctl resumed> ) = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x26\x58\xe1\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 4 [pid 4615] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... writev resumed> ) = 74 [pid 4615] <... mmap resumed> ) = 0x76deae2000 [pid 4615] mprotect(0x76deae2000, 4096, PROT_NONE) = 0 [pid 4615] sigaltstack({ss_sp=0x76deae3000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4615] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deae3000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b") = 0 [pid 4615] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x743b2d5000 [pid 4615] mprotect(0x743b6a6000, 8192, PROT_READ|PROT_WRITE [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x51\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\x26\x58\xe1\x0e", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x67\x65\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x5f\x66\x6c\x61\x67\x3a\x32\x34\x35\x2c\x20\x73\x75\x70\x70\x6f\x72\x74\x5f\x71\x6d\x69\x5f\x64\x65\x62\x75\x67\x20\x3a\x20\x66\x61\x6c\x73\x65\x00", iov_len=50}], 5 [pid 4615] <... mprotect resumed> ) = 0 [pid 4587] <... writev resumed> ) = 81 [pid 4615] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x74e905f510) = 0 [pid 4615] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=247, tv_nsec=59702577}) = 0 [pid 4615] futex(0x75c9064920, FUTEX_WAIT_BITSET_PRIVATE, 0, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=247, tv_nsec=60931275}) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14), 0x7539061a80) = 0 [pid 4587] socket(AF_IB, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 18 [pid 4587] pipe2([19, 22], 0) = 0 [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x743b1d8000 [pid 4587] mprotect(0x743b1d9000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(strace: Process 4616 attached child_stack=0x743b2d0cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743b2d0d10, tls=0x743b2d1010, child_tidptr=0x743b2d0d10) = 4616 [pid 4616] futex(0x743b2d0d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] futex(0x743b2d0d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4616] <... futex resumed> ) = 0 [pid 4587] fcntl(18, F_GETFL [pid 4616] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743b1d9000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x36") = 0 [pid 4616] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76dead9000 [pid 4616] mprotect(0x76dead9000, 4096, PROT_NONE) = 0 [pid 4616] sigaltstack({ss_sp=0x76deada000, ss_flags=0, ss_size=32768}, [pid 4587] <... fcntl resumed> ) = 0x2 (flags O_RDWR) [pid 4616] <... sigaltstack resumed> NULL) = 0 [pid 4587] fcntl(18, F_SETFL, O_RDWR|O_NONBLOCK [pid 4616] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deada000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... fcntl resumed> ) = 0 [pid 4616] <... prctl resumed> ) = 0 [pid 4587] write(22, "\x61", 1 [pid 4616] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... write resumed> ) = 1 [pid 4616] <... mmap resumed> ) = 0x743a1d8000 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4616] mprotect(0x743a1f4000, 8192, PROT_READ|PROT_WRITE [pid 4587] <... ioctl resumed> , 0x74e905f510) = 0 [pid 4587] ioctl(9, _IOC(_IOC_READ|_IOC_WRITE, 0xc3, 0x2, 0x14) [pid 4616] <... mprotect resumed> ) = 0 [pid 4587] <... ioctl resumed> , 0x74f905b410) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, [RTMIN], [USR2 RTMIN], 8) = 0 [pid 4616] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4616] ppoll([{fd=19, events=POLLIN}, {fd=18, events=POLLIN}], 2, NULL, NULL, 0) = 1 ([{fd=19, revents=POLLIN}]) [pid 4616] read(19, [pid 4587] mmap(NULL, 1036288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0 [pid 4616] <... read resumed> "\x61", 1) = 1 [pid 4616] ppoll([{fd=19, events=POLLIN}, {fd=18, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... mmap resumed> ) = 0x743a0db000 [pid 4587] mprotect(0x743a0dc000, 1028096, PROT_READ|PROT_WRITE) = 0 [pid 4587] rt_sigprocmask(SIG_BLOCK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], NULL, 8) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, ~[], [USR2 RTMIN], 8) = 0 [pid 4587] clone(child_stack=0x743a1d3cf0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x743a1d3d10, tls=0x743a1d4010, child_tidptr=0x743a1d3d10) = 4617 strace: Process 4617 attached [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4617] futex(0x743a1d3d9c, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] futex(0x743a1d3d9c, FUTEX_WAKE_PRIVATE, 1) = 1 [pid 4617] <... futex resumed> ) = 0 [pid 4587] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4617] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x743a0dc000, 1028096, "\x73\x74\x61\x63\x6b\x5f\x61\x6e\x64\x5f\x74\x6c\x73\x3a\x34\x36\x31\x37" [pid 4587] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4617] <... prctl resumed> ) = 0 [pid 4587] timer_create(CLOCK_MONOTONIC, {sigev_value={sival_int=-922335632, sival_ptr=0x75c9064670}, sigev_signo=SIGRTMIN, sigev_notify=SIGEV_THREAD_ID, sigev_notify_thread_id=4617}, [pid 4617] mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76deaa7000 [pid 4617] mprotect(0x76deaa7000, 4096, PROT_NONE) = 0 [pid 4617] sigaltstack({ss_sp=0x76deaa8000, ss_flags=0, ss_size=32768}, NULL) = 0 [pid 4617] prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x76deaa8000, 32768, "\x74\x68\x72\x65\x61\x64\x20\x73\x69\x67\x6e\x61\x6c\x20\x73\x74\x61\x63\x6b" [pid 4587] <... timer_create resumed> [6]) = 0 [pid 4617] <... prctl resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x37\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4617] mmap(NULL, 16777216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 [pid 4587] <... openat resumed> ) = 23 [pid 4587] write(23, "\x50\x4f\x53\x49\x58\x20\x74\x69\x6d\x65\x72\x20\x36", 13 [pid 4617] <... mmap resumed> ) = 0x74390db000 [pid 4587] <... write resumed> ) = 13 [pid 4617] mprotect(0x74399a0000, 8192, PROT_READ|PROT_WRITE [pid 4587] close(23 [pid 4617] <... mprotect resumed> ) = 0 [pid 4587] <... close resumed> ) = 0 [pid 4587] openat(AT_FDCWD, "\x2f\x70\x72\x6f\x63\x2f\x73\x65\x6c\x66\x2f\x74\x61\x73\x6b\x2f\x34\x36\x31\x35\x2f\x63\x6f\x6d\x6d", O_WRONLY|O_CLOEXEC [pid 4617] rt_sigprocmask(SIG_SETMASK, [USR2 RTMIN], [pid 4587] <... openat resumed> ) = 23 [pid 4617] <... rt_sigprocmask resumed> NULL, 8) = 0 [pid 4587] write(23, "\x73\x65\x65\x5f\x31\x37\x32", 7 [pid 4617] rt_sigtimedwait([RTMIN], [pid 4587] <... write resumed> ) = 7 [pid 4587] close(23) = 0 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=247, tv_nsec=77288985}) = 0 [pid 4587] rt_sigprocmask(0xd1913f50 /* SIG_??? */, NULL, [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1913f60 /* SIG_??? */, NULL, [USR2 RTMIN], 8) = 0 [pid 4587] rt_sigprocmask(0xd1913f40 /* SIG_??? */, NULL, [USR2 RTMIN], 8) = 0 [pid 4587] sendto(18, "\x00\x01\x00\x20\x00\x2e\x00\x01\x27\x00\x25\x00\x0a\x12\x09\xba\x7b\xfc\x77\xc3\x11\x3b\xb1\x11\xf4\xbb\x1b\xa6\x1a\xb0\x4f\x3b\x15\x02\x02\x00\x00\x1a\x04\x08\x01\x10\x00\x22\x04\x0a\x02\x08\x00\x10\x01\x00\x01", 53, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, 20) = 53 [pid 4587] clock_gettime(CLOCK_BOOTTIME, {tv_sec=247, tv_nsec=81177632}) = 0 [pid 4587] getuid() = 0 [pid 4587] writev(4, [{iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xb5\x71\x4b\x10", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x74\x69\x76\x61\x74\x65\x3a\x32\x30\x37\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x20\x65\x6e\x3d\x31\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x00", iov_len=67}], 4) = 91 [pid 4587] getuid() = 0 [pid 4587] writev(5, [{iov_base="\x6c\x62\x00\x00\x00\xeb\x11", iov_len=7}, {iov_base="\x00\xeb\x11\xd8\x61\xb8\x62\xb5\x71\x4b\x10", iov_len=11}, {iov_base="\x04", iov_len=1}, {iov_base="\x73\x65\x6e\x73\x6f\x72\x73\x2d\x68\x61\x6c\x00", iov_len=12}, {iov_base="\x61\x63\x74\x69\x76\x61\x74\x65\x3a\x32\x30\x37\x2c\x20\x61\x6e\x64\x72\x6f\x69\x64\x2e\x73\x65\x6e\x73\x6f\x72\x2e\x73\x69\x67\x6e\x69\x66\x69\x63\x61\x6e\x74\x5f\x6d\x6f\x74\x69\x6f\x6e\x2f\x31\x37\x32\x20\x65\x6e\x3d\x31\x20\x63\x6f\x6d\x70\x6c\x65\x74\x65\x64\x00", iov_len=67}], 5) = 98 [pid 4587] ioctl(3, BINDER_WRITE_READ, 0x7fd19147d0) = 0 [pid 4587] ioctl(3, BINDER_WRITE_READ [pid 4616] <... ppoll resumed> ) = 1 ([{fd=18, revents=POLLIN}]) [pid 4616] recvfrom(18, "\x02\x01\x00\x20\x00\x19\x00\x02\x04\x00\x00\x00\x00\x00\x10\x08\x00\x15\x00\x00\x00\x00\x00\x00\x00\x11\x04\x00\x00\x00\x00\x00", 62024, MSG_DONTWAIT, {sa_family=AF_IB, sa_data="\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00"}, [20]) = 32 [pid 4616] rt_sigprocmask(0x3b2d09f0 /* SIG_??? */, NULL, [USR2 RTMIN], 8) = 0 [pid 4616] timer_settime(6, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=0, tv_nsec=0}}, NULL) = 0 [pid 4616] ppoll([{fd=19, events=POLLIN}, {fd=18, events=POLLIN}], 2, NULL, NULL, 0 [pid 4587] <... ioctl resumed> , 0x7fd1914e68) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) strace: Process 4587 detached strace: Process 4604 detached strace: Process 4589 detached strace: Process 4605 detached strace: Process 4606 detached strace: Process 4607 detached strace: Process 4608 detached strace: Process 4609 detached strace: Process 4610 detached strace: Process 4611 detached strace: Process 4612 detached strace: Process 4613 detached strace: Process 4614 detached strace: Process 4615 detached strace: Process 4616 detached strace: Process 4617 detached