From dd6be78f44c50fc1e2bc0c0004d71c9cbdbbcbe0 Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Fri, 13 Aug 2021 21:19:42 +0300 Subject: [PATCH 01/18] Add LICENSE (#644) --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + 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 +. From a548525d757e1e06729ffbcb405c5e5fa0de914f Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Mon, 16 Aug 2021 14:55:27 +0300 Subject: [PATCH 02/18] CI: Multiarch Docker toolchain (#641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .github/workflows/build_toolchain.yml | 46 +++++++++++++++ docker/Dockerfile | 81 ++++++--------------------- 2 files changed, 64 insertions(+), 63 deletions(-) create mode 100644 .github/workflows/build_toolchain.yml diff --git a/.github/workflows/build_toolchain.yml b/.github/workflows/build_toolchain.yml new file mode 100644 index 00000000..2068730c --- /dev/null +++ b/.github/workflows/build_toolchain.yml @@ -0,0 +1,46 @@ +name: 'Build toolchain Docker image' + +on: + push: + branches: + - dev + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Docker meta + id: meta + uses: docker/metadata-action@v3 + with: + images: flipperdevices/flipperzero-toolchain + flavor: latest=${{ startsWith(github.ref, 'refs/tags/') && !endsWith(github.ref, 'rc')}} + tags: | + type=ref,event=branch + type=ref,event=tag + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: docker/ + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + platforms: linux/amd64,linux/arm64 + cache-from: type=registry,ref=flipperdevices/flipperzero-toolchain:buildcache + cache-to: type=registry,ref=flipperdevices/flipperzero-toolchain:buildcache,mode=max \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 406d806e..f6ab89c3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,78 +1,33 @@ -FROM ubuntu:18.04 +FROM ubuntu:focal -# hadolint ignore=DL3008 -RUN apt-get update && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - software-properties-common \ - gpg-agent \ - make \ - cmake \ - autoconf \ - automake \ - libtool \ - libusb-1.0 \ - libusb-1.0-0-dev \ - libgtk-3-dev pandoc \ - curl \ - wget \ - g++ \ - gcc \ - unzip \ +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ + ca-certificates \ build-essential \ - python \ - python-dev \ - python-pip \ - python-setuptools \ python3 \ - imagemagick \ - srecord \ + python-lxml \ git \ - pkg-config \ - dfu-util \ - && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* - -RUN pip install lxml - - -SHELL ["/bin/bash", "-eo", "pipefail", "-c"] -RUN wget --progress=dot:giga -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | apt-key add - && add-apt-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-12 main" - -# hadolint ignore=DL3008 -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - libclang-12-dev \ clang-format-12 \ - && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + dfu-util \ + openocd \ + srecord \ + libncurses5 \ + wget && \ + apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# install arm-none-eabi - -# hadolint ignore=DL3003 -RUN wget --progress=dot:giga "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2" && \ - tar xjf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 && \ - rm gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 && \ +RUN wget --progress=dot:giga "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2" && \ + tar xjf gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2 && \ + rm gcc-arm-none-eabi-10-2020-q4-major-$(uname -m)-linux.tar.bz2 && \ cd gcc-arm-none-eabi-10-2020-q4-major/bin/ && \ + rm -rf ../share && \ for file in * ; do ln -s "${PWD}/${file}" "/usr/bin/${file}" ; done && \ cd / && arm-none-eabi-gcc -v && arm-none-eabi-gdb -v -# install hex2dfu - -# hadolint ignore=DL3003 -RUN wget --progress=dot:giga "https://github.com/rusdacent/hex2dfu/archive/master.zip" --output-document=hex2dfu.zip && \ - unzip hex2dfu.zip && \ - rm hex2dfu.zip && \ - cd hex2dfu-master && gcc hex2dfu.c ED25519/*.c -o hex2dfu && \ - ln -s "${PWD}/hex2dfu" /usr/bin/hex2dfu - -# install openocd - -# hadolint ignore=DL3003 -RUN git clone --depth 1 --branch v0.11.0 https://github.com/ntfreak/openocd.git && \ - cd openocd && ./bootstrap && ./configure && make install && \ - cd .. && rm -rf openocd && \ - openocd --version +RUN git clone https://github.com/rusdacent/hex2dfu.git && \ + cd hex2dfu && gcc hex2dfu.c ED25519/*.c -o hex2dfu && mv ./hex2dfu /usr/local/bin/hex2dfu && \ + hex2dfu -h COPY entrypoint.sh syntax_check.sh / RUN chmod +x /syntax_check.sh -ENTRYPOINT ["/entrypoint.sh"] +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file From a024e470b7878c3ff6c129e3b6cf4eac609cb1bf Mon Sep 17 00:00:00 2001 From: Skorpionm <85568270+Skorpionm@users.noreply.github.com> Date: Mon, 16 Aug 2021 23:56:23 +0400 Subject: [PATCH 03/18] SubGhz: read and save static remotes. Create new static and dynamic remotes. (#646) * SubGhz: the functions of saving loading KeeLog have been modified, saving KeeLog is prohibited * SubGhz: Fix displaying Nice FlorS in the Raed scene * SubGhz: Fix displaying Faac SLH in the Raed scene * SubGhz: Fix displaying iDo in the Raed scene * SubGhz: Fix displaying Star Line in the Raed scene * SubGhz: Fix displaying Nice Flo in the Raed scene, added save and load functions. (testing needed, no remote control) * SubGhz: subghz_beginadded common encoder upload signal * SubGhz: add Came encoder * SubGhz: modified pricenton encoder, fix view transmitter hide the "Send" button if there is no encoder * SubGhz: add nice flo encoder, need testing no remote control * SubGhz: add gate_tx encoder * SubGhz: add nero_sketch encoder * SubGhz: add keelog encoder * SubGhz: add long upload upload while the button is pressed while releasing the transfer is over, with a check for sticking (maximum 200 upload repetitions) * SubGhz: fix max upload * SubGhz: Fix structure subghz add encoder * SubGhz: add generating and sending a dynamic keelog key, refactoring the code * SubGhz: add notifications * SubGhz: add creating a new remote control (Pricenton, Nice Flo 12bit, Nice Flo 24bit, CAME 12bit, CAME 24bit, Gate TX, DoorHan) * SubGhz: Fix load file, fix scene start * Subghz: Fix show key * SubGhz: Fix subghz_cli * SubGhz: Fix furi-hal-subghz * Format sources * SubGhz: standard notification scheme, fix broken assert in DMA. * SubGhz: move level alignment logic to furi-hal-subghz, fix spelling, cleanup. Co-authored-by: Aleksandr Kutuzov --- .../subghz/scenes/subghz_scene_analyze.c | 6 +- .../subghz/scenes/subghz_scene_config.h | 1 + .../subghz/scenes/subghz_scene_read.c | 9 +- .../subghz/scenes/subghz_scene_save_name.c | 48 +--- .../subghz/scenes/subghz_scene_saved.c | 70 +----- .../subghz/scenes/subghz_scene_set_type.c | 173 +++++++++++++ .../subghz/scenes/subghz_scene_start.c | 16 +- .../subghz/scenes/subghz_scene_transmitter.c | 45 ++-- applications/subghz/subghz.c | 7 + applications/subghz/subghz_cli.c | 21 +- applications/subghz/subghz_i.c | 153 ++++++++++++ applications/subghz/subghz_i.h | 15 +- applications/subghz/views/subghz_receiver.c | 7 +- applications/subghz/views/subghz_static.c | 2 +- .../subghz/views/subghz_test_packet.c | 2 +- .../subghz/views/subghz_transmitter.c | 22 +- .../subghz/views/subghz_transmitter.h | 3 +- .../targets/f6/furi-hal/furi-hal-subghz.c | 22 +- lib/subghz/protocols/subghz_protocol.h | 2 +- lib/subghz/protocols/subghz_protocol_came.c | 79 +++--- lib/subghz/protocols/subghz_protocol_came.h | 9 +- lib/subghz/protocols/subghz_protocol_common.c | 66 ++++- lib/subghz/protocols/subghz_protocol_common.h | 30 ++- .../protocols/subghz_protocol_faac_slh.c | 42 ++-- .../protocols/subghz_protocol_gate_tx.c | 67 +++-- .../protocols/subghz_protocol_gate_tx.h | 11 +- lib/subghz/protocols/subghz_protocol_ido.c | 53 ++-- lib/subghz/protocols/subghz_protocol_keeloq.c | 230 ++++++++---------- lib/subghz/protocols/subghz_protocol_keeloq.h | 25 +- .../protocols/subghz_protocol_nero_sketch.c | 97 ++++---- .../protocols/subghz_protocol_nero_sketch.h | 11 +- .../protocols/subghz_protocol_nice_flo.c | 147 ++++++++--- .../protocols/subghz_protocol_nice_flo.h | 21 +- .../protocols/subghz_protocol_nice_flor_s.c | 69 +++--- .../protocols/subghz_protocol_princeton.c | 95 +++----- .../protocols/subghz_protocol_princeton.h | 17 +- .../protocols/subghz_protocol_star_line.c | 38 +-- 37 files changed, 1059 insertions(+), 672 deletions(-) create mode 100644 applications/subghz/scenes/subghz_scene_set_type.c diff --git a/applications/subghz/scenes/subghz_scene_analyze.c b/applications/subghz/scenes/subghz_scene_analyze.c index e5985893..33a891f2 100644 --- a/applications/subghz/scenes/subghz_scene_analyze.c +++ b/applications/subghz/scenes/subghz_scene_analyze.c @@ -6,7 +6,11 @@ const void subghz_scene_analyze_on_enter(void* context) { } const bool subghz_scene_analyze_on_event(void* context, SceneManagerEvent event) { - // SubGhz* subghz = context; + SubGhz* subghz = context; + if(event.type == SceneManagerEventTypeTick) { + notification_message(subghz->notifications, &sequence_blink_blue_10); + return true; + } return false; } diff --git a/applications/subghz/scenes/subghz_scene_config.h b/applications/subghz/scenes/subghz_scene_config.h index aa2ddd6a..460001d2 100644 --- a/applications/subghz/scenes/subghz_scene_config.h +++ b/applications/subghz/scenes/subghz_scene_config.h @@ -10,3 +10,4 @@ ADD_SCENE(subghz, static, Static) ADD_SCENE(subghz, test, Test) ADD_SCENE(subghz, test_carrier, TestCarrier) ADD_SCENE(subghz, test_packet, TestPacket) +ADD_SCENE(subghz, set_type, SetType) diff --git a/applications/subghz/scenes/subghz_scene_read.c b/applications/subghz/scenes/subghz_scene_read.c index 02906ff8..7cab340d 100644 --- a/applications/subghz/scenes/subghz_scene_read.c +++ b/applications/subghz/scenes/subghz_scene_read.c @@ -25,6 +25,7 @@ const void subghz_scene_read_on_enter(void* context) { //Start CC1101 rx subghz_begin(FuriHalSubGhzPresetOokAsync); subghz_rx(433920000); + furi_hal_subghz_start_async_rx(subghz_worker_rx_callback, subghz->worker); subghz_worker_start(subghz->worker); subghz_protocol_enable_dump(subghz->protocol, subghz_read_protocol_callback, subghz); @@ -36,9 +37,13 @@ const bool subghz_scene_read_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; if(event.type == SceneManagerEventTypeCustom) { if(event.event == GUBGHZ_READ_CUSTOM_EVENT) { - scene_manager_next_scene(subghz->scene_manager, SubGhzViewReceiver); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneReceiver); + notification_message(subghz->notifications, &sequence_success); return true; } + } else if(event.type == SceneManagerEventTypeTick) { + notification_message(subghz->notifications, &sequence_blink_blue_10); + return true; } return false; } @@ -46,7 +51,7 @@ const bool subghz_scene_read_on_event(void* context, SceneManagerEvent event) { const void subghz_scene_read_on_exit(void* context) { SubGhz* subghz = context; - //Stop CC1101 + // Stop CC1101 subghz_worker_stop(subghz->worker); furi_hal_subghz_stop_async_rx(); subghz_end(); diff --git a/applications/subghz/scenes/subghz_scene_save_name.c b/applications/subghz/scenes/subghz_scene_save_name.c index 329c6931..5a3452f8 100644 --- a/applications/subghz/scenes/subghz_scene_save_name.c +++ b/applications/subghz/scenes/subghz_scene_save_name.c @@ -4,52 +4,6 @@ #define SCENE_SAVE_NAME_CUSTOM_EVENT (0UL) -bool subghz_scene_save_data_to_file(void* context, const char* dev_name) { - SubGhz* subghz = context; - FileWorker* file_worker = file_worker_alloc(false); - string_t dev_file_name; - string_init(dev_file_name); - string_t temp_str; - string_init(temp_str); - bool saved = false; - - do { - // Create subghz folder directory if necessary - if(!file_worker_mkdir(file_worker, SUBGHZ_APP_FOLDER)) { - break; - } - // Create saved directory if necessary - if(!file_worker_mkdir(file_worker, SUBGHZ_APP_PATH_FOLDER)) { - break; - } - // First remove subghz device file if it was saved - string_printf( - dev_file_name, "%s/%s%s", SUBGHZ_APP_PATH_FOLDER, dev_name, SUBGHZ_APP_EXTENSION); - if(!file_worker_remove(file_worker, string_get_cstr(dev_file_name))) { - break; - } - // Open file - if(!file_worker_open( - file_worker, string_get_cstr(dev_file_name), FSAM_WRITE, FSOM_CREATE_ALWAYS)) { - break; - } - //Get string save - subghz->protocol_result->to_save_string(subghz->protocol_result, temp_str); - // Prepare and write data to file - if(!file_worker_write(file_worker, string_get_cstr(temp_str), string_size(temp_str))) { - break; - } - saved = true; - } while(0); - - string_clear(temp_str); - string_clear(dev_file_name); - file_worker_close(file_worker); - file_worker_free(file_worker); - - return saved; -} - void subghz_scene_save_name_text_input_callback(void* context) { SubGhz* subghz = context; view_dispatcher_send_custom_event(subghz->view_dispatcher, SCENE_SAVE_NAME_CUSTOM_EVENT); @@ -81,7 +35,7 @@ const bool subghz_scene_save_name_on_event(void* context, SceneManagerEvent even if(event.type == SceneManagerEventTypeCustom) { if(event.event == SCENE_SAVE_NAME_CUSTOM_EVENT) { - if(subghz_scene_save_data_to_file(subghz, subghz->text_store)) { + if(subghz_save_protocol_to_file(subghz, subghz->text_store)) { scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveSuccess); return true; } else { diff --git a/applications/subghz/scenes/subghz_scene_saved.c b/applications/subghz/scenes/subghz_scene_saved.c index d1dd058a..09b7a4ac 100644 --- a/applications/subghz/scenes/subghz_scene_saved.c +++ b/applications/subghz/scenes/subghz_scene_saved.c @@ -1,77 +1,9 @@ #include "../subghz_i.h" -bool subghz_scene_saved_file_select(SubGhz* subghz) { - furi_assert(subghz); - - FileWorker* file_worker = file_worker_alloc(false); - string_t protocol_file_name; - string_init(protocol_file_name); - string_t temp_str; - string_init(temp_str); - - // Input events and views are managed by file_select - bool res = file_worker_file_select( - file_worker, - SUBGHZ_APP_PATH_FOLDER, - SUBGHZ_APP_EXTENSION, - subghz->text_store, - sizeof(subghz->text_store), - NULL); - - if(res) { - // Get key file path - string_printf( - protocol_file_name, - "%s/%s%s", - SUBGHZ_APP_PATH_FOLDER, - subghz->text_store, - SUBGHZ_APP_EXTENSION); - } else { - string_clear(temp_str); - string_clear(protocol_file_name); - - file_worker_close(file_worker); - file_worker_free(file_worker); - return res; - } - - do { - if(!file_worker_open( - file_worker, string_get_cstr(protocol_file_name), FSAM_READ, FSOM_OPEN_EXISTING)) { - break; - } - // Read and parse name protocol from 1st line - if(!file_worker_read_until(file_worker, temp_str, '\n')) { - break; - } - // strlen("Protocol: ") = 10 - string_right(temp_str, 10); - subghz->protocol_result = - subghz_protocol_get_by_name(subghz->protocol, string_get_cstr(temp_str)); - if(subghz->protocol_result == NULL) { - file_worker_show_error(file_worker, "Cannot parse\nfile"); - break; - } - if(!subghz->protocol_result->to_load_protocol(file_worker, subghz->protocol_result)) { - file_worker_show_error(file_worker, "Cannot parse\nfile"); - break; - } - res = true; - } while(0); - - string_clear(temp_str); - string_clear(protocol_file_name); - - file_worker_close(file_worker); - file_worker_free(file_worker); - - return res; -} - const void subghz_scene_saved_on_enter(void* context) { SubGhz* subghz = context; - if(subghz_scene_saved_file_select(subghz)) { + if(subghz_saved_protocol_select(subghz)) { scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter); } else { scene_manager_search_and_switch_to_previous_scene(subghz->scene_manager, SubGhzSceneStart); diff --git a/applications/subghz/scenes/subghz_scene_set_type.c b/applications/subghz/scenes/subghz_scene_set_type.c new file mode 100644 index 00000000..d3c36f54 --- /dev/null +++ b/applications/subghz/scenes/subghz_scene_set_type.c @@ -0,0 +1,173 @@ +#include "../subghz_i.h" +#include "../lib/subghz/protocols/subghz_protocol_keeloq.h" + +enum SubmenuIndex { + SubmenuIndexPricenton, + SubmenuIndexNiceFlo12bit, + SubmenuIndexNiceFlo24bit, + SubmenuIndexCAME12bit, + SubmenuIndexCAME24bit, + SubmenuIndexNeroSketch, + SubmenuIndexGateTX, + SubmenuIndexDoorHan, +}; + +bool subghz_scene_set_type_submenu_to_find_protocol(void* context, const char* protocol_name) { + SubGhz* subghz = context; + subghz->protocol_result = subghz_protocol_get_by_name(subghz->protocol, protocol_name); + if(subghz->protocol_result == NULL) { + //show error + return false; + } + return true; +} + +void subghz_scene_set_type_submenu_callback(void* context, uint32_t index) { + SubGhz* subghz = context; + view_dispatcher_send_custom_event(subghz->view_dispatcher, index); +} + +const void subghz_scene_set_type_on_enter(void* context) { + SubGhz* subghz = context; + + submenu_add_item( + subghz->submenu, + "Pricenton", + SubmenuIndexPricenton, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "Nice Flo 12bit", + SubmenuIndexNiceFlo12bit, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "Nice Flo 24bit", + SubmenuIndexNiceFlo24bit, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "CAME 12bit", + SubmenuIndexCAME12bit, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "CAME 24bit", + SubmenuIndexCAME24bit, + subghz_scene_set_type_submenu_callback, + subghz); + // submenu_add_item( + // subghz->submenu, "Nero Sketch", SubmenuIndexNeroSketch, subghz_scene_set_type_submenu_callback, subghz); + submenu_add_item( + subghz->submenu, + "Gate TX", + SubmenuIndexGateTX, + subghz_scene_set_type_submenu_callback, + subghz); + submenu_add_item( + subghz->submenu, + "DoorHan", + SubmenuIndexDoorHan, + subghz_scene_set_type_submenu_callback, + subghz); + + submenu_set_selected_item( + subghz->submenu, scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSetType)); + + view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewMenu); +} + +const bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { + SubGhz* subghz = context; + bool generated_protocol = false; + + if(event.type == SceneManagerEventTypeCustom) { + uint32_t key = subghz_random_serial(); + switch(event.event) { + case SubmenuIndexPricenton: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "Princeton")) { + subghz->protocol_result->code_last_count_bit = 24; + key = (key & 0x00FFFFF0) | 0x4; //btn 0x1, 0x2, 0x4, 0x8 + subghz->protocol_result->code_last_found = key; + generated_protocol = true; + } + break; + case SubmenuIndexNiceFlo12bit: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "Nice FLO")) { + subghz->protocol_result->code_last_count_bit = 12; + key = (key & 0x0000FFF0) | 0x1; //btn 0x1, 0x2, 0x4 + subghz->protocol_result->code_last_found = key; + generated_protocol = true; + } + break; + case SubmenuIndexNiceFlo24bit: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "Nice FLO")) { + subghz->protocol_result->code_last_count_bit = 24; + key = (key & 0x00FFFFF0) | 0x4; //btn 0x1, 0x2, 0x4, 0x8 + subghz->protocol_result->code_last_found = key; + generated_protocol = true; + } + break; + case SubmenuIndexCAME12bit: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "CAME")) { + subghz->protocol_result->code_last_count_bit = 12; + key = (key & 0x0000FFF0) | 0x1; //btn 0x1, 0x2, 0x4 + subghz->protocol_result->code_last_found = key; + generated_protocol = true; + } + break; + case SubmenuIndexCAME24bit: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "CAME")) { + subghz->protocol_result->code_last_count_bit = 24; + key = (key & 0x00FFFFF0) | 0x4; //btn 0x1, 0x2, 0x4, 0x8 + subghz->protocol_result->code_last_found = key; + generated_protocol = true; + } + break; + // case SubmenuIndexNeroSketch: + // /* code */ + // break; + case SubmenuIndexGateTX: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "GateTX")) { + subghz->protocol_result->code_last_count_bit = 24; + key = (key & 0x00F0FFFF) | 0xF << 16; //btn 0xF, 0xC, 0xA, 0x6 + subghz->protocol_result->code_last_found = subghz_protocol_common_reverse_key( + key, subghz->protocol_result->code_last_count_bit); + generated_protocol = true; + } + break; + case SubmenuIndexDoorHan: + if(subghz_scene_set_type_submenu_to_find_protocol(subghz, "KeeLoq")) { + subghz->protocol_result->code_last_count_bit = 64; + subghz->protocol_result->serial = key & 0x0FFFFFFF; + subghz->protocol_result->btn = 0x2; //btn 0x1, 0x2, 0x4, 0x8 + subghz->protocol_result->cnt = 0x0003; + subghz_protocol_keeloq_set_manufacture_name(subghz->protocol_result, "DoorHan"); + subghz->protocol_result->code_last_found = + subghz_protocol_keeloq_gen_key(subghz->protocol_result); + + generated_protocol = true; + } + break; + + default: + return false; + break; + } + if(generated_protocol) { + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); + return true; + } + } + + return false; +} + +const void subghz_scene_set_type_on_exit(void* context) { + SubGhz* subghz = context; + submenu_clean(subghz->submenu); +} diff --git a/applications/subghz/scenes/subghz_scene_start.c b/applications/subghz/scenes/subghz_scene_start.c index 88b69962..d30536a5 100644 --- a/applications/subghz/scenes/subghz_scene_start.c +++ b/applications/subghz/scenes/subghz_scene_start.c @@ -6,6 +6,7 @@ enum SubmenuIndex { SubmenuIndexSaved, SubmenuIndexStatic, SubmenuIndexTest, + SubmenuIndexAddManualy, }; void subghz_scene_start_submenu_callback(void* context, uint32_t index) { @@ -15,7 +16,9 @@ void subghz_scene_start_submenu_callback(void* context, uint32_t index) { const void subghz_scene_start_on_enter(void* context) { SubGhz* subghz = context; - + if(subghz->state_notifications == NOTIFICATION_STARTING_STATE) { + subghz->state_notifications = NOTIFICATION_IDLE_STATE; + } submenu_add_item( subghz->submenu, "Analyze", @@ -26,6 +29,12 @@ const void subghz_scene_start_on_enter(void* context) { subghz->submenu, "Read", SubmenuIndexRead, subghz_scene_start_submenu_callback, subghz); submenu_add_item( subghz->submenu, "Saved", SubmenuIndexSaved, subghz_scene_start_submenu_callback, subghz); + submenu_add_item( + subghz->submenu, + "Add manually", + SubmenuIndexAddManualy, + subghz_scene_start_submenu_callback, + subghz); submenu_add_item( subghz->submenu, "Static", SubmenuIndexStatic, subghz_scene_start_submenu_callback, subghz); submenu_add_item( @@ -56,6 +65,11 @@ const bool subghz_scene_start_on_event(void* context, SceneManagerEvent event) { subghz->scene_manager, SubGhzSceneStart, SubmenuIndexSaved); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaved); return true; + } else if(event.event == SubmenuIndexAddManualy) { + scene_manager_set_scene_state( + subghz->scene_manager, SubGhzSceneStart, SubmenuIndexAddManualy); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSetType); + return true; } else if(event.event == SubmenuIndexStatic) { scene_manager_set_scene_state( subghz->scene_manager, SubGhzSceneStart, SubmenuIndexStatic); diff --git a/applications/subghz/scenes/subghz_scene_transmitter.c b/applications/subghz/scenes/subghz_scene_transmitter.c index c2c9ce51..e28e6d88 100644 --- a/applications/subghz/scenes/subghz_scene_transmitter.c +++ b/applications/subghz/scenes/subghz_scene_transmitter.c @@ -1,28 +1,5 @@ #include "../subghz_i.h" #include "../views/subghz_transmitter.h" -#include "lib/subghz/protocols/subghz_protocol_princeton.h" - -void subghz_scene_transmitter_tx(void* context) { - SubGhz* subghz = context; - SubGhzEncoderPrinceton* encoder = subghz_encoder_princeton_alloc(); - - subghz_encoder_princeton_reset(encoder, subghz->protocol_result->code_last_found, 4); - subghz_encoder_princeton_set_te(encoder, subghz->protocol_result); - - subghz_begin(FuriHalSubGhzPresetOokAsync); - subghz_tx(433920000); - - furi_hal_subghz_start_async_tx(subghz_encoder_princeton_yield, encoder); - - while(!furi_hal_subghz_is_async_tx_complete()) { - osDelay(20); - } - - //Stop tx - furi_hal_subghz_stop_async_tx(); - subghz_end(); - subghz_encoder_princeton_free(encoder); -} void subghz_scene_transmitter_callback(SubghzTransmitterEvent event, void* context) { furi_assert(context); @@ -35,24 +12,36 @@ const void subghz_scene_transmitter_on_enter(void* context) { SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter; subghz_transmitter_set_callback(subghz_transmitter, subghz_scene_transmitter_callback, subghz); - subghz_transmitter_set_protocol(subghz_transmitter, subghz->protocol_result); + view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewTransmitter); + + subghz->state_notifications = NOTIFICATION_IDLE_STATE; } const bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) { SubGhz* subghz = context; if(event.type == SceneManagerEventTypeCustom) { - if(event.event == SubghzTransmitterEventSend) { - //scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); - subghz_scene_transmitter_tx(subghz); + if(event.event == SubghzTransmitterEventSendStart) { + subghz->state_notifications = NOTIFICATION_TX_STATE; + subghz_transmitter_tx_start(subghz); + return true; + } else if(event.event == SubghzTransmitterEventSendStop) { + subghz->state_notifications = NOTIFICATION_IDLE_STATE; + subghz_transmitter_tx_stop(subghz); return true; } else if(event.event == SubghzTransmitterEventBack) { + subghz->state_notifications = NOTIFICATION_IDLE_STATE; scene_manager_search_and_switch_to_previous_scene( subghz->scene_manager, SubGhzSceneStart); return true; } + } else if(event.type == SceneManagerEventTypeTick) { + if(subghz->state_notifications == NOTIFICATION_TX_STATE) { + notification_message(subghz->notifications, &sequence_blink_red_10); + } + return true; } return false; } @@ -60,6 +49,6 @@ const bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent ev const void subghz_scene_transmitter_on_exit(void* context) { SubGhz* subghz = context; SubghzTransmitter* subghz_transmitter = subghz->subghz_transmitter; - subghz_transmitter_set_callback(subghz_transmitter, NULL, subghz); + subghz->state_notifications = NOTIFICATION_IDLE_STATE; } diff --git a/applications/subghz/subghz.c b/applications/subghz/subghz.c index bf45208b..acc054ab 100644 --- a/applications/subghz/subghz.c +++ b/applications/subghz/subghz.c @@ -62,6 +62,9 @@ SubGhz* subghz_alloc() { view_dispatcher_set_tick_event_callback( subghz->view_dispatcher, subghz_tick_event_callback, 100); + // Open Notification record + subghz->notifications = furi_record_open("notification"); + // SubMenu subghz->submenu = submenu_alloc(); view_dispatcher_add_view( @@ -196,6 +199,10 @@ void subghz_free(SubGhz* subghz) { subghz_protocol_free(subghz->protocol); subghz_worker_free(subghz->worker); + // Notifications + furi_record_close("notification"); + subghz->notifications = NULL; + // The rest free(subghz); } diff --git a/applications/subghz/subghz_cli.c b/applications/subghz/subghz_cli.c index 9681fdef..0e4eb7fe 100644 --- a/applications/subghz/subghz_cli.c +++ b/applications/subghz/subghz_cli.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #define SUBGHZ_FREQUENCY_RANGE_STR \ @@ -129,25 +130,29 @@ void subghz_cli_command_tx(Cli* cli, string_t args, void* context) { key, repeat); - SubGhzEncoderPrinceton* encoder = subghz_encoder_princeton_alloc(); - subghz_encoder_princeton_reset(encoder, key, repeat); + SubGhzDecoderPrinceton* protocol = subghz_decoder_princeton_alloc(); + protocol->common.code_last_found = key; + protocol->common.code_last_count_bit = 24; + SubGhzProtocolEncoderCommon* encoder = subghz_protocol_encoder_common_alloc(); + encoder->repeat = repeat; + + subghz_protocol_princeton_send_key(protocol, encoder); furi_hal_subghz_reset(); furi_hal_subghz_load_preset(FuriHalSubGhzPresetOokAsync); frequency = furi_hal_subghz_set_frequency_and_path(frequency); + furi_hal_subghz_start_async_tx(subghz_protocol_encoder_common_yield, encoder); - furi_hal_subghz_start_async_tx(subghz_encoder_princeton_yield, encoder); - - while(!furi_hal_subghz_is_async_tx_complete()) { + while(!(furi_hal_subghz_is_async_tx_complete() || cli_cmd_interrupt_received(cli))) { printf("."); fflush(stdout); osDelay(333); } - furi_hal_subghz_stop_async_tx(); - furi_hal_subghz_sleep(); - subghz_encoder_princeton_free(encoder); + + subghz_decoder_princeton_free(protocol); + subghz_protocol_encoder_common_free(encoder); } typedef struct { diff --git a/applications/subghz/subghz_i.c b/applications/subghz/subghz_i.c index 359b2651..03ebbc26 100644 --- a/applications/subghz/subghz_i.c +++ b/applications/subghz/subghz_i.c @@ -7,6 +7,7 @@ #include #include #include "file-worker.h" +#include "../notification/notification.h" void subghz_begin(FuriHalSubGhzPreset preset) { furi_hal_subghz_reset(); @@ -39,6 +40,34 @@ void subghz_end(void) { furi_hal_subghz_sleep(); } +void subghz_transmitter_tx_start(void* context) { + SubGhz* subghz = context; + subghz->encoder = subghz_protocol_encoder_common_alloc(); + subghz->encoder->repeat = 200; //max repeat with the button held down + //get upload + if(subghz->protocol_result->get_upload_protocol) { + if(subghz->protocol_result->get_upload_protocol(subghz->protocol_result, subghz->encoder)) { + subghz_begin(FuriHalSubGhzPresetOokAsync); + subghz_tx(433920000); + //Start TX + furi_hal_subghz_start_async_tx(subghz_protocol_encoder_common_yield, subghz->encoder); + } + } +} + +void subghz_transmitter_tx_stop(void* context) { + SubGhz* subghz = context; + //Stop TX + furi_hal_subghz_stop_async_tx(); + subghz_end(); + subghz_protocol_encoder_common_free(subghz->encoder); + //if protocol dynamic then we save the last upload + if(subghz->protocol_result->type_protocol == TYPE_PROTOCOL_DYNAMIC) { + subghz_save_protocol_to_file(subghz, subghz->text_store); + } + notification_message(subghz->notifications, &sequence_reset_red); +} + bool subghz_key_load(SubGhz* subghz, const char* file_path) { furi_assert(subghz); furi_assert(file_path); @@ -81,3 +110,127 @@ bool subghz_key_load(SubGhz* subghz, const char* file_path) { return loaded; } + +bool subghz_save_protocol_to_file(void* context, const char* dev_name) { + SubGhz* subghz = context; + FileWorker* file_worker = file_worker_alloc(false); + string_t dev_file_name; + string_init(dev_file_name); + string_t temp_str; + string_init(temp_str); + bool saved = false; + + do { + // Create subghz folder directory if necessary + if(!file_worker_mkdir(file_worker, SUBGHZ_APP_FOLDER)) { + break; + } + // Create saved directory if necessary + if(!file_worker_mkdir(file_worker, SUBGHZ_APP_PATH_FOLDER)) { + break; + } + // First remove subghz device file if it was saved + string_printf( + dev_file_name, "%s/%s%s", SUBGHZ_APP_PATH_FOLDER, dev_name, SUBGHZ_APP_EXTENSION); + if(!file_worker_remove(file_worker, string_get_cstr(dev_file_name))) { + break; + } + // Open file + if(!file_worker_open( + file_worker, string_get_cstr(dev_file_name), FSAM_WRITE, FSOM_CREATE_ALWAYS)) { + break; + } + //Get string save + subghz->protocol_result->to_save_string(subghz->protocol_result, temp_str); + // Prepare and write data to file + if(!file_worker_write(file_worker, string_get_cstr(temp_str), string_size(temp_str))) { + break; + } + saved = true; + } while(0); + + string_clear(temp_str); + string_clear(dev_file_name); + file_worker_close(file_worker); + file_worker_free(file_worker); + + return saved; +} + +bool subghz_saved_protocol_select(SubGhz* subghz) { + furi_assert(subghz); + + FileWorker* file_worker = file_worker_alloc(false); + string_t protocol_file_name; + string_init(protocol_file_name); + string_t temp_str; + string_init(temp_str); + + // Input events and views are managed by file_select + bool res = file_worker_file_select( + file_worker, + SUBGHZ_APP_PATH_FOLDER, + SUBGHZ_APP_EXTENSION, + subghz->text_store, + sizeof(subghz->text_store), + NULL); + + if(res) { + // Get key file path + string_printf( + protocol_file_name, + "%s/%s%s", + SUBGHZ_APP_PATH_FOLDER, + subghz->text_store, + SUBGHZ_APP_EXTENSION); + } else { + string_clear(temp_str); + string_clear(protocol_file_name); + + file_worker_close(file_worker); + file_worker_free(file_worker); + return res; + } + res = false; + do { + if(!file_worker_open( + file_worker, string_get_cstr(protocol_file_name), FSAM_READ, FSOM_OPEN_EXISTING)) { + break; + } + // Read and parse name protocol from 1st line + if(!file_worker_read_until(file_worker, temp_str, '\n')) { + break; + } + // strlen("Protocol: ") = 10 + string_right(temp_str, 10); + subghz->protocol_result = + subghz_protocol_get_by_name(subghz->protocol, string_get_cstr(temp_str)); + if(subghz->protocol_result == NULL) { + file_worker_show_error(file_worker, "Cannot parse\nfile"); + break; + } + if(!subghz->protocol_result->to_load_protocol(file_worker, subghz->protocol_result)) { + file_worker_show_error(file_worker, "Cannot parse\nfile"); + break; + } + res = true; + } while(0); + + string_clear(temp_str); + string_clear(protocol_file_name); + + file_worker_close(file_worker); + file_worker_free(file_worker); + + return res; +} + +uint32_t subghz_random_serial(void) { + static bool rand_generator_inited = false; + + if(!rand_generator_inited) { + srand(DWT->CYCCNT); + rand_generator_inited = true; + } + return (uint32_t)rand(); +} diff --git a/applications/subghz/subghz_i.h b/applications/subghz/subghz_i.h index a7a86a8c..8149363d 100644 --- a/applications/subghz/subghz_i.h +++ b/applications/subghz/subghz_i.h @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -27,16 +28,22 @@ #define SUBGHZ_TEXT_STORE_SIZE 128 +#define NOTIFICATION_STARTING_STATE 0u +#define NOTIFICATION_IDLE_STATE 1u +#define NOTIFICATION_TX_STATE 2u + extern const uint32_t subghz_frequencies[]; extern const uint32_t subghz_frequencies_count; extern const uint32_t subghz_frequencies_433_92; struct SubGhz { Gui* gui; + NotificationApp* notifications; SubGhzWorker* worker; SubGhzProtocol* protocol; SubGhzProtocolCommon* protocol_result; + SubGhzProtocolEncoderCommon* encoder; SceneManager* scene_manager; @@ -47,6 +54,7 @@ struct SubGhz { Popup* popup; TextInput* text_input; char text_store[SUBGHZ_TEXT_STORE_SIZE + 1]; + uint8_t state_notifications; SubghzAnalyze* subghz_analyze; SubghzReceiver* subghz_receiver; @@ -77,4 +85,9 @@ void subghz_rx(uint32_t frequency); void subghz_tx(uint32_t frequency); void subghz_idle(void); void subghz_end(void); -bool subghz_key_load(SubGhz* subghz, const char* file_path); \ No newline at end of file +void subghz_transmitter_tx_start(void* context); +void subghz_transmitter_tx_stop(void* context); +bool subghz_key_load(SubGhz* subghz, const char* file_path); +bool subghz_save_protocol_to_file(void* context, const char* dev_name); +bool subghz_saved_protocol_select(SubGhz* subghz); +uint32_t subghz_random_serial(void); diff --git a/applications/subghz/views/subghz_receiver.c b/applications/subghz/views/subghz_receiver.c index 11b030d1..a4d9aef7 100644 --- a/applications/subghz/views/subghz_receiver.c +++ b/applications/subghz/views/subghz_receiver.c @@ -47,7 +47,8 @@ void subghz_receiver_draw(Canvas* canvas, SubghzReceiverModel* model) { elements_multiline_text(canvas, 0, 10, string_get_cstr(model->text)); elements_button_left(canvas, "Back"); - if(model->protocol && model->protocol->to_save_string) { + if(model->protocol && model->protocol->to_save_string && + strcmp(model->protocol->name, "KeeLoq")) { elements_button_right(canvas, "Save"); } } @@ -61,7 +62,9 @@ bool subghz_receiver_input(InputEvent* event, void* context) { bool can_be_saved = false; with_view_model( subghz_receiver->view, (SubghzReceiverModel * model) { - can_be_saved = (model->protocol && model->protocol->to_save_string); + can_be_saved = + (model->protocol && model->protocol->to_save_string && + strcmp(model->protocol->name, "KeeLoq")); return false; }); diff --git a/applications/subghz/views/subghz_static.c b/applications/subghz/views/subghz_static.c index 52bf0ae6..d8937bf3 100644 --- a/applications/subghz/views/subghz_static.c +++ b/applications/subghz/views/subghz_static.c @@ -89,7 +89,7 @@ bool subghz_static_input(InputEvent* event, void* context) { NotificationApp* notification = furi_record_open("notification"); notification_message_block(notification, &sequence_set_red_255); - subghz_encoder_princeton_reset( + subghz_encoder_princeton_set( instance->encoder, subghz_static_keys[model->button], 20); furi_hal_subghz_start_async_tx( subghz_encoder_princeton_yield, instance->encoder); diff --git a/applications/subghz/views/subghz_test_packet.c b/applications/subghz/views/subghz_test_packet.c index 44841af2..a15cc33f 100644 --- a/applications/subghz/views/subghz_test_packet.c +++ b/applications/subghz/views/subghz_test_packet.c @@ -153,7 +153,7 @@ static bool subghz_test_packet_input(InputEvent* event, void* context) { if(model->status == SubghzTestPacketModelStatusRx) { furi_hal_subghz_start_async_rx(subghz_test_packet_rx_callback, instance); } else { - subghz_encoder_princeton_reset(instance->encoder, 0x00AABBCC, 1000); + subghz_encoder_princeton_set(instance->encoder, 0x00AABBCC, 1000); furi_hal_subghz_start_async_tx(subghz_encoder_princeton_yield, instance->encoder); } diff --git a/applications/subghz/views/subghz_transmitter.c b/applications/subghz/views/subghz_transmitter.c index 703d00d8..1ba76d97 100644 --- a/applications/subghz/views/subghz_transmitter.c +++ b/applications/subghz/views/subghz_transmitter.c @@ -48,19 +48,31 @@ void subghz_transmitter_draw(Canvas* canvas, SubghzTransmitterModel* model) { canvas_set_font(canvas, FontSecondary); elements_multiline_text(canvas, 0, 10, string_get_cstr(model->text)); - elements_button_center(canvas, "Send"); + if(model->protocol && model->protocol->get_upload_protocol) { + elements_button_center(canvas, "Send"); + } } bool subghz_transmitter_input(InputEvent* event, void* context) { furi_assert(context); SubghzTransmitter* subghz_transmitter = context; - - if(event->type != InputTypeShort) return false; + bool can_be_send = false; + with_view_model( + subghz_transmitter->view, (SubghzTransmitterModel * model) { + can_be_send = (model->protocol && model->protocol->get_upload_protocol); + string_clean(model->text); + model->protocol->to_string(model->protocol, model->text); + return true; + }); + //if(event->type != InputTypeShort) return false; if(event->key == InputKeyBack) { return false; - } else if(event->key == InputKeyOk) { - subghz_transmitter->callback(SubghzTransmitterEventSend, subghz_transmitter->context); + } else if(can_be_send && event->key == InputKeyOk && event->type == InputTypePress) { + subghz_transmitter->callback(SubghzTransmitterEventSendStart, subghz_transmitter->context); + return true; + } else if(can_be_send && event->key == InputKeyOk && event->type == InputTypeRelease) { + subghz_transmitter->callback(SubghzTransmitterEventSendStop, subghz_transmitter->context); return true; } diff --git a/applications/subghz/views/subghz_transmitter.h b/applications/subghz/views/subghz_transmitter.h index ffd27373..2c1f1b72 100644 --- a/applications/subghz/views/subghz_transmitter.h +++ b/applications/subghz/views/subghz_transmitter.h @@ -4,7 +4,8 @@ #include typedef enum { - SubghzTransmitterEventSend, + SubghzTransmitterEventSendStart, + SubghzTransmitterEventSendStop, SubghzTransmitterEventBack, } SubghzTransmitterEvent; diff --git a/firmware/targets/f6/furi-hal/furi-hal-subghz.c b/firmware/targets/f6/furi-hal/furi-hal-subghz.c index 62cd2668..0b1b7b01 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-subghz.c +++ b/firmware/targets/f6/furi-hal/furi-hal-subghz.c @@ -404,6 +404,7 @@ void furi_hal_subghz_stop_async_rx() { #define API_HAL_SUBGHZ_ASYNC_TX_BUFFER_FULL (256) #define API_HAL_SUBGHZ_ASYNC_TX_BUFFER_HALF (API_HAL_SUBGHZ_ASYNC_TX_BUFFER_FULL/2) +#define API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME 333 typedef struct { uint32_t* buffer; @@ -416,16 +417,30 @@ static FuriHalSubGhzAsyncTx furi_hal_subghz_async_tx = {0}; static void furi_hal_subghz_async_tx_refill(uint32_t* buffer, size_t samples) { while (samples > 0) { + bool is_odd = samples % 2; LevelDuration ld = furi_hal_subghz_async_tx.callback(furi_hal_subghz_async_tx.callback_context); if (level_duration_is_reset(ld)) { + // One more even sample required to end at low level + if (is_odd) { + *buffer = API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME; + buffer++; + samples--; + } break; - } else { + } else { + // Inject guard time if level is incorrect + if (is_odd == level_duration_get_level(ld)) { + *buffer = API_HAL_SUBGHZ_ASYNC_TX_GUARD_TIME; + buffer++; + samples--; + } + uint32_t duration = level_duration_get_duration(ld); assert(duration > 0); *buffer = duration; + buffer++; + samples--; } - buffer++; - samples--; } memset(buffer, 0, samples * sizeof(uint32_t)); @@ -452,7 +467,6 @@ static void furi_hal_subghz_async_tx_timer_isr() { } else { furi_hal_subghz_state = SubGhzStateAsyncTxEnd; LL_TIM_DisableCounter(TIM2); - hal_gpio_init(&gpio_cc1101_g0, GpioModeOutputPushPull, GpioPullDown, GpioSpeedLow); } } } diff --git a/lib/subghz/protocols/subghz_protocol.h b/lib/subghz/protocols/subghz_protocol.h index 3c33b814..f4a86c0b 100644 --- a/lib/subghz/protocols/subghz_protocol.h +++ b/lib/subghz/protocols/subghz_protocol.h @@ -41,7 +41,7 @@ void subghz_protocol_enable_dump_text(SubGhzProtocol* instance, SubGhzProtocolTe * @param callback - SubGhzProtocolTextCallback callback * @param context */ -void subghz_protocol_enable_dump( SubGhzProtocol* instance, SubGhzProtocolCommonCallbackDump callback, void* context); +void subghz_protocol_enable_dump(SubGhzProtocol* instance, SubGhzProtocolCommonCallbackDump callback, void* context); /** File name rainbow table Nice Flor-S * diff --git a/lib/subghz/protocols/subghz_protocol_came.c b/lib/subghz/protocols/subghz_protocol_came.c index 7af2f6dc..330a1509 100644 --- a/lib/subghz/protocols/subghz_protocol_came.c +++ b/lib/subghz/protocols/subghz_protocol_came.c @@ -14,16 +14,19 @@ struct SubGhzProtocolCame { SubGhzProtocolCame* subghz_protocol_came_alloc() { SubGhzProtocolCame* instance = furi_alloc(sizeof(SubGhzProtocolCame)); - instance->common.name = "Came"; + instance->common.name = "CAME"; instance->common.code_min_count_bit_for_found = 12; - instance->common.te_shot = 320; + instance->common.te_short = 320; instance->common.te_long = 640; instance->common.te_delta = 150; - instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_came_to_str; + instance->common.type_protocol = TYPE_PROTOCOL_STATIC; + instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_came_to_str; instance->common.to_save_string = (SubGhzProtocolCommonGetStrSave)subghz_protocol_came_to_save_str; instance->common.to_load_protocol= (SubGhzProtocolCommonLoad)subghz_protocol_came_to_load_protocol; + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_came_send_key; return instance; } @@ -33,39 +36,29 @@ void subghz_protocol_came_free(SubGhzProtocolCame* instance) { free(instance); } -/** Send bit - * - * @param instance - SubGhzProtocolCame instance - * @param bit - bit - */ -void subghz_protocol_came_send_bit(SubGhzProtocolCame* instance, uint8_t bit) { - if (bit) { - //send bit 1 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - } else { - //send bit 0 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - } -} - -void subghz_protocol_came_send_key(SubGhzProtocolCame* instance, uint64_t key, uint8_t bit, uint8_t repeat) { - while (repeat--) { - //Send header - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 34); //+2 interval v bit 1 - //Send start bit - subghz_protocol_came_send_bit(instance, 1); - //Send key data - for (uint8_t i = bit; i > 0; i--) { - subghz_protocol_came_send_bit(instance, bit_read(key, i - 1)); +bool subghz_protocol_came_send_key(SubGhzProtocolCame* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + size_t index = 0; + encoder->size_upload =(instance->common.code_last_count_bit * 2) + 2; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + //Send header + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short * 36); + //Send start bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); } } + return true; } void subghz_protocol_came_reset(SubGhzProtocolCame* instance) { @@ -76,7 +69,7 @@ void subghz_protocol_came_parse(SubGhzProtocolCame* instance, bool level, uint32 switch (instance->common.parser_step) { case 0: if ((!level) - && (DURATION_DIFF(duration, instance->common.te_shot * 51)< instance->common.te_delta * 51)) { //Need protocol 36 te_shot + && (DURATION_DIFF(duration, instance->common.te_short * 51)< instance->common.te_delta * 51)) { //Need protocol 36 te_short //Found header CAME instance->common.parser_step = 1; } else { @@ -86,7 +79,7 @@ void subghz_protocol_came_parse(SubGhzProtocolCame* instance, bool level, uint32 case 1: if (!level) { break; - } else if (DURATION_DIFF(duration, instance->common.te_shot)< instance->common.te_delta) { + } else if (DURATION_DIFF(duration, instance->common.te_short)< instance->common.te_delta) { //Found start bit CAME instance->common.parser_step = 2; instance->common.code_found = 0; @@ -97,7 +90,7 @@ void subghz_protocol_came_parse(SubGhzProtocolCame* instance, bool level, uint32 break; case 2: if (!level) { //save interval - if (duration >= (instance->common.te_shot * 4)) { + if (duration >= (instance->common.te_short * 4)) { instance->common.parser_step = 1; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { @@ -122,12 +115,12 @@ void subghz_protocol_came_parse(SubGhzProtocolCame* instance, bool level, uint32 break; case 3: if (level) { - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot) < instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short) < instance->common.te_delta) && (DURATION_DIFF(duration, instance->common.te_long)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long)< instance->common.te_delta) - && (DURATION_DIFF(duration, instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration, instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else @@ -140,25 +133,21 @@ void subghz_protocol_came_parse(SubGhzProtocolCame* instance, bool level, uint32 } void subghz_protocol_came_to_str(SubGhzProtocolCame* instance, string_t output) { - uint32_t code_found_hi = instance->common.code_last_found >> 32; uint32_t code_found_lo = instance->common.code_last_found & 0x00000000ffffffff; uint64_t code_found_reverse = subghz_protocol_common_reverse_key( instance->common.code_last_found, instance->common.code_last_count_bit); - uint32_t code_found_reverse_hi = code_found_reverse >> 32; uint32_t code_found_reverse_lo = code_found_reverse & 0x00000000ffffffff; string_cat_printf( output, "%s %d Bit\r\n" - " KEY:0x%lX%08lX\r\n" - " YEK:0x%lX%08lX\r\n", + " KEY:0x%08lX\r\n" + " YEK:0x%08lX\r\n", instance->common.name, instance->common.code_last_count_bit, - code_found_hi, code_found_lo, - code_found_reverse_hi, code_found_reverse_lo ); } diff --git a/lib/subghz/protocols/subghz_protocol_came.h b/lib/subghz/protocols/subghz_protocol_came.h index 42c1b9a3..24810da4 100644 --- a/lib/subghz/protocols/subghz_protocol_came.h +++ b/lib/subghz/protocols/subghz_protocol_came.h @@ -16,14 +16,13 @@ SubGhzProtocolCame* subghz_protocol_came_alloc(); */ void subghz_protocol_came_free(SubGhzProtocolCame* instance); -/** Sends the key on the air +/** Get upload protocol * * @param instance - SubGhzProtocolCame instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool */ -void subghz_protocol_came_send_key(SubGhzProtocolCame* instance, uint64_t key, uint8_t bit, uint8_t repeat); +bool subghz_protocol_came_send_key(SubGhzProtocolCame* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzProtocolCame instance diff --git a/lib/subghz/protocols/subghz_protocol_common.c b/lib/subghz/protocols/subghz_protocol_common.c index 97ded06e..2c5f4f2e 100644 --- a/lib/subghz/protocols/subghz_protocol_common.c +++ b/lib/subghz/protocols/subghz_protocol_common.c @@ -1,12 +1,50 @@ #include "subghz_protocol_common.h" #include +#include + + +SubGhzProtocolEncoderCommon* subghz_protocol_encoder_common_alloc() { + SubGhzProtocolEncoderCommon* instance = furi_alloc(sizeof(SubGhzProtocolEncoderCommon)); + instance->upload = furi_alloc(SUBGHZ_ENCODER_UPLOAD_MAX_SIZE * sizeof(LevelDuration)); + instance->start = true; + instance->repeat = 10; //default number of repeat + return instance; +} + +void subghz_protocol_encoder_common_free(SubGhzProtocolEncoderCommon* instance) { + furi_assert(instance); + free(instance->upload); + free(instance); +} + +size_t subghz_encoder_common_get_repeat_left(SubGhzProtocolEncoderCommon* instance) { + furi_assert(instance); + return instance->repeat; +} + +LevelDuration subghz_protocol_encoder_common_yield(void* context) { + SubGhzProtocolEncoderCommon* instance = context; + + if(instance->repeat == 0){ + return level_duration_reset(); + } + + LevelDuration ret = instance->upload[instance->front]; + + if(++instance->front == instance->size_upload) { + instance->repeat--; + instance->front = 0; + } + + return ret; +} void subghz_protocol_common_add_bit(SubGhzProtocolCommon *common, uint8_t bit){ - common->code_found = common->code_found <<1 | bit; + common->code_found = common->code_found << 1 | bit; common->code_count_bit++; } -bool subghz_protocol_common_check_interval (SubGhzProtocolCommon *common, uint32_t duration, uint16_t duration_check) { +bool subghz_protocol_common_check_interval(SubGhzProtocolCommon *common, uint32_t duration, uint16_t duration_check) { if ((duration_check >= (duration - common->te_delta))&&(duration_check <= (duration + common->te_delta))){ return true; } else { @@ -75,3 +113,27 @@ void subghz_protocol_common_to_str(SubGhzProtocolCommon* instance, string_t outp } } } + +bool subghz_protocol_common_read_hex(string_t str, uint8_t* buff, uint16_t len) { + string_strim(str); + uint8_t nibble_high = 0; + uint8_t nibble_low = 0; + bool parsed = true; + + for(uint16_t i = 0; i < len; i++) { + if(hex_char_to_hex_nibble(string_get_char(str, 0), &nibble_high) && + hex_char_to_hex_nibble(string_get_char(str, 1), &nibble_low)) { + buff[i] = (nibble_high << 4) | nibble_low; + if(string_size(str)>2){ + string_right(str, 2); + }else if(icommon.name = "Faac SLH"; instance->common.code_min_count_bit_for_found = 64; - instance->common.te_shot = 255; + instance->common.te_short = 255; instance->common.te_long = 595; instance->common.te_delta = 100; + instance->common.type_protocol = TYPE_PROTOCOL_DYNAMIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_faac_slh_to_str; return instance; @@ -31,14 +32,14 @@ void subghz_protocol_faac_slh_free(SubGhzProtocolFaacSLH* instance) { void subghz_protocol_faac_slh_send_bit(SubGhzProtocolFaacSLH* instance, uint8_t bit) { if (bit) { //send bit 1 - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); delay_us(instance->common.te_long); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); + delay_us(instance->common.te_short); } else { //send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short); SUBGHZ_TX_PIN_LOW(); delay_us(instance->common.te_long); } @@ -46,7 +47,7 @@ void subghz_protocol_faac_slh_send_bit(SubGhzProtocolFaacSLH* instance, uint8_t void subghz_protocol_faac_slh_send_key(SubGhzProtocolFaacSLH* instance, uint64_t key, uint8_t bit,uint8_t repeat) { while (repeat--) { - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); //Send header delay_us(instance->common.te_long * 2); SUBGHZ_TX_PIN_LOW(); @@ -67,15 +68,12 @@ void subghz_protocol_faac_slh_reset(SubGhzProtocolFaacSLH* instance) { * @param instance SubGhzProtocolFaacSLH instance */ void subghz_protocol_faac_slh_check_remote_controller(SubGhzProtocolFaacSLH* instance) { - uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t code_fix = code_found_reverse & 0xFFFFFFFF; //uint32_t code_hop = (code_found_reverse >> 24) & 0xFFFFF; instance->common.serial = code_fix & 0xFFFFFFF; instance->common.btn = (code_fix >> 28) & 0x0F; - - if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); - } void subghz_protocol_faac_slh_parse(SubGhzProtocolFaacSLH* instance, bool level, uint32_t duration) { @@ -101,10 +99,12 @@ void subghz_protocol_faac_slh_parse(SubGhzProtocolFaacSLH* instance, bool level, break; case 2: if (level) { - if (duration >= (instance->common.te_shot * 3 + instance->common.te_delta)) { + if (duration >= (instance->common.te_short * 3 + instance->common.te_delta)) { instance->common.parser_step = 1; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { - subghz_protocol_faac_slh_check_remote_controller(instance); + instance->common.code_last_found = instance->common.code_found; + instance->common.code_last_count_bit = instance->common.code_count_bit; + if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); } instance->common.code_found = 0; instance->common.code_count_bit = 0; @@ -120,12 +120,12 @@ void subghz_protocol_faac_slh_parse(SubGhzProtocolFaacSLH* instance, bool level, break; case 3: if(!level){ - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta) && (DURATION_DIFF(duration,instance->common.te_long)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long )< instance->common.te_delta) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else { @@ -139,23 +139,21 @@ void subghz_protocol_faac_slh_parse(SubGhzProtocolFaacSLH* instance, bool level, } void subghz_protocol_faac_slh_to_str(SubGhzProtocolFaacSLH* instance, string_t output) { - - uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + subghz_protocol_faac_slh_check_remote_controller(instance); + uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t code_fix = code_found_reverse & 0xFFFFFFFF; uint32_t code_hop = (code_found_reverse >>32) & 0xFFFFFFFF; - //uint32_t rev_hi = - string_cat_printf(output, - "Protocol %s, %d Bit\r\n" + "%s, %d Bit\r\n" " KEY:0x%lX%08lX\r\n" " FIX:%08lX \r\n" " HOP:%08lX \r\n" " SN:%07lX BTN:%lX\r\n", instance->common.name, - instance->common.code_count_bit, - (uint32_t)(instance->common.code_found >> 32), - (uint32_t)instance->common.code_found, + instance->common.code_last_count_bit, + (uint32_t)(instance->common.code_last_found >> 32), + (uint32_t)instance->common.code_last_found, code_fix, code_hop, instance->common.serial, instance->common.btn); diff --git a/lib/subghz/protocols/subghz_protocol_gate_tx.c b/lib/subghz/protocols/subghz_protocol_gate_tx.c index cfd01db0..d850d741 100644 --- a/lib/subghz/protocols/subghz_protocol_gate_tx.c +++ b/lib/subghz/protocols/subghz_protocol_gate_tx.c @@ -10,15 +10,17 @@ SubGhzProtocolGateTX* subghz_protocol_gate_tx_alloc(void) { instance->common.name = "GateTX"; instance->common.code_min_count_bit_for_found = 24; - instance->common.te_shot = 350; + instance->common.te_short = 350; instance->common.te_long = 700; instance->common.te_delta = 100; + instance->common.type_protocol = TYPE_PROTOCOL_STATIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_gate_tx_to_str; instance->common.to_save_string = (SubGhzProtocolCommonGetStrSave)subghz_protocol_gate_tx_to_save_str; instance->common.to_load_protocol= (SubGhzProtocolCommonLoad)subghz_protocol_gate_tx_to_load_protocol; - + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_gate_tx_send_key; return instance; } @@ -27,40 +29,29 @@ void subghz_protocol_gate_tx_free(SubGhzProtocolGateTX* instance) { free(instance); } -/** Send bit - * - * @param instance - SubGhzProtocolGateTX instance - * @param bit - bit - */ -void subghz_protocol_gate_tx_send_bit(SubGhzProtocolGateTX* instance, uint8_t bit) { - if (bit) { - //send bit 1 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - } else { - //send bit 0 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - } -} - -void subghz_protocol_gate_tx_send_key(SubGhzProtocolGateTX* instance, uint64_t key, uint8_t bit,uint8_t repeat) { - while (repeat--) { - //Send header - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 47); //+2 interval v bit 1 - //Send start bit - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - //Send key data - for (uint8_t i = bit; i > 0; i--) { - subghz_protocol_gate_tx_send_bit(instance, bit_read(key, i - 1)); +bool subghz_protocol_gate_tx_send_key(SubGhzProtocolGateTX* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + size_t index = 0; + encoder->size_upload =(instance->common.code_last_count_bit * 2) + 2; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + //Send header + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short * 49); + //Send start bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); } } + return true; } void subghz_protocol_gate_tx_reset(SubGhzProtocolGateTX* instance) { @@ -82,7 +73,7 @@ void subghz_protocol_gate_tx_parse(SubGhzProtocolGateTX* instance, bool level, u switch (instance->common.parser_step) { case 0: if ((!level) - && (DURATION_DIFF(duration,instance->common.te_shot * 47)< instance->common.te_delta * 47)) { + && (DURATION_DIFF(duration,instance->common.te_short * 47)< instance->common.te_delta * 47)) { //Found Preambula instance->common.parser_step = 1; } else { @@ -101,7 +92,7 @@ void subghz_protocol_gate_tx_parse(SubGhzProtocolGateTX* instance, bool level, u break; case 2: if (!level) { - if (duration >= (instance->common.te_shot * 10 + instance->common.te_delta)) { + if (duration >= (instance->common.te_short * 10 + instance->common.te_delta)) { instance->common.parser_step = 1; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { @@ -121,12 +112,12 @@ void subghz_protocol_gate_tx_parse(SubGhzProtocolGateTX* instance, bool level, u break; case 3: if(level){ - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta) && (DURATION_DIFF(duration,instance->common.te_long)< instance->common.te_delta*3)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long)< instance->common.te_delta*3) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else { diff --git a/lib/subghz/protocols/subghz_protocol_gate_tx.h b/lib/subghz/protocols/subghz_protocol_gate_tx.h index c02a8c45..b5682d7d 100644 --- a/lib/subghz/protocols/subghz_protocol_gate_tx.h +++ b/lib/subghz/protocols/subghz_protocol_gate_tx.h @@ -16,14 +16,13 @@ SubGhzProtocolGateTX* subghz_protocol_gate_tx_alloc(); */ void subghz_protocol_gate_tx_free(SubGhzProtocolGateTX* instance); -/** Sends the key on the air +/** Get upload protocol * - * @param instance - SubGhzProtocolGateTX instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param instance - SubGhzProtocolCame instance + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool */ -void subghz_protocol_gate_tx_send_key(SubGhzProtocolGateTX* instance, uint64_t key, uint8_t bit, uint8_t repeat); +bool subghz_protocol_gate_tx_send_key(SubGhzProtocolGateTX* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzProtocolGateTX instance diff --git a/lib/subghz/protocols/subghz_protocol_ido.c b/lib/subghz/protocols/subghz_protocol_ido.c index 7b95061a..95e571e3 100644 --- a/lib/subghz/protocols/subghz_protocol_ido.c +++ b/lib/subghz/protocols/subghz_protocol_ido.c @@ -10,9 +10,10 @@ SubGhzProtocolIDo* subghz_protocol_ido_alloc(void) { instance->common.name = "iDo 117/111"; // PT4301-X"; instance->common.code_min_count_bit_for_found = 48; - instance->common.te_shot = 450; + instance->common.te_short = 450; instance->common.te_long = 1450; instance->common.te_delta = 150; + instance->common.type_protocol = TYPE_PROTOCOL_DYNAMIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_ido_to_str; return instance; @@ -31,14 +32,14 @@ void subghz_protocol_ido_free(SubGhzProtocolIDo* instance) { void subghz_protocol_ido_send_bit(SubGhzProtocolIDo* instance, uint8_t bit) { if (bit) { //send bit 1 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); + delay_us(instance->common.te_short); } else { //send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short); SUBGHZ_TX_PIN_LOW(); delay_us(instance->common.te_long); } @@ -46,11 +47,11 @@ void subghz_protocol_ido_send_bit(SubGhzProtocolIDo* instance, uint8_t bit) { void subghz_protocol_ido_send_key(SubGhzProtocolIDo* instance, uint64_t key, uint8_t bit,uint8_t repeat) { while (repeat--) { - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); //Send header - delay_us(instance->common.te_shot * 10); + delay_us(instance->common.te_short * 10); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 10); + delay_us(instance->common.te_short * 10); //Send key data for (uint8_t i = bit; i > 0; i--) { subghz_protocol_ido_send_bit(instance, bit_read(key, i - 1)); @@ -67,22 +68,18 @@ void subghz_protocol_ido_reset(SubGhzProtocolIDo* instance) { * @param instance SubGhzProtocolIDo instance */ void subghz_protocol_ido_check_remote_controller(SubGhzProtocolIDo* instance) { - uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t code_fix = code_found_reverse & 0xFFFFFF; - //uint32_t code_hop = (code_found_reverse >> 24) & 0xFFFFF; instance->common.serial = code_fix & 0xFFFFF; instance->common.btn = (code_fix >> 20) & 0x0F; - - if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); - } void subghz_protocol_ido_parse(SubGhzProtocolIDo* instance, bool level, uint32_t duration) { switch (instance->common.parser_step) { case 0: if ((level) - && (DURATION_DIFF(duration,instance->common.te_shot * 10)< instance->common.te_delta * 5)) { + && (DURATION_DIFF(duration,instance->common.te_short * 10)< instance->common.te_delta * 5)) { instance->common.parser_step = 1; } else { instance->common.parser_step = 0; @@ -90,7 +87,7 @@ void subghz_protocol_ido_parse(SubGhzProtocolIDo* instance, bool level, uint32_t break; case 1: if ((!level) - && (DURATION_DIFF(duration,instance->common.te_shot * 10)< instance->common.te_delta * 5)) { + && (DURATION_DIFF(duration,instance->common.te_short * 10)< instance->common.te_delta * 5)) { //Found Preambula instance->common.parser_step = 2; instance->common.code_found = 0; @@ -101,10 +98,12 @@ void subghz_protocol_ido_parse(SubGhzProtocolIDo* instance, bool level, uint32_t break; case 2: if (level) { - if (duration >= (instance->common.te_shot * 5 + instance->common.te_delta)) { + if (duration >= (instance->common.te_short * 5 + instance->common.te_delta)) { instance->common.parser_step = 1; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { - subghz_protocol_ido_check_remote_controller(instance); + instance->common.code_last_found = instance->common.code_found; + instance->common.code_last_count_bit = instance->common.code_count_bit; + if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); } instance->common.code_found = 0; instance->common.code_count_bit = 0; @@ -120,12 +119,12 @@ void subghz_protocol_ido_parse(SubGhzProtocolIDo* instance, bool level, uint32_t break; case 3: if(!level){ - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta) && (DURATION_DIFF(duration,instance->common.te_long)< instance->common.te_delta*3)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; - } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot )< instance->common.te_delta*3) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short )< instance->common.te_delta*3) + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else { @@ -139,21 +138,21 @@ void subghz_protocol_ido_parse(SubGhzProtocolIDo* instance, bool level, uint32_t } void subghz_protocol_ido_to_str(SubGhzProtocolIDo* instance, string_t output) { - - uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + subghz_protocol_ido_check_remote_controller(instance); + uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t code_fix = code_found_reverse & 0xFFFFFF; uint32_t code_hop = (code_found_reverse >>24) & 0xFFFFFF; string_cat_printf(output, - "Protocol %s, %d Bit\r\n" + "%s, %d Bit\r\n" " KEY:0x%lX%08lX\r\n" " FIX:%06lX \r\n" " HOP:%06lX \r\n" " SN:%05lX BTN:%lX\r\n", instance->common.name, - instance->common.code_count_bit, - (uint32_t)(instance->common.code_found >> 32), - (uint32_t)instance->common.code_found, + instance->common.code_last_count_bit, + (uint32_t)(instance->common.code_last_found >> 32), + (uint32_t)instance->common.code_last_found, code_fix, code_hop, instance->common.serial, instance->common.btn); diff --git a/lib/subghz/protocols/subghz_protocol_keeloq.c b/lib/subghz/protocols/subghz_protocol_keeloq.c index 878e17bc..6bbc9c80 100644 --- a/lib/subghz/protocols/subghz_protocol_keeloq.c +++ b/lib/subghz/protocols/subghz_protocol_keeloq.c @@ -20,14 +20,17 @@ SubGhzProtocolKeeloq* subghz_protocol_keeloq_alloc(SubGhzKeystore* keystore) { instance->common.name = "KeeLoq"; instance->common.code_min_count_bit_for_found = 64; - instance->common.te_shot = 400; + instance->common.te_short = 400; instance->common.te_long = 800; instance->common.te_delta = 140; + instance->common.type_protocol = TYPE_PROTOCOL_DYNAMIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_keeloq_to_str; instance->common.to_save_string = (SubGhzProtocolCommonGetStrSave)subghz_protocol_keeloq_to_save_str; instance->common.to_load_protocol = (SubGhzProtocolCommonLoad)subghz_protocol_keeloq_to_load_protocol; + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_keeloq_send_key; return instance; } @@ -162,53 +165,91 @@ void subghz_protocol_keeloq_check_remote_controller(SubGhzProtocolKeeloq* instan instance->common.serial = key_fix & 0x0FFFFFFF; instance->common.btn = key_fix >> 28; } - -/** Send bit - * - * @param instance - SubGhzProtocolKeeloq instance - * @param bit - bit - */ -void subghz_protocol_keeloq_send_bit(SubGhzProtocolKeeloq* instance, uint8_t bit) { - if(bit) { - // send bit 1 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); - } else { - // send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - } +void subghz_protocol_keeloq_set_manufacture_name (void* context, const char* manufacture_name){ + SubGhzProtocolKeeloq* instance = context; + instance->manufacture_name = manufacture_name; } -void subghz_protocol_keeloq_send_key( - SubGhzProtocolKeeloq* instance, - uint64_t key, - uint8_t bit, - uint8_t repeat) { - while(repeat--) { - // Send header - for(uint8_t i = 11; i > 0; i--) { - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - } - delay_us(instance->common.te_shot * 9); //+1 up Send header +uint64_t subghz_protocol_keeloq_gen_key(void* context) { + SubGhzProtocolKeeloq* instance = context; + uint32_t fix = instance->common.btn << 28 | instance->common.serial; + uint32_t decrypt = instance->common.btn << 28 | (instance->common.serial & 0x3FF) << 16 | + instance->common.cnt; + uint32_t hop = 0; + uint64_t man_normal_learning = 0; + int res = 0; - for(uint8_t i = bit; i > 0; i--) { - subghz_protocol_keeloq_send_bit(instance, bit_read(key, i - 1)); + for + M_EACH(manufacture_code, *subghz_keystore_get_data(instance->keystore), SubGhzKeyArray_t) { + res = strcmp(string_get_cstr(manufacture_code->name), instance->manufacture_name); + if(res == 0) { + switch(manufacture_code->type) { + case KEELOQ_LEARNING_SIMPLE: + //Simple Learning + hop = subghz_protocol_keeloq_common_encrypt(decrypt, manufacture_code->key); + break; + case KEELOQ_LEARNING_NORMAL: + //Simple Learning + man_normal_learning = + subghz_protocol_keeloq_common_normal_learning(fix, manufacture_code->key); + hop = subghz_protocol_keeloq_common_encrypt(decrypt, man_normal_learning); + break; + case KEELOQ_LEARNING_UNKNOWN: + hop = 0; //todo + break; + } + break; + } } - // +send 2 status bit - subghz_protocol_keeloq_send_bit(instance, 0); - subghz_protocol_keeloq_send_bit(instance, 0); - // send end - subghz_protocol_keeloq_send_bit(instance, 0); - delay_us(instance->common.te_shot * 2); //+2 interval END SEND + uint64_t yek = (uint64_t)fix << 32 | hop; + return subghz_protocol_common_reverse_key(yek, instance->common.code_last_count_bit); +} + +bool subghz_protocol_keeloq_send_key(SubGhzProtocolKeeloq* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + + //gen new key + instance->common.cnt++; + instance->common.code_last_found = subghz_protocol_keeloq_gen_key(instance); + if(instance->common.callback)instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); + + size_t index = 0; + encoder->size_upload =11*2+2+(instance->common.code_last_count_bit * 2) + 4; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + + //Send header + for(uint8_t i = 11; i > 0; i--) { + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); } + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short*10); + + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + } + } + // +send 2 status bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); + + //encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); + //encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + + // send end + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short*40); + + return true; } void subghz_protocol_keeloq_reset(SubGhzProtocolKeeloq* instance) { @@ -219,7 +260,7 @@ void subghz_protocol_keeloq_parse(SubGhzProtocolKeeloq* instance, bool level, ui switch(instance->common.parser_step) { case 0: if((level) && - DURATION_DIFF(duration, instance->common.te_shot) < instance->common.te_delta) { + DURATION_DIFF(duration, instance->common.te_short) < instance->common.te_delta) { instance->common.parser_step = 1; instance->common.header_count++; } else { @@ -229,12 +270,12 @@ void subghz_protocol_keeloq_parse(SubGhzProtocolKeeloq* instance, bool level, ui break; case 1: if((!level) && - (DURATION_DIFF(duration, instance->common.te_shot) < instance->common.te_delta)) { + (DURATION_DIFF(duration, instance->common.te_short) < instance->common.te_delta)) { instance->common.parser_step = 0; break; } if((instance->common.header_count > 2) && - (DURATION_DIFF(duration, instance->common.te_shot * 10) < + (DURATION_DIFF(duration, instance->common.te_short * 10) < instance->common.te_delta * 10)) { // Found header instance->common.parser_step = 2; @@ -253,7 +294,7 @@ void subghz_protocol_keeloq_parse(SubGhzProtocolKeeloq* instance, bool level, ui break; case 3: if(!level) { - if(duration >= (instance->common.te_shot * 2 + instance->common.te_delta)) { + if(duration >= (instance->common.te_short * 2 + instance->common.te_delta)) { // Found end TX instance->common.parser_step = 0; if(instance->common.code_count_bit >= @@ -271,7 +312,7 @@ void subghz_protocol_keeloq_parse(SubGhzProtocolKeeloq* instance, bool level, ui } break; } else if( - (DURATION_DIFF(instance->common.te_last, instance->common.te_shot) < + (DURATION_DIFF(instance->common.te_last, instance->common.te_short) < instance->common.te_delta) && (DURATION_DIFF(duration, instance->common.te_long) < instance->common.te_delta)) { if(instance->common.code_count_bit < @@ -282,7 +323,7 @@ void subghz_protocol_keeloq_parse(SubGhzProtocolKeeloq* instance, bool level, ui } else if( (DURATION_DIFF(instance->common.te_last, instance->common.te_long) < instance->common.te_delta) && - (DURATION_DIFF(duration, instance->common.te_shot) < instance->common.te_delta)) { + (DURATION_DIFF(duration, instance->common.te_short) < instance->common.te_delta)) { if(instance->common.code_count_bit < instance->common.code_min_count_bit_for_found) { subghz_protocol_common_add_bit(&instance->common, 0); @@ -329,55 +370,17 @@ void subghz_protocol_keeloq_to_str(SubGhzProtocolKeeloq* instance, string_t outp instance->common.btn); } -uint64_t subghz_protocol_keeloq_gen_key(SubGhzProtocolKeeloq* instance) { - uint32_t fix = instance->common.btn << 28 | instance->common.serial; - uint32_t decrypt = instance->common.btn << 28 | (instance->common.serial & 0x3FF) << 16 | - instance->common.cnt; - uint32_t hop = 0; - uint64_t man_normal_learning = 0; - int res = 0; - - for - M_EACH(manufacture_code, *subghz_keystore_get_data(instance->keystore), SubGhzKeyArray_t) { - res = strcmp(string_get_cstr(manufacture_code->name), instance->manufacture_name); - if(res == 0) { - switch(manufacture_code->type) { - case KEELOQ_LEARNING_SIMPLE: - //Simple Learning - hop = subghz_protocol_keeloq_common_encrypt(decrypt, manufacture_code->key); - break; - case KEELOQ_LEARNING_NORMAL: - //Simple Learning - man_normal_learning = - subghz_protocol_keeloq_common_normal_learning(fix, manufacture_code->key); - hop = subghz_protocol_keeloq_common_encrypt(decrypt, man_normal_learning); - break; - case KEELOQ_LEARNING_UNKNOWN: - hop = 0; //todo - break; - } - break; - } - } - uint64_t yek = (uint64_t)fix << 32 | hop; - return subghz_protocol_common_reverse_key(yek, instance->common.code_last_count_bit); -} - void subghz_protocol_keeloq_to_save_str(SubGhzProtocolKeeloq* instance, string_t output) { - string_printf( + string_printf( output, "Protocol: %s\n" "Bit: %d\n" - "Manufacture_name: %s\n" - "Serial: %08lX\n" - "Cnt: %04lX\n" - "Btn: %01lX\n", + "Key: %08lX%08lX\n", instance->common.name, instance->common.code_last_count_bit, - instance->manufacture_name, - instance->common.serial, - instance->common.cnt, - instance->common.btn); + (uint32_t)(instance->common.code_last_found >> 32), + (uint32_t)(instance->common.code_last_found & 0xFFFFFFFF) + ); } bool subghz_protocol_keeloq_to_load_protocol( @@ -386,8 +389,6 @@ bool subghz_protocol_keeloq_to_load_protocol( bool loaded = false; string_t temp_str; string_init(temp_str); - string_t temp_name_man; - string_init(temp_name_man); int res = 0; int data = 0; @@ -402,50 +403,23 @@ bool subghz_protocol_keeloq_to_load_protocol( } instance->common.code_last_count_bit = (uint8_t)data; - // Read and parse name protocol from 3st line - if(!file_worker_read_until(file_worker, temp_name_man, '\n')) { - break; - } - // strlen("Manufacture_name: ") = 18 - string_right(temp_name_man, 18); - instance->manufacture_name = string_get_cstr(temp_name_man); - - // Read and parse key data from 4nd line + // Read and parse key data from 3nd line if(!file_worker_read_until(file_worker, temp_str, '\n')) { break; } - uint32_t temp_param = 0; - res = sscanf(string_get_cstr(temp_str), "Serial: %08lX\n", &temp_param); - if(res != 1) { - break; - } - instance->common.serial = temp_param; + // strlen("Key: ") = 5 + string_right(temp_str, 5); - // Read and parse key data from 5nd line - if(!file_worker_read_until(file_worker, temp_str, '\n')) { + uint8_t buf_key[8]={0}; + if(!subghz_protocol_common_read_hex(temp_str, buf_key, 8)){ break; } - res = sscanf(string_get_cstr(temp_str), "Cnt: %04lX\n", &temp_param); - if(res != 1) { - break; - } - instance->common.cnt = (uint16_t)temp_param; - // Read and parse key data from 5nd line - if(!file_worker_read_until(file_worker, temp_str, '\n')) { - break; + for(uint8_t i = 0; i < 8; i++){ + instance->common.code_last_found = instance->common.code_last_found << 8 | buf_key[i]; } - res = sscanf(string_get_cstr(temp_str), "Btn: %01lX\n", &temp_param); - if(res != 1) { - break; - } - instance->common.btn = (uint8_t)temp_param; - - instance->common.code_last_found = subghz_protocol_keeloq_gen_key(instance); - loaded = true; } while(0); - string_clear(temp_name_man); string_clear(temp_str); return loaded; diff --git a/lib/subghz/protocols/subghz_protocol_keeloq.h b/lib/subghz/protocols/subghz_protocol_keeloq.h index 4560c725..cd591980 100644 --- a/lib/subghz/protocols/subghz_protocol_keeloq.h +++ b/lib/subghz/protocols/subghz_protocol_keeloq.h @@ -18,14 +18,27 @@ SubGhzProtocolKeeloq* subghz_protocol_keeloq_alloc(SubGhzKeystore* keystore); */ void subghz_protocol_keeloq_free(SubGhzProtocolKeeloq* instance); -/** Sends the key on the air +/** Set manufacture name * - * @param instance - SubGhzProtocolKeeloq instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param manufacture_name - manufacture name + * @param context - SubGhzProtocolKeeloq context */ -void subghz_protocol_keeloq_send_key(SubGhzProtocolKeeloq* instance, uint64_t key, uint8_t bit, uint8_t repeat); +void subghz_protocol_keeloq_set_manufacture_name(void* context, const char* manufacture_name); + +/** Get key keeloq + * + * @param context - SubGhzProtocolKeeloq context + * @return key + */ +uint64_t subghz_protocol_keeloq_gen_key(void* context); + +/** Get upload protocol + * + * @param instance - SubGhzProtocolCame instance + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool + */ +bool subghz_protocol_keeloq_send_key(SubGhzProtocolKeeloq* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzProtocolKeeloq instance diff --git a/lib/subghz/protocols/subghz_protocol_nero_sketch.c b/lib/subghz/protocols/subghz_protocol_nero_sketch.c index 8e22b0f3..4b20b4cb 100644 --- a/lib/subghz/protocols/subghz_protocol_nero_sketch.c +++ b/lib/subghz/protocols/subghz_protocol_nero_sketch.c @@ -10,14 +10,17 @@ SubGhzProtocolNeroSketch* subghz_protocol_nero_sketch_alloc(void) { instance->common.name = "Nero Sketch"; instance->common.code_min_count_bit_for_found = 40; - instance->common.te_shot = 330; + instance->common.te_short = 330; instance->common.te_long = 660; instance->common.te_delta = 150; + instance->common.type_protocol = TYPE_PROTOCOL_STATIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_nero_sketch_to_str; instance->common.to_save_string = (SubGhzProtocolCommonGetStrSave)subghz_protocol_nero_sketch_to_save_str; instance->common.to_load_protocol= (SubGhzProtocolCommonLoad)subghz_protocol_nero_sketch_to_load_protocol; + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_nero_sketch_send_key; return instance; } @@ -27,53 +30,41 @@ void subghz_protocol_nero_sketch_free(SubGhzProtocolNeroSketch* instance) { free(instance); } -/** Send bit - * - * @param instance - SubGhzProtocolNeroSketch instance - * @param bit - bit - */ -void subghz_protocol_nero_sketch_send_bit(SubGhzProtocolNeroSketch* instance, uint8_t bit) { - if (bit) { - //send bit 1 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - } else { - //send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); +bool subghz_protocol_nero_sketch_send_key(SubGhzProtocolNeroSketch* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + size_t index = 0; + encoder->size_upload = 47*2+2+(instance->common.code_last_count_bit * 2) + 2; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + + //Send header + for(uint8_t i = 0; i < 47; i++){ + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); } -} + + //Send start bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short*4); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); -void subghz_protocol_nero_sketch_send_key(SubGhzProtocolNeroSketch* instance, uint64_t key, uint8_t bit,uint8_t repeat) { - while (repeat--) { - //Send header - for(uint8_t i = 0; i < 47; i++){ - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); } - - //Send start bit - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot*4); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - - //Send key data - for (uint8_t i = bit; i > 0; i--) { - subghz_protocol_nero_sketch_send_bit(instance, bit_read(key, i - 1)); - } - //Send stop bit - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot*3); - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); } + + //Send stop bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short*3); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + + return true; } void subghz_protocol_nero_sketch_reset(SubGhzProtocolNeroSketch* instance) { @@ -101,7 +92,7 @@ void subghz_protocol_nero_sketch_parse(SubGhzProtocolNeroSketch* instance, bool switch (instance->common.parser_step) { case 0: if ((level) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { instance->common.parser_step = 1; instance->common.te_last = duration; instance->common.header_count = 0; @@ -111,18 +102,18 @@ void subghz_protocol_nero_sketch_parse(SubGhzProtocolNeroSketch* instance, bool break; case 1: if (level){ - if((DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta ) - || (DURATION_DIFF(duration,instance->common.te_shot*4)< instance->common.te_delta)) { + if((DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta ) + || (DURATION_DIFF(duration,instance->common.te_short*4)< instance->common.te_delta)) { instance->common.te_last = duration; } else { instance->common.parser_step = 0; } - } else if(DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta){ - if(DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta){ + } else if(DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta){ + if(DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta){ // Found header instance->common.header_count++; break; - }else if(DURATION_DIFF(instance->common.te_last,instance->common.te_shot*4)< instance->common.te_delta){ + }else if(DURATION_DIFF(instance->common.te_last,instance->common.te_short*4)< instance->common.te_delta){ // Found start bit if(instance->common.header_count>40) { instance->common.parser_step = 2; @@ -140,7 +131,7 @@ void subghz_protocol_nero_sketch_parse(SubGhzProtocolNeroSketch* instance, bool break; case 2: if (level) { - if (duration >= (instance->common.te_shot * 2 + instance->common.te_delta*2)) { + if (duration >= (instance->common.te_short * 2 + instance->common.te_delta*2)) { //Found stop bit instance->common.parser_step = 0; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { @@ -164,12 +155,12 @@ void subghz_protocol_nero_sketch_parse(SubGhzProtocolNeroSketch* instance, bool break; case 3: if(!level){ - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta) && (DURATION_DIFF(duration,instance->common.te_long)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long )< instance->common.te_delta) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else { diff --git a/lib/subghz/protocols/subghz_protocol_nero_sketch.h b/lib/subghz/protocols/subghz_protocol_nero_sketch.h index 4fcce1c2..170895c4 100644 --- a/lib/subghz/protocols/subghz_protocol_nero_sketch.h +++ b/lib/subghz/protocols/subghz_protocol_nero_sketch.h @@ -16,14 +16,13 @@ SubGhzProtocolNeroSketch* subghz_protocol_nero_sketch_alloc(); */ void subghz_protocol_nero_sketch_free(SubGhzProtocolNeroSketch* instance); -/** Sends the key on the air +/** Get upload protocol * - * @param instance - SubGhzProtocolNeroSketch instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param instance - SubGhzProtocolCame instance + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool */ -void subghz_protocol_faac_nero_sketch_key(SubGhzProtocolNeroSketch* instance, uint64_t key, uint8_t bit, uint8_t repeat); +bool subghz_protocol_nero_sketch_send_key(SubGhzProtocolNeroSketch* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzProtocolNeroSketch instance diff --git a/lib/subghz/protocols/subghz_protocol_nice_flo.c b/lib/subghz/protocols/subghz_protocol_nice_flo.c index 0c0cb207..b53160b8 100644 --- a/lib/subghz/protocols/subghz_protocol_nice_flo.c +++ b/lib/subghz/protocols/subghz_protocol_nice_flo.c @@ -15,10 +15,17 @@ SubGhzProtocolNiceFlo* subghz_protocol_nice_flo_alloc() { instance->common.name = "Nice FLO"; instance->common.code_min_count_bit_for_found = 12; - instance->common.te_shot = 700; + instance->common.te_short = 700; instance->common.te_long = 1400; instance->common.te_delta = 200; - + instance->common.type_protocol = TYPE_PROTOCOL_STATIC; + instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_nice_flo_to_str; + instance->common.to_save_string = + (SubGhzProtocolCommonGetStrSave)subghz_protocol_nice_flo_to_save_str; + instance->common.to_load_protocol= + (SubGhzProtocolCommonLoad)subghz_protocol_nice_flo_to_load_protocol; + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_nice_flo_send_key; return instance; } @@ -27,39 +34,29 @@ void subghz_protocol_nice_flo_free(SubGhzProtocolNiceFlo* instance) { free(instance); } -/** Send bit - * - * @param instance - SubGhzProtocolNiceFlo instance - * @param bit - bit - */ -void subghz_protocol_nice_flo_send_bit(SubGhzProtocolNiceFlo* instance, uint8_t bit) { - if (bit) { - //send bit 1 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - } else { - //send bit 0 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - } -} - -void subghz_protocol_nice_flo_send_key(SubGhzProtocolNiceFlo* instance, uint64_t key, uint8_t bit, uint8_t repeat) { - while (repeat--) { - //Send header - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 34); //+2 interval v bit 1 - //Send start bit - subghz_protocol_nice_flo_send_bit(instance, 1); - //Send key data - for (uint8_t i = bit; i > 0; i--) { - subghz_protocol_nice_flo_send_bit(instance, bit_read(key, i - 1)); +bool subghz_protocol_nice_flo_send_key(SubGhzProtocolNiceFlo* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + size_t index = 0; + encoder->size_upload =(instance->common.code_last_count_bit * 2) + 2; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + //Send header + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short * 36); + //Send start bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_long); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_short); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->common.te_short); + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->common.te_long); } } + return true; } void subghz_protocol_nice_flo_reset(SubGhzProtocolNiceFlo* instance) { @@ -70,7 +67,7 @@ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, switch (instance->common.parser_step) { case 0: if ((!level) - && (DURATION_DIFF(duration, instance->common.te_shot * 36)< instance->common.te_delta * 36)) { + && (DURATION_DIFF(duration, instance->common.te_short * 36)< instance->common.te_delta * 36)) { //Found header Nice Flo instance->common.parser_step = 1; } else { @@ -80,7 +77,7 @@ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, case 1: if (!level) { break; - } else if (DURATION_DIFF(duration, instance->common.te_shot)< instance->common.te_delta) { + } else if (DURATION_DIFF(duration, instance->common.te_short)< instance->common.te_delta) { //Found start bit Nice Flo instance->common.parser_step = 2; instance->common.code_found = 0; @@ -91,10 +88,15 @@ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, break; case 2: if (!level) { //save interval - if (duration >= (instance->common.te_shot * 4)) { + if (duration >= (instance->common.te_short * 4)) { instance->common.parser_step = 1; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { + + instance->common.serial = 0x0; + instance->common.btn = 0x0; + instance->common.code_last_found = instance->common.code_found; + instance->common.code_last_count_bit = instance->common.code_count_bit; if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); } @@ -108,12 +110,12 @@ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, break; case 3: if (level) { - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot) < instance->common.te_delta) + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short) < instance->common.te_delta) && (DURATION_DIFF(duration, instance->common.te_long)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long)< instance->common.te_delta) - && (DURATION_DIFF(duration, instance->common.te_shot)< instance->common.te_delta)) { + && (DURATION_DIFF(duration, instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 2; } else @@ -124,3 +126,72 @@ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, break; } } + +void subghz_protocol_nice_flo_to_str(SubGhzProtocolNiceFlo* instance, string_t output) { + uint32_t code_found_lo = instance->common.code_last_found & 0x00000000ffffffff; + + uint64_t code_found_reverse = subghz_protocol_common_reverse_key( + instance->common.code_last_found, instance->common.code_last_count_bit); + + uint32_t code_found_reverse_lo = code_found_reverse & 0x00000000ffffffff; + + string_cat_printf( + output, + "%s %d Bit\r\n" + " KEY:0x%08lX\r\n" + " YEK:0x%08lX\r\n", + instance->common.name, + instance->common.code_last_count_bit, + code_found_lo, + code_found_reverse_lo + ); +} + + +void subghz_protocol_nice_flo_to_save_str(SubGhzProtocolNiceFlo* instance, string_t output) { + string_printf( + output, + "Protocol: %s\n" + "Bit: %d\n" + "Key: %08lX\n", + instance->common.name, + instance->common.code_last_count_bit, + (uint32_t)(instance->common.code_last_found & 0x00000000ffffffff)); +} + +bool subghz_protocol_nice_flo_to_load_protocol(FileWorker* file_worker, SubGhzProtocolNiceFlo* instance){ + bool loaded = false; + string_t temp_str; + string_init(temp_str); + int res = 0; + int data = 0; + + do { + // Read and parse bit data from 2nd line + if(!file_worker_read_until(file_worker, temp_str, '\n')) { + break; + } + res = sscanf(string_get_cstr(temp_str), "Bit: %d\n", &data); + if(res != 1) { + break; + } + instance->common.code_last_count_bit = (uint8_t)data; + + // Read and parse key data from 3nd line + if(!file_worker_read_until(file_worker, temp_str, '\n')) { + break; + } + uint32_t temp_key = 0; + res = sscanf(string_get_cstr(temp_str), "Key: %08lX\n", &temp_key); + if(res != 1) { + break; + } + instance->common.code_last_found = (uint64_t)temp_key; + + loaded = true; + } while(0); + + string_clear(temp_str); + + return loaded; +} diff --git a/lib/subghz/protocols/subghz_protocol_nice_flo.h b/lib/subghz/protocols/subghz_protocol_nice_flo.h index 80075bb2..fc80f02a 100644 --- a/lib/subghz/protocols/subghz_protocol_nice_flo.h +++ b/lib/subghz/protocols/subghz_protocol_nice_flo.h @@ -16,14 +16,13 @@ SubGhzProtocolNiceFlo* subghz_protocol_nice_flo_alloc(); */ void subghz_protocol_nice_flo_free(SubGhzProtocolNiceFlo* instance); -/** Sends the key on the air +/** Get upload protocol * - * @param instance - SubGhzProtocolNiceFlo instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param instance - SubGhzProtocolCame instance + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool */ -void subghz_protocol_nice_flo_send_key(SubGhzProtocolNiceFlo* instance, uint64_t key, uint8_t bit, uint8_t repeat); +bool subghz_protocol_nice_flo_send_key(SubGhzProtocolNiceFlo* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzProtocolNiceFlo instance @@ -36,3 +35,13 @@ void subghz_protocol_nice_flo_reset(SubGhzProtocolNiceFlo* instance); * @param data - LevelDuration level_duration */ void subghz_protocol_nice_flo_parse(SubGhzProtocolNiceFlo* instance, bool level, uint32_t duration); + +/** Outputting information from the parser + * + * @param instance - SubGhzProtocolNiceFlo* instance + * @param output - output string + */ +void subghz_protocol_nice_flo_to_str(SubGhzProtocolNiceFlo* instance, string_t output); + +void subghz_protocol_nice_flo_to_save_str(SubGhzProtocolNiceFlo* instance, string_t output); +bool subghz_protocol_nice_flo_to_load_protocol(FileWorker* file_worker, SubGhzProtocolNiceFlo* instance); diff --git a/lib/subghz/protocols/subghz_protocol_nice_flor_s.c b/lib/subghz/protocols/subghz_protocol_nice_flor_s.c index f774e6d8..ab6b83ea 100644 --- a/lib/subghz/protocols/subghz_protocol_nice_flor_s.c +++ b/lib/subghz/protocols/subghz_protocol_nice_flor_s.c @@ -18,9 +18,10 @@ SubGhzProtocolNiceFlorS* subghz_protocol_nice_flor_s_alloc() { instance->common.name = "Nice FloR-S"; instance->common.code_min_count_bit_for_found = 52; - instance->common.te_shot = 500; + instance->common.te_short = 500; instance->common.te_long = 1000; instance->common.te_delta = 300; + instance->common.type_protocol = TYPE_PROTOCOL_DYNAMIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_nice_flor_s_to_str; return instance; @@ -44,14 +45,14 @@ void subghz_protocol_nice_flor_s_name_file(SubGhzProtocolNiceFlorS* instance, co void subghz_protocol_nice_flor_s_send_bit(SubGhzProtocolNiceFlorS* instance, uint8_t bit) { if(bit) { //send bit 1 - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); delay_us(instance->common.te_long); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); + delay_us(instance->common.te_short); } else { //send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short); SUBGHZ_TX_PIN_LOW(); delay_us(instance->common.te_long); } @@ -65,21 +66,21 @@ void subghz_protocol_nice_flor_s_send_key( while(repeat--) { //Send header SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 34); + delay_us(instance->common.te_short * 34); //Send Start Bit - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot * 3); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short * 3); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 3); + delay_us(instance->common.te_short * 3); //Send key data for(uint8_t i = bit; i > 0; i--) { subghz_protocol_nice_flor_s_send_bit(instance, bit_read(key, i - 1)); } //Send Stop Bit - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot * 3); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short * 3); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot * 3); + delay_us(instance->common.te_short * 3); } } @@ -130,18 +131,17 @@ void subghz_nice_flor_s_decoder_decrypt(SubGhzProtocolNiceFlorS* instance) { * S3,S2,S1,S0 - serial number of the console 28 bit. */ - uint16_t p3p4 = (uint16_t)(instance->common.code_found >> 24); - instance->common.cnt = subghz_nice_flor_s_get_byte_in_file(instance,p3p4*2) << 8 | subghz_nice_flor_s_get_byte_in_file(instance,p3p4*2+1); //nice_flor_srainbow_table_for_search[p3p4]; тут надо считать поле с файла причем адрес надо у множить на 2 - uint8_t k =(uint8_t)(p3p4 & 0x00FF) ^subghz_nice_flor_s_get_byte_in_file(instance,(0x20000 |(instance->common.cnt &0x00ff))); //nice_flor_srainbow_table_for_search[0x10000|subghz_protocol_nice_flor_s.cnt & 0x00ff]; + uint16_t p3p4 = (uint16_t)(instance->common.code_last_found >> 24); + instance->common.cnt = subghz_nice_flor_s_get_byte_in_file(instance,p3p4*2) << 8 | subghz_nice_flor_s_get_byte_in_file(instance,p3p4*2+1); + uint8_t k =(uint8_t)(p3p4 & 0x00FF) ^subghz_nice_flor_s_get_byte_in_file(instance,(0x20000 |(instance->common.cnt &0x00ff))); - uint8_t s3 = ((uint8_t)(instance->common.code_found >> 40) ^ k) & 0x0f; - uint8_t s2 = ((uint8_t)(instance->common.code_found >> 16) ^ k); - uint8_t s1 = ((uint8_t)(instance->common.code_found >> 8) ^ k); - uint8_t s0 = ((uint8_t)(instance->common.code_found) ^ k); + uint8_t s3 = ((uint8_t)(instance->common.code_last_found >> 40) ^ k) & 0x0f; + uint8_t s2 = ((uint8_t)(instance->common.code_last_found >> 16) ^ k); + uint8_t s1 = ((uint8_t)(instance->common.code_last_found >> 8) ^ k); + uint8_t s0 = ((uint8_t)(instance->common.code_last_found) ^ k); instance->common.serial = s3 << 24 | s2 << 16 | s1 << 8 | s0; - instance->common.btn = (instance->common.code_found >> 48) & 0x0f; - if(instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); + instance->common.btn = (instance->common.code_last_found >> 48) & 0x0f; } void subghz_protocol_nice_flor_s_reset(SubGhzProtocolNiceFlorS* instance) { @@ -152,7 +152,7 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l switch(instance->common.parser_step) { case 0: if((!level) - && (DURATION_DIFF(duration, instance->common.te_shot * 38) < instance->common.te_delta * 38)) { + && (DURATION_DIFF(duration, instance->common.te_short * 38) < instance->common.te_delta * 38)) { //Found start header Nice Flor-S instance->common.parser_step = 1; } else { @@ -161,7 +161,7 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l break; case 1: if((level) - && (DURATION_DIFF(duration, instance->common.te_shot * 3) < instance->common.te_delta * 3)) { + && (DURATION_DIFF(duration, instance->common.te_short * 3) < instance->common.te_delta * 3)) { //Found next header Nice Flor-S instance->common.parser_step = 2; } else { @@ -170,7 +170,7 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l break; case 2: if((!level) - && (DURATION_DIFF(duration, instance->common.te_shot * 3) < instance->common.te_delta * 3)) { + && (DURATION_DIFF(duration, instance->common.te_short * 3) < instance->common.te_delta * 3)) { //Found header Nice Flor-S instance->common.parser_step = 3; instance->common.code_found = 0; @@ -181,13 +181,13 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l break; case 3: if(level) { - if(DURATION_DIFF(duration, instance->common.te_shot * 3) < instance->common.te_delta) { + if(DURATION_DIFF(duration, instance->common.te_short * 3) < instance->common.te_delta) { //Found STOP bit instance->common.parser_step = 0; if(instance->common.code_count_bit >=instance->common.code_min_count_bit_for_found) { - - subghz_nice_flor_s_decoder_decrypt(instance); - + instance->common.code_last_found = instance->common.code_found; + instance->common.code_last_count_bit = instance->common.code_count_bit; + if(instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); } break; } else { @@ -199,13 +199,13 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l break; case 4: if(!level) { - if((DURATION_DIFF(instance->common.te_last, instance->common.te_shot) < instance->common.te_delta) + if((DURATION_DIFF(instance->common.te_last, instance->common.te_short) < instance->common.te_delta) &&(DURATION_DIFF(duration, instance->common.te_long) < instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 3; } else if( (DURATION_DIFF(instance->common.te_last, instance->common.te_long) < instance->common.te_delta) - &&(DURATION_DIFF(duration, instance->common.te_shot) < instance->common.te_delta)) { + &&(DURATION_DIFF(duration, instance->common.te_short) < instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 3; } else @@ -218,17 +218,18 @@ void subghz_protocol_nice_flor_s_parse(SubGhzProtocolNiceFlorS* instance, bool l } void subghz_protocol_nice_flor_s_to_str(SubGhzProtocolNiceFlorS* instance, string_t output) { - uint32_t code_found_hi = instance->common.code_found >> 32; - uint32_t code_found_lo = instance->common.code_found & 0x00000000ffffffff; + subghz_nice_flor_s_decoder_decrypt(instance); + uint32_t code_found_hi = instance->common.code_last_found >> 32; + uint32_t code_found_lo = instance->common.code_last_found & 0x00000000ffffffff; string_cat_printf( output, - "Protocol %s, %d Bit\r\n" + "%s, %d Bit\r\n" " KEY:0x%lX%08lX\r\n" " SN:%05lX\r\n" " CNT:%04X BTN:%02lX\r\n", instance->common.name, - instance->common.code_count_bit, + instance->common.code_last_count_bit, code_found_hi, code_found_lo, instance->common.serial, diff --git a/lib/subghz/protocols/subghz_protocol_princeton.c b/lib/subghz/protocols/subghz_protocol_princeton.c index 210f0db0..c05f297b 100644 --- a/lib/subghz/protocols/subghz_protocol_princeton.c +++ b/lib/subghz/protocols/subghz_protocol_princeton.c @@ -16,15 +16,9 @@ struct SubGhzEncoderPrinceton { size_t front; }; -struct SubGhzDecoderPrinceton { - SubGhzProtocolCommon common; - uint16_t te; -}; SubGhzEncoderPrinceton* subghz_encoder_princeton_alloc() { SubGhzEncoderPrinceton* instance = furi_alloc(sizeof(SubGhzEncoderPrinceton)); - - return instance; } @@ -32,6 +26,7 @@ void subghz_encoder_princeton_free(SubGhzEncoderPrinceton* instance) { furi_assert(instance); free(instance); } + void subghz_encoder_princeton_set_te(SubGhzEncoderPrinceton* instance, void* decoder){ SubGhzDecoderPrinceton* pricenton = decoder; if((pricenton->te) !=0){ @@ -42,7 +37,7 @@ void subghz_encoder_princeton_set_te(SubGhzEncoderPrinceton* instance, void* dec } -void subghz_encoder_princeton_reset(SubGhzEncoderPrinceton* instance, uint32_t key, size_t repeat) { +void subghz_encoder_princeton_set(SubGhzEncoderPrinceton* instance, uint32_t key, size_t repeat) { furi_assert(instance); instance->te = SUBGHZ_PT_SHORT; instance->key = key; @@ -85,21 +80,24 @@ LevelDuration subghz_encoder_princeton_yield(void* context) { return ret; } - SubGhzDecoderPrinceton* subghz_decoder_princeton_alloc(void) { SubGhzDecoderPrinceton* instance = furi_alloc(sizeof(SubGhzDecoderPrinceton)); + instance->te = SUBGHZ_PT_SHORT; instance->common.name = "Princeton"; instance->common.code_min_count_bit_for_found = 24; - instance->common.te_shot = 450; //150; - instance->common.te_long = 1350; //450; + instance->common.te_short = SUBGHZ_PT_SHORT; //150; + instance->common.te_long = SUBGHZ_PT_LONG; //450; instance->common.te_delta = 200; //50; + instance->common.type_protocol = TYPE_PROTOCOL_STATIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_decoder_princeton_to_str; instance->common.to_save_string = (SubGhzProtocolCommonGetStrSave)subghz_decoder_princeton_to_save_str; instance->common.to_load_protocol= (SubGhzProtocolCommonLoad)subghz_decoder_princeton_to_load_protocol; - + instance->common.get_upload_protocol = + (SubGhzProtocolEncoderCommonGetUpLoad)subghz_protocol_princeton_send_key; + return instance; } @@ -108,43 +106,32 @@ void subghz_decoder_princeton_free(SubGhzDecoderPrinceton* instance) { free(instance); } -/** Send bit - * - * @param instance - SubGhzDecoderPrinceton instance - * @param bit - bit - */ -void subghz_decoder_princeton_send_bit(SubGhzDecoderPrinceton* instance, uint8_t bit) { - if(bit) { - //send bit 1 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_long); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); - } else { - //send bit 0 - SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_long); - } -} - -void subghz_decoder_princeton_send_key( - SubGhzDecoderPrinceton* instance, - uint64_t key, - uint8_t bit, - uint8_t repeat) { - while(repeat--) { - SUBGHZ_TX_PIN_LOW(); - //Send start bit - subghz_decoder_princeton_send_bit(instance, 1); - //Send header - delay_us(instance->common.te_shot * 33); //+2 interval v bit 1 - //Send key data - for(uint8_t i = bit; i > 0; i--) { - subghz_decoder_princeton_send_bit(instance, bit_read(key, i - 1)); +bool subghz_protocol_princeton_send_key(SubGhzDecoderPrinceton* instance, SubGhzProtocolEncoderCommon* encoder){ + furi_assert(instance); + furi_assert(encoder); + size_t index = 0; + encoder->size_upload =(instance->common.code_last_count_bit * 2) + 2; + if(encoder->size_upload > SUBGHZ_ENCODER_UPLOAD_MAX_SIZE) return false; + + //Send key data + for (uint8_t i = instance->common.code_last_count_bit; i > 0; i--) { + if(bit_read(instance->common.code_last_found, i - 1)){ + //send bit 1 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->te*3); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->te); + }else{ + //send bit 0 + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->te); + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->te*3); } } + + //Send Stop bit + encoder->upload[index++] = level_duration_make(true, (uint32_t)instance->te); + //Send PT_GUARD + encoder->upload[index++] = level_duration_make(false, (uint32_t)instance->te*30); + + return true; } void subghz_decoder_princeton_reset(SubGhzDecoderPrinceton* instance) { @@ -157,7 +144,7 @@ void subghz_decoder_princeton_parse( uint32_t duration) { switch(instance->common.parser_step) { case 0: - if((!level) && (DURATION_DIFF(duration, instance->common.te_shot * 36) < + if((!level) && (DURATION_DIFF(duration, instance->common.te_short * 36) < instance->common.te_delta * 36)) { //Found Preambula instance->common.parser_step = 1; @@ -176,7 +163,7 @@ void subghz_decoder_princeton_parse( break; case 2: if(!level) { - if(duration >= (instance->common.te_shot * 10 + instance->common.te_delta)) { + if(duration >= (instance->common.te_short * 10 + instance->common.te_delta)) { instance->common.parser_step = 1; if(instance->common.code_count_bit >= instance->common.code_min_count_bit_for_found) { @@ -202,7 +189,7 @@ void subghz_decoder_princeton_parse( break; } - if((DURATION_DIFF(instance->common.te_last, instance->common.te_shot) < + if((DURATION_DIFF(instance->common.te_last, instance->common.te_short) < instance->common.te_delta) && (DURATION_DIFF(duration, instance->common.te_long) < instance->common.te_delta * 3)) { @@ -211,7 +198,7 @@ void subghz_decoder_princeton_parse( } else if( (DURATION_DIFF(instance->common.te_last, instance->common.te_long) < instance->common.te_delta * 3) && - (DURATION_DIFF(duration, instance->common.te_shot) < instance->common.te_delta)) { + (DURATION_DIFF(duration, instance->common.te_short) < instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 1); instance->common.parser_step = 1; } else { @@ -225,27 +212,23 @@ void subghz_decoder_princeton_parse( } void subghz_decoder_princeton_to_str(SubGhzDecoderPrinceton* instance, string_t output) { - uint32_t code_found_hi = instance->common.code_last_found >> 32; uint32_t code_found_lo = instance->common.code_last_found & 0x00000000ffffffff; uint64_t code_found_reverse = subghz_protocol_common_reverse_key( instance->common.code_last_found, instance->common.code_last_count_bit); - uint32_t code_found_reverse_hi = code_found_reverse >> 32; uint32_t code_found_reverse_lo = code_found_reverse & 0x00000000ffffffff; string_cat_printf( output, "%s %d Bit te %dus\r\n" - " KEY:0x%lX%08lX\r\n" - " YEK:0x%lX%08lX\r\n" + " KEY:0x%08lX\r\n" + " YEK:0x%08lX\r\n" " SN:0x%05lX BTN:%02X\r\n", instance->common.name, instance->common.code_last_count_bit, instance->te, - code_found_hi, code_found_lo, - code_found_reverse_hi, code_found_reverse_lo, instance->common.serial, instance->common.btn); diff --git a/lib/subghz/protocols/subghz_protocol_princeton.h b/lib/subghz/protocols/subghz_protocol_princeton.h index 7feeb978..a414b6a2 100644 --- a/lib/subghz/protocols/subghz_protocol_princeton.h +++ b/lib/subghz/protocols/subghz_protocol_princeton.h @@ -2,6 +2,10 @@ #include "subghz_protocol_common.h" +struct SubGhzDecoderPrinceton { + SubGhzProtocolCommon common; + uint16_t te; +}; /** SubGhzEncoderPrinceton anonymous type */ typedef struct SubGhzEncoderPrinceton SubGhzEncoderPrinceton; @@ -17,12 +21,12 @@ SubGhzEncoderPrinceton* subghz_encoder_princeton_alloc(); void subghz_encoder_princeton_free(SubGhzEncoderPrinceton* instance); -/** Reset encoder with new params +/** Set new encoder params * @param instance - SubGhzEncoderPrinceton instance * @param key - 24bit key * @param repeat - how many times to repeat */ -void subghz_encoder_princeton_reset(SubGhzEncoderPrinceton* instance, uint32_t key, size_t repeat); +void subghz_encoder_princeton_set(SubGhzEncoderPrinceton* instance, uint32_t key, size_t repeat); /** Get repeat count left * @param instance - SubGhzEncoderPrinceton instance @@ -57,14 +61,13 @@ SubGhzDecoderPrinceton* subghz_decoder_princeton_alloc(); */ void subghz_decoder_princeton_free(SubGhzDecoderPrinceton* instance); -/** Sends the key on the air +/** Get upload protocol * * @param instance - SubGhzDecoderPrinceton instance - * @param key - key send - * @param bit - count bit key - * @param repeat - repeat send key + * @param encoder - SubGhzProtocolEncoderCommon encoder + * @return bool */ -void subghz_decoder_princeton_send_key(SubGhzDecoderPrinceton* instance, uint64_t key, uint8_t bit, uint8_t repeat); +bool subghz_protocol_princeton_send_key(SubGhzDecoderPrinceton* instance, SubGhzProtocolEncoderCommon* encoder); /** Reset internal state * @param instance - SubGhzDecoderPrinceton instance diff --git a/lib/subghz/protocols/subghz_protocol_star_line.c b/lib/subghz/protocols/subghz_protocol_star_line.c index b676f2e9..1890b5e6 100644 --- a/lib/subghz/protocols/subghz_protocol_star_line.c +++ b/lib/subghz/protocols/subghz_protocol_star_line.c @@ -22,9 +22,10 @@ SubGhzProtocolStarLine* subghz_protocol_star_line_alloc(SubGhzKeystore* keystore instance->common.name = "Star Line"; instance->common.code_min_count_bit_for_found = 64; - instance->common.te_shot = 250; + instance->common.te_short = 250; instance->common.te_long = 500; instance->common.te_delta = 120; + instance->common.type_protocol = TYPE_PROTOCOL_DYNAMIC; instance->common.to_string = (SubGhzProtocolCommonToStr)subghz_protocol_star_line_to_str; return instance; @@ -43,16 +44,16 @@ void subghz_protocol_star_line_free(SubGhzProtocolStarLine* instance) { void subghz_protocol_star_line_send_bit(SubGhzProtocolStarLine* instance, uint8_t bit) { if (bit) { //send bit 1 - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); delay_us(instance->common.te_long); SUBGHZ_TX_PIN_LOW(); delay_us(instance->common.te_long); } else { //send bit 0 - SUBGHZ_TX_PIN_HIGTH(); - delay_us(instance->common.te_shot); + SUBGHZ_TX_PIN_HIGH(); + delay_us(instance->common.te_short); SUBGHZ_TX_PIN_LOW(); - delay_us(instance->common.te_shot); + delay_us(instance->common.te_short); } } @@ -60,7 +61,7 @@ void subghz_protocol_star_line_send_key(SubGhzProtocolStarLine* instance, uint64 while (repeat--) { //Send header for(uint8_t i = 0; i < 6; i++){ - SUBGHZ_TX_PIN_HIGTH(); + SUBGHZ_TX_PIN_HIGH(); delay_us(instance->common.te_long * 2); SUBGHZ_TX_PIN_LOW(); delay_us(instance->common.te_long * 2); @@ -174,7 +175,7 @@ uint8_t subghz_protocol_star_line_check_remote_controller_selector(SubGhzProtoco * @param instance SubGhzProtocolStarLine instance */ void subghz_protocol_star_line_check_remote_controller(SubGhzProtocolStarLine* instance) { - uint64_t key = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + uint64_t key = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t key_fix = key >> 32; uint32_t key_hop = key & 0x00000000ffffffff; @@ -182,10 +183,6 @@ void subghz_protocol_star_line_check_remote_controller(SubGhzProtocolStarLine* i instance ->common.serial= key_fix&0x00FFFFFF; instance->common.btn = key_fix >> 24; - - - if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); - } void subghz_protocol_star_line_parse(SubGhzProtocolStarLine* instance, bool level, uint32_t duration) { @@ -222,7 +219,9 @@ void subghz_protocol_star_line_parse(SubGhzProtocolStarLine* instance, bool leve instance->common.parser_step = 0; if (instance->common.code_count_bit>= instance->common.code_min_count_bit_for_found) { if(instance->common.code_last_found != instance->common.code_found){ - subghz_protocol_star_line_check_remote_controller(instance); + instance->common.code_last_found = instance->common.code_found; + instance->common.code_last_count_bit = instance->common.code_count_bit; + if (instance->common.callback) instance->common.callback((SubGhzProtocolCommon*)instance, instance->common.context); } } instance->common.code_found = 0; @@ -240,8 +239,8 @@ void subghz_protocol_star_line_parse(SubGhzProtocolStarLine* instance, bool leve break; case 3: if(!level){ - if ((DURATION_DIFF(instance->common.te_last,instance->common.te_shot)< instance->common.te_delta) - && (DURATION_DIFF(duration,instance->common.te_shot)< instance->common.te_delta)) { + if ((DURATION_DIFF(instance->common.te_last,instance->common.te_short)< instance->common.te_delta) + && (DURATION_DIFF(duration,instance->common.te_short)< instance->common.te_delta)) { subghz_protocol_common_add_bit(&instance->common, 0); instance->common.parser_step = 2; } else if ((DURATION_DIFF(instance->common.te_last,instance->common.te_long )< instance->common.te_delta) @@ -259,22 +258,23 @@ void subghz_protocol_star_line_parse(SubGhzProtocolStarLine* instance, bool leve } void subghz_protocol_star_line_to_str(SubGhzProtocolStarLine* instance, string_t output) { - uint32_t code_found_hi = instance->common.code_found >> 32; - uint32_t code_found_lo = instance->common.code_found & 0x00000000ffffffff; + subghz_protocol_star_line_check_remote_controller(instance); + uint32_t code_found_hi = instance->common.code_last_found >> 32; + uint32_t code_found_lo = instance->common.code_last_found & 0x00000000ffffffff; - uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_found, instance->common.code_count_bit); + uint64_t code_found_reverse = subghz_protocol_common_reverse_key(instance->common.code_last_found, instance->common.code_last_count_bit); uint32_t code_found_reverse_hi = code_found_reverse>>32; uint32_t code_found_reverse_lo = code_found_reverse&0x00000000ffffffff; string_cat_printf( output, - "Protocol %s, %d Bit\r\n" + "%s, %d Bit\r\n" "KEY:0x%lX%lX\r\n" "FIX:%08lX MF:%s \r\n" "HOP:%08lX \r\n" "SN:%06lX CNT:%04X B:%02lX\r\n", instance->common.name, - instance->common.code_count_bit, + instance->common.code_last_count_bit, code_found_hi, code_found_lo, code_found_reverse_hi, From 8d07e67dded1e043c9690c5d5ce6f0047bade5f2 Mon Sep 17 00:00:00 2001 From: SG Date: Tue, 17 Aug 2021 06:14:27 +1000 Subject: [PATCH 04/18] [FL-1688] Incorrect SD read/write block address #649 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .../targets/f6/Src/fatfs/stm32_adafruit_sd.c | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/firmware/targets/f6/Src/fatfs/stm32_adafruit_sd.c b/firmware/targets/f6/Src/fatfs/stm32_adafruit_sd.c index 9c328d30..e90ebd62 100644 --- a/firmware/targets/f6/Src/fatfs/stm32_adafruit_sd.c +++ b/firmware/targets/f6/Src/fatfs/stm32_adafruit_sd.c @@ -393,13 +393,12 @@ uint8_t BSP_SD_GetCardInfo(SD_CardInfo* pCardInfo) { uint8_t BSP_SD_ReadBlocks(uint32_t* pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint32_t Timeout) { uint32_t offset = 0; + uint32_t addr; uint8_t retr = BSP_SD_ERROR; + uint8_t* ptr = NULL; SD_CmdAnswer_typedef response; uint16_t BlockSize = 512; - uint8_t* ptr = NULL; - // uint8_t ptr[512]; - /* Send CMD16 (SD_CMD_SET_BLOCKLEN) to set the size of the block and Check if the SD acknowledged the set block length command: R1 response (0x00: no errors) */ response = SD_SendCmd(SD_CMD_SET_BLOCKLEN, BlockSize, 0xFF, SD_ANSWER_R1_EXPECTED); @@ -415,15 +414,14 @@ BSP_SD_ReadBlocks(uint32_t* pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint } memset(ptr, SD_DUMMY_BYTE, sizeof(uint8_t) * BlockSize); + /* Initialize the address */ + addr = (ReadAddr * ((flag_SDHC == 1) ? 1 : BlockSize)); + /* Data transfer */ while(NumOfBlocks--) { /* Send CMD17 (SD_CMD_READ_SINGLE_BLOCK) to read one block */ /* Check if the SD acknowledged the read block command: R1 response (0x00: no errors) */ - response = SD_SendCmd( - SD_CMD_READ_SINGLE_BLOCK, - (ReadAddr + offset) * (flag_SDHC == 1 ? 1 : BlockSize), - 0xFF, - SD_ANSWER_R1_EXPECTED); + response = SD_SendCmd(SD_CMD_READ_SINGLE_BLOCK, addr, 0xFF, SD_ANSWER_R1_EXPECTED); if(response.r1 != SD_R1_NO_ERROR) { goto error; } @@ -435,6 +433,8 @@ BSP_SD_ReadBlocks(uint32_t* pData, uint32_t ReadAddr, uint32_t NumOfBlocks, uint /* Set next read address*/ offset += BlockSize; + addr = ((flag_SDHC == 1) ? (addr + 1) : (addr + BlockSize)); + /* get CRC bytes (not really needed by us, but required by SD) */ SD_IO_WriteByte(SD_DUMMY_BYTE); SD_IO_WriteByte(SD_DUMMY_BYTE); @@ -471,6 +471,7 @@ error: uint8_t BSP_SD_WriteBlocks(uint32_t* pData, uint32_t WriteAddr, uint32_t NumOfBlocks, uint32_t Timeout) { uint32_t offset = 0; + uint32_t addr; uint8_t retr = BSP_SD_ERROR; uint8_t* ptr = NULL; SD_CmdAnswer_typedef response; @@ -490,15 +491,14 @@ BSP_SD_WriteBlocks(uint32_t* pData, uint32_t WriteAddr, uint32_t NumOfBlocks, ui goto error; } + /* Initialize the address */ + addr = (WriteAddr * ((flag_SDHC == 1) ? 1 : BlockSize)); + /* Data transfer */ while(NumOfBlocks--) { /* Send CMD24 (SD_CMD_WRITE_SINGLE_BLOCK) to write blocks and Check if the SD acknowledged the write block command: R1 response (0x00: no errors) */ - response = SD_SendCmd( - SD_CMD_WRITE_SINGLE_BLOCK, - (WriteAddr + offset) * (flag_SDHC == 1 ? 1 : BlockSize), - 0xFF, - SD_ANSWER_R1_EXPECTED); + response = SD_SendCmd(SD_CMD_WRITE_SINGLE_BLOCK, addr, 0xFF, SD_ANSWER_R1_EXPECTED); if(response.r1 != SD_R1_NO_ERROR) { goto error; } @@ -515,7 +515,8 @@ BSP_SD_WriteBlocks(uint32_t* pData, uint32_t WriteAddr, uint32_t NumOfBlocks, ui /* Set next write address */ offset += BlockSize; - + addr = ((flag_SDHC == 1) ? (addr + 1) : (addr + BlockSize)); + /* Put CRC bytes (not really needed by us, but required by SD) */ SD_IO_WriteByte(SD_DUMMY_BYTE); SD_IO_WriteByte(SD_DUMMY_BYTE); From 69f4858168441514463d8e28330add418bd1b3f0 Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Mon, 16 Aug 2021 23:22:30 +0300 Subject: [PATCH 05/18] DFU make rule, update Readme (#650) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .github/workflows/build.yml | 26 +----- ReadMe.md | 178 ++++++++++++++++++++++++------------ docker-compose.yml | 10 +- make/rules.mk | 9 +- 4 files changed, 129 insertions(+), 94 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8ab5cca9..84c85d0b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,18 +58,6 @@ jobs: make -j$(nproc) -C bootloader TARGET=${TARGET} done - - name: 'Generate dfu file for bootloader' - uses: ./.github/actions/docker - with: - run: | - for TARGET in ${TARGETS} - do - hex2dfu \ - -i bootloader/.obj/${TARGET}/bootloader.hex \ - -o bootloader/.obj/${TARGET}/bootloader.dfu \ - -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" - done - - name: 'Build firmware in docker' uses: ./.github/actions/docker with: @@ -79,18 +67,6 @@ jobs: make -j$(nproc) -C firmware TARGET=${TARGET} done - - name: 'Generate dfu file for firmware' - uses: ./.github/actions/docker - with: - run: | - for TARGET in ${TARGETS} - do - hex2dfu \ - -i firmware/.obj/${TARGET}/firmware.hex \ - -o firmware/.obj/${TARGET}/firmware.dfu \ - -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" - done - - name: 'Generate full hex file' uses: ./.github/actions/docker with: @@ -150,7 +126,7 @@ jobs: do truncate -s 32768 artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin done - + - name: 'Full flash asssembly: append firmware' run: | for TARGET in ${TARGETS} diff --git a/ReadMe.md b/ReadMe.md index 07e13689..bf6f7664 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,12 +1,11 @@ -# Flipper Zero Firmware community repo +# Flipper Zero Firmware [![Discord](https://img.shields.io/discord/740930220399525928.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](http://flipperzero.one/discord) Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! -Our goal is to create nice and clean code along with good documentation, to make it a pleasure for everyone to work with. -This repo will become completely public closer to the device shipping date. +Our goal is to create nice and clean code with good documentation, to make it a pleasure for everyone to work with. # Update firmware @@ -27,7 +26,7 @@ All 3 of them must be flashed in order described. Prerequisites: -- Linux / MacOs +- Linux / macOS - Terminal - STM32_Programmer_CLI added to $PATH @@ -37,9 +36,9 @@ One liner: `./flash_core2_ble.sh` Prerequisites: -- Linux / MacOs +- Linux / macOS - Terminal -- Arm gcc noneabi +- [arm-gcc-none-eabi](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) - openocd One liner: `./flash_core1_main.sh` @@ -58,75 +57,132 @@ One liner: `./flash_core1_main.sh` # Build from source -`docker-compose exec dev make -C firmware flash` for build and flash dev board (see `applications/applications.mk` for list of applications/examples) +## Prerequisites + +1. Install [Docker Engine and Docker Compose](https://www.docker.com/get-started) +2. Clone the repo: + ```sh + git clone https://github.com/flipperdevices/flipperzero-firmware + cd flipperzero-firmware + ``` +3. Prepare the container: + ```sh + docker compose up -d + ``` + +## Compile bootloader + +```sh +docker compose exec dev make -j$(nproc) -C bootloader TARGET=f6 +``` + +Bootloader compilation results: +* `bootloader/.obj/f6/bootloader.elf` +* `bootloader/.obj/f6/bootloader.hex` +* `bootloader/.obj/f6/bootloader.bin` +* **`bootloader/.obj/f6/bootloader.dfu`** - should be used to flash + +## Compile firmware + +```sh +docker compose exec dev make -j$(nproc) -C firmware TARGET=f6 +``` + +Firmware compilation results: +* `firmware/.obj/f6/firmware.elf` +* `firmware/.obj/f6/firmware.hex` +* `firmware/.obj/f6/firmware.bin` +* **`firmware/.obj/f6/firmware.dfu`** - should be used to flash + +## Concatenate bootloader and firmware + +You might want to do this to distribute the firmware as a single file. + +That's exactly how we generate our `full` builds. + +1. Concatenate HEX files: + ```sh + docker compose exec dev srec_cat \ + bootloader/.obj/f6/bootloader.hex -Intel \ + firmware/.obj/f6/firmware.hex -Intel \ + -o firmware/.obj/f6/full.hex -Intel + ``` +2. Convert HEX to DFU: + ```sh + docker compose exec dev hex2dfu \ + -i firmware/.obj/f6/full.hex \ + -o firmware/.obj/f6/full.dfu \ + -l "Flipper Zero F6" + ``` + +Finally, you will have **`firmware/.obj/f6/full.dfu`** file that can be distributed and flashed. # Links -* Task tracker: [Jira](https://flipperzero.atlassian.net/) -* Discord server: [flipperzero.one/discord](https://flipperzero.one/discord) -* Project website: [flipperzero.one](https://flipperzero.one) +* Discord: [flipp.dev/discord](https://flipp.dev/discord) +* Website: [flipperzero.one](https://flipperzero.one) * Kickstarter page: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers) * Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) # Folders structure - applications - application and services - * accessor - Wiegand server - * archive - Archive and file manager - * bt - BLE service and application - * cli - Console service - * debug_tools - different tools that we use on factory and for debug - * dialogs - service for showing GUI dialogs - * dolphin - dolphin service and supplientary apps - * gpio-tester - GPIO control application - * gui - GUI service - * ibutton - ibutton application, onewire keys and more - * input - input service - * irda - irda application, controls your IR devices - * irda_monitor - irda debug tool - * lfrfid - LF RFID application - * lfrfid-debug - LF RFID debug tool - * loader - application loader service - * menu - main menu service - * music-player - music player app (demo) - * nfc - NFC application, HF rfid, EMV and etc - * notification - notification service - * power - power service - * power-observer - power debug tool - * scened-app-example - c++ application example - * storage - storage service, internal + sdcard - * storage-settings - storage settings app - * subghz - subghz application, 433 fobs and etc - * tests - unit tests and etc + * accessor - Wiegand server + * archive - Archive and file manager + * bt - BLE service and application + * cli - Console service + * debug_tools - different tools that we use on factory and for debug + * dialogs - service for showing GUI dialogs + * dolphin - dolphin service and supplientary apps + * gpio-tester - GPIO control application + * gui - GUI service + * ibutton - ibutton application, onewire keys and more + * input - input service + * irda - irda application, controls your IR devices + * irda_monitor - irda debug tool + * lfrfid - LF RFID application + * lfrfid-debug - LF RFID debug tool + * loader - application loader service + * menu - main menu service + * music-player - music player app (demo) + * nfc - NFC application, HF rfid, EMV and etc + * notification - notification service + * power - power service + * power-observer - power debug tool + * scened-app-example - c++ application example + * storage - storage service, internal + sdcard + * storage-settings - storage settings app + * subghz - subghz application, 433 fobs and etc + * tests - unit tests and etc - assets - assets used by applications and services - * compiled - compilation results - * icons - source icons images + * compiled - compilation results + * icons - source icons images - bootloader - bootloader for flipper - * src - bootloader sources - * targets - targets' hal and implementation + * src - bootloader sources + * targets - targets' hal and implementation - core - core libraries: home for furi - debug - debug helpers, plugins and tools - docker - docker image sources (used for automated firmware build) - firmware - firmware for flipper - * targets - targets' hal and implementation + * targets - targets' hal and implementation - lib - different libraries and drivers that apps and firmware uses - * ST25RFAL002 - ST253916 driver and NFC hal - * STM32CubeWB - STM32WB hal - * app-scened-template - scened template app library - * app-template - template app library - * callback-connector - callback connector library - * common-api - common api delaration library - * cyfral - cyfral library - * drivers - drivers that we wrote - * fatfs - external storage file system - * fnv1a-hash - fnv1a hash library - * irda - irda library - * littlefs - internal storage file system - * mlib - algorithms and containers - * nfc_protocols - nfc protocols library - * onewire - one wire library - * qrcode - qr code generator library - * subghz - subghz library - * toolbox - toolbox of things that we are using but don't place in core - * u8g2 - graphics library that we use to draw GUI + * ST25RFAL002 - ST253916 driver and NFC hal + * STM32CubeWB - STM32WB hal + * app-scened-template - scened template app library + * app-template - template app library + * callback-connector - callback connector library + * common-api - common api delaration library + * cyfral - cyfral library + * drivers - drivers that we wrote + * fatfs - external storage file system + * fnv1a-hash - fnv1a hash library + * irda - irda library + * littlefs - internal storage file system + * mlib - algorithms and containers + * nfc_protocols - nfc protocols library + * onewire - one wire library + * qrcode - qr code generator library + * subghz - subghz library + * toolbox - toolbox of things that we are using but don't place in core + * u8g2 - graphics library that we use to draw GUI - make - make helpers - scripts - supplimentary scripts diff --git a/docker-compose.yml b/docker-compose.yml index 42d05584..68aa14c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,12 @@ version: '3' services: dev: - build: docker - network_mode: "host" + image: flipperdevices/flipperzero-toolchain + network_mode: host privileged: true tty: true stdin_open: true volumes: - .:/project - /dev/bus/usb:/dev/bus/usb - working_dir: "/project" - environment: - DISPLAY: $DISPLAY - TERM: xterm-256color - PATH: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + working_dir: '/project' \ No newline at end of file diff --git a/make/rules.mk b/make/rules.mk index 627f14c6..79a24db3 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -32,7 +32,7 @@ CHECK_AND_REINIT_SUBMODULES_SHELL=\ fi $(info $(shell $(CHECK_AND_REINIT_SUBMODULES_SHELL))) -all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin +all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin $(OBJ_DIR)/$(PROJECT).dfu $(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS) @echo "\tLD\t" $@ @@ -47,6 +47,13 @@ $(OBJ_DIR)/$(PROJECT).bin: $(OBJ_DIR)/$(PROJECT).elf @echo "\tBIN\t" $@ @$(BIN) $< $@ +$(OBJ_DIR)/$(PROJECT).dfu: $(OBJ_DIR)/$(PROJECT).hex + @echo "\tDFU\t" $@ + @hex2dfu \ + -i $(OBJ_DIR)/$(PROJECT).hex \ + -o $(OBJ_DIR)/$(PROJECT).dfu \ + -l "Flipper Zero $(shell echo $(TARGET) | tr a-z A-Z)" > /dev/null + $(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS @echo "\tCC\t" $< "->" $@ @$(CC) $(CFLAGS) -c $< -o $@ From e1d80d5402d8b19de7e5a448dc20bc83a50e7bfc Mon Sep 17 00:00:00 2001 From: its your bedtime <23366927+itsyourbedtime@users.noreply.github.com> Date: Mon, 16 Aug 2021 23:50:49 +0300 Subject: [PATCH 06/18] responsive ui for not implemented features in lock menu (#648) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- applications/dolphin/dolphin.c | 8 ++++++++ applications/dolphin/dolphin_views.c | 13 +++++++++++-- applications/dolphin/dolphin_views.h | 2 ++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/applications/dolphin/dolphin.c b/applications/dolphin/dolphin.c index 705ed808..b7133b9a 100644 --- a/applications/dolphin/dolphin.c +++ b/applications/dolphin/dolphin.c @@ -180,6 +180,12 @@ static void lock_menu_callback(void* context, uint8_t index) { break; default: + // wip message + with_view_model( + dolphin->view_lockmenu, (DolphinViewLockMenuModel * model) { + model->hint_timeout = HINT_TIMEOUT_H; + return true; + }); break; } } @@ -199,6 +205,8 @@ bool dolphin_view_lockmenu_input(InputEvent* event, void* context) { DolphinViewLockMenuModel* model = view_get_model(dolphin->view_lockmenu); + model->hint_timeout = 0; // clear hint timeout + if(event->key == InputKeyUp) { model->idx = CLAMP(model->idx - 1, 2, 0); } else if(event->key == InputKeyDown) { diff --git a/applications/dolphin/dolphin_views.c b/applications/dolphin/dolphin_views.c index 8953fe3a..953671e7 100644 --- a/applications/dolphin/dolphin_views.c +++ b/applications/dolphin/dolphin_views.c @@ -63,7 +63,7 @@ void dolphin_view_idle_main_draw(Canvas* canvas, void* model) { canvas_draw_icon_animation(canvas, 0, -3, m->animation); } - if(m->hint_timeout > 0) { + if(m->hint_timeout) { m->hint_timeout--; if(m->locked) { canvas_draw_icon(canvas, 13, 5, &I_LockPopup_100x49); @@ -98,10 +98,19 @@ void dolphin_view_lockmenu_draw(Canvas* canvas, void* model) { if(m->door_left_x == -57) { for(uint8_t i = 0; i < 3; ++i) { canvas_draw_str_aligned( - canvas, 64, 13 + (i * 17), AlignCenter, AlignCenter, Lockmenu_Items[i]); + canvas, + 64, + 13 + (i * 17), + AlignCenter, + AlignCenter, + (m->hint_timeout && m->idx == i) ? "Not implemented" : Lockmenu_Items[i]); if(m->idx == i) elements_frame(canvas, 15, 5 + (i * 17), 98, 15); } } + + if(m->hint_timeout) { + m->hint_timeout--; + } } } diff --git a/applications/dolphin/dolphin_views.h b/applications/dolphin/dolphin_views.h index 8987d829..2f91b69a 100644 --- a/applications/dolphin/dolphin_views.h +++ b/applications/dolphin/dolphin_views.h @@ -41,6 +41,8 @@ typedef struct { int8_t door_left_x; int8_t door_right_x; uint8_t exit_timeout; + uint8_t hint_timeout; + bool locked; } DolphinViewLockMenuModel; From c1223174681f8fa96caee376f502d49886db0355 Mon Sep 17 00:00:00 2001 From: gornekich Date: Tue, 17 Aug 2021 00:45:04 +0300 Subject: [PATCH 07/18] [FL-1526] Mifare Ultralight emulation (#645) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * rfal: add discovery parameter for passing listen activation * nfc: add discovery parameter to furi_hal_nfc_listen * mifare_ul: add emulation parsing commands * nfc: add mifare ul emulation * nfc: switch to mifare ultralight emulation form menu * furi-hal-nfc: add first frame reception in emulation mode * nfc: change argument check * nfc: rework nfc worker and mifare ul lib * mifare_ul: add write and cnt increment commands * nfc: add card modification check * mifare_ul: add data changed flag * nfc: add shodow files * nfc: add restore original file Co-authored-by: あく --- applications/nfc/nfc.c | 3 +- applications/nfc/nfc_cli.c | 2 +- applications/nfc/nfc_device.c | 93 +++++++++++++++++-- applications/nfc/nfc_device.h | 5 + applications/nfc/nfc_worker.c | 55 +++++++---- applications/nfc/scenes/nfc_scene_config.h | 1 + .../nfc/scenes/nfc_scene_emulate_mifare_ul.c | 51 +++++----- .../nfc/scenes/nfc_scene_mifare_ul_menu.c | 2 +- .../nfc/scenes/nfc_scene_restore_original.c | 48 ++++++++++ .../nfc/scenes/nfc_scene_saved_menu.c | 41 +++++--- firmware/targets/f6/furi-hal/furi-hal-nfc.c | 11 ++- .../targets/furi-hal-include/furi-hal-nfc.h | 7 +- lib/ST25RFAL002/include/rfal_nfc.h | 2 + lib/ST25RFAL002/source/rfal_nfc.c | 8 ++ lib/nfc_protocols/mifare_ultralight.c | 91 ++++++++++++++++++ lib/nfc_protocols/mifare_ultralight.h | 3 + 16 files changed, 354 insertions(+), 69 deletions(-) create mode 100644 applications/nfc/scenes/nfc_scene_restore_original.c diff --git a/applications/nfc/nfc.c b/applications/nfc/nfc.c index a1f4a19e..5bf788b9 100755 --- a/applications/nfc/nfc.c +++ b/applications/nfc/nfc.c @@ -151,9 +151,10 @@ void nfc_text_store_clear(Nfc* nfc) { int32_t nfc_app(void* p) { Nfc* nfc = nfc_alloc(); + char* args = p; // Check argument and run corresponding scene - if(p && nfc_device_load(&nfc->dev, p)) { + if((*args != '\0') && nfc_device_load(&nfc->dev, p)) { scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateUid); } else { scene_manager_next_scene(nfc->scene_manager, NfcSceneStart); diff --git a/applications/nfc/nfc_cli.c b/applications/nfc/nfc_cli.c index 8adf5761..e2ddb5ed 100755 --- a/applications/nfc/nfc_cli.c +++ b/applications/nfc/nfc_cli.c @@ -64,7 +64,7 @@ void nfc_cli_emulate(Cli* cli, string_t args, void* context) { }; while(!cli_cmd_interrupt_received(cli)) { - if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 100)) { + if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, false, 100)) { printf("Reader detected\r\n"); furi_hal_nfc_deactivate(); } diff --git a/applications/nfc/nfc_device.c b/applications/nfc/nfc_device.c index bfe0e877..bdb3d547 100755 --- a/applications/nfc/nfc_device.c +++ b/applications/nfc/nfc_device.c @@ -8,6 +8,7 @@ static const char* nfc_app_folder = "/any/nfc"; static const char* nfc_app_extension = ".nfc"; +static const char* nfc_app_shadow_extension = ".shd"; static bool nfc_device_read_hex(string_t str, uint8_t* buff, uint16_t len) { string_strim(str); @@ -259,7 +260,11 @@ void nfc_device_set_name(NfcDevice* dev, const char* name) { strlcpy(dev->dev_name, name, NFC_DEV_NAME_MAX_LEN); } -bool nfc_device_save(NfcDevice* dev, const char* dev_name) { +static bool nfc_device_save_file( + NfcDevice* dev, + const char* dev_name, + const char* folder, + const char* extension) { furi_assert(dev); FileWorker* file_worker = file_worker_alloc(false); @@ -275,7 +280,7 @@ bool nfc_device_save(NfcDevice* dev, const char* dev_name) { break; }; // First remove nfc device file if it was saved - string_printf(dev_file_name, "%s/%s%s", nfc_app_folder, dev_name, nfc_app_extension); + string_printf(dev_file_name, "%s/%s%s", folder, dev_name, extension); if(!file_worker_remove(file_worker, string_get_cstr(dev_file_name))) { break; }; @@ -316,16 +321,42 @@ bool nfc_device_save(NfcDevice* dev, const char* dev_name) { return true; } +bool nfc_device_save(NfcDevice* dev, const char* dev_name) { + return nfc_device_save_file(dev, dev_name, nfc_app_folder, nfc_app_extension); +} + +bool nfc_device_save_shadow(NfcDevice* dev, const char* dev_name) { + dev->shadow_file_exist = true; + return nfc_device_save_file(dev, dev_name, nfc_app_folder, nfc_app_shadow_extension); +} + static bool nfc_device_load_data(FileWorker* file_worker, string_t path, NfcDevice* dev) { string_t temp_string; string_init(temp_string); bool parsed = false; do { - // Open key file - if(!file_worker_open(file_worker, string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) { + // Check existance of shadow file + size_t ext_start = string_search_str(path, nfc_app_extension); + string_set_n(temp_string, path, 0, ext_start); + string_cat_printf(temp_string, "%s", nfc_app_shadow_extension); + if(!file_worker_is_file_exist( + file_worker, string_get_cstr(temp_string), &dev->shadow_file_exist)) { break; } + // Open shadow file if it exists. If not - open original + if(dev->shadow_file_exist) { + if(!file_worker_open( + file_worker, string_get_cstr(temp_string), FSAM_READ, FSOM_OPEN_EXISTING)) { + break; + } + } else { + if(!file_worker_open( + file_worker, string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) { + break; + } + } + // Read and parse format from 1st line if(!file_worker_read_until(file_worker, temp_string, '\n')) { break; @@ -427,13 +458,61 @@ void nfc_device_clear(NfcDevice* dev) { bool nfc_device_delete(NfcDevice* dev) { furi_assert(dev); - bool result = false; + bool result = true; FileWorker* file_worker = file_worker_alloc(false); string_t file_path; - string_init_printf(file_path, "%s/%s%s", nfc_app_folder, dev->dev_name, nfc_app_extension); - result = file_worker_remove(file_worker, string_get_cstr(file_path)); + + do { + // Delete original file + string_init_printf(file_path, "%s/%s%s", nfc_app_folder, dev->dev_name, nfc_app_extension); + if(!file_worker_remove(file_worker, string_get_cstr(file_path))) { + result = false; + break; + } + // Delete shadow file if it exists + if(dev->shadow_file_exist) { + string_clean(file_path); + string_printf( + file_path, "%s/%s%s", nfc_app_folder, dev->dev_name, nfc_app_shadow_extension); + if(!file_worker_remove(file_worker, string_get_cstr(file_path))) { + result = false; + break; + } + } + } while(0); + string_clear(file_path); file_worker_close(file_worker); file_worker_free(file_worker); return result; } + +bool nfc_device_restore(NfcDevice* dev) { + furi_assert(dev); + furi_assert(dev->shadow_file_exist); + + bool result = true; + FileWorker* file_worker = file_worker_alloc(false); + string_t path; + + do { + string_init_printf( + path, "%s/%s%s", nfc_app_folder, dev->dev_name, nfc_app_shadow_extension); + if(!file_worker_remove(file_worker, string_get_cstr(path))) { + result = false; + break; + } + dev->shadow_file_exist = false; + string_clean(path); + string_printf(path, "%s/%s%s", nfc_app_folder, dev->dev_name, nfc_app_extension); + if(!nfc_device_load_data(file_worker, path, dev)) { + result = false; + break; + } + } while(0); + + string_clear(path); + file_worker_close(file_worker); + file_worker_free(file_worker); + return result; +} diff --git a/applications/nfc/nfc_device.h b/applications/nfc/nfc_device.h index c2de3120..25f0e42f 100644 --- a/applications/nfc/nfc_device.h +++ b/applications/nfc/nfc_device.h @@ -59,12 +59,15 @@ typedef struct { char dev_name[NFC_DEV_NAME_MAX_LEN]; char file_name[NFC_FILE_NAME_MAX_LEN]; NfcDeviceSaveFormat format; + bool shadow_file_exist; } NfcDevice; void nfc_device_set_name(NfcDevice* dev, const char* name); bool nfc_device_save(NfcDevice* dev, const char* dev_name); +bool nfc_device_save_shadow(NfcDevice* dev, const char* dev_name); + bool nfc_device_load(NfcDevice* dev, const char* file_path); bool nfc_file_select(NfcDevice* dev); @@ -72,3 +75,5 @@ bool nfc_file_select(NfcDevice* dev); void nfc_device_clear(NfcDevice* dev); bool nfc_device_delete(NfcDevice* dev); + +bool nfc_device_restore(NfcDevice* dev); diff --git a/applications/nfc/nfc_worker.c b/applications/nfc/nfc_worker.c index 334e6d7b..9fd6dc64 100755 --- a/applications/nfc/nfc_worker.c +++ b/applications/nfc/nfc_worker.c @@ -143,7 +143,7 @@ void nfc_worker_detect(NfcWorker* nfc_worker) { void nfc_worker_emulate(NfcWorker* nfc_worker) { NfcDeviceCommomData* data = &nfc_worker->dev_data->nfc_data; while(nfc_worker->state == NfcWorkerStateEmulate) { - if(furi_hal_nfc_listen(data->uid, data->uid_len, data->atqa, data->sak, 100)) { + if(furi_hal_nfc_listen(data->uid, data->uid_len, data->atqa, data->sak, false, 100)) { FURI_LOG_I(NFC_WORKER_TAG, "Reader detected"); } osDelay(10); @@ -406,7 +406,7 @@ void nfc_worker_emulate_apdu(NfcWorker* nfc_worker) { 0x00, 0x00}; while(nfc_worker->state == NfcWorkerStateEmulateApdu) { - if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, 300)) { + if(furi_hal_nfc_listen(params.uid, params.uid_len, params.atqa, params.sak, false, 300)) { FURI_LOG_I(NFC_WORKER_TAG, "POS terminal detected"); // Read data from POS terminal err = furi_hal_nfc_data_exchange(NULL, 0, &rx_buff, &rx_len, false); @@ -608,33 +608,52 @@ void nfc_worker_emulate_mifare_ul(NfcWorker* nfc_worker) { uint8_t* rx_buff; uint16_t* rx_len; NfcDeviceData* data = nfc_worker->dev_data; - + MifareUlDevice mf_ul_emulate; + // Setup emulation parameters from mifare ultralight data structure + mf_ul_prepare_emulation(&mf_ul_emulate, &data->mf_ul_data); while(nfc_worker->state == NfcWorkerStateEmulateMifareUl) { if(furi_hal_nfc_listen( data->nfc_data.uid, data->nfc_data.uid_len, data->nfc_data.atqa, data->nfc_data.sak, - 1000)) { - FURI_LOG_I(NFC_WORKER_TAG, "Hello my dudes"); - // Prepare version answer - tx_len = sizeof(data->mf_ul_data.version); - memcpy(tx_buff, &data->mf_ul_data.version, tx_len); - err = furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); - if(err == ERR_NONE) { - FURI_LOG_I(NFC_WORKER_TAG, "Received 1st message:"); - for(uint16_t i = 0; i < *rx_len; i++) { - printf("%02X ", rx_buff[i]); + true, + 200)) { + FURI_LOG_D(NFC_WORKER_TAG, "Anticollision passed"); + if(furi_hal_nfc_get_first_frame(&rx_buff, &rx_len)) { + // Data exchange loop + while(nfc_worker->state == NfcWorkerStateEmulateMifareUl) { + tx_len = mf_ul_prepare_emulation_response( + rx_buff, *rx_len, tx_buff, &mf_ul_emulate); + if(tx_len > 0) { + err = + furi_hal_nfc_data_exchange(tx_buff, tx_len, &rx_buff, &rx_len, false); + if(err == ERR_NONE) { + continue; + } else { + FURI_LOG_E(NFC_WORKER_TAG, "Communication error: %d", err); + break; + } + } else { + FURI_LOG_W(NFC_WORKER_TAG, "Not valid command: %02X", rx_buff[0]); + furi_hal_nfc_deactivate(); + break; + } } - printf("\r\n"); } else { - FURI_LOG_E(NFC_WORKER_TAG, "Error in 1st data exchange: select PPSE"); + FURI_LOG_W(NFC_WORKER_TAG, "Error in 1st data exchange"); furi_hal_nfc_deactivate(); - continue; } } - FURI_LOG_W(NFC_WORKER_TAG, "Hello my dudes"); - osDelay(10); + // Check if data was modified + if(mf_ul_emulate.data_changed) { + nfc_worker->dev_data->mf_ul_data = mf_ul_emulate.data; + if(nfc_worker->callback) { + nfc_worker->callback(nfc_worker->context); + } + } + FURI_LOG_W(NFC_WORKER_TAG, "Can't find reader"); + osThreadYield(); } } diff --git a/applications/nfc/scenes/nfc_scene_config.h b/applications/nfc/scenes/nfc_scene_config.h index 149b4d7f..97072ead 100755 --- a/applications/nfc/scenes/nfc_scene_config.h +++ b/applications/nfc/scenes/nfc_scene_config.h @@ -26,3 +26,4 @@ ADD_SCENE(nfc, run_emv_app_confirm, RunEmvAppConfirm) ADD_SCENE(nfc, read_emv_data, ReadEmvData) ADD_SCENE(nfc, read_emv_data_success, ReadEmvDataSuccess) ADD_SCENE(nfc, emulate_apdu_sequence, EmulateApduSequence) +ADD_SCENE(nfc, restore_original, RestoreOriginal) diff --git a/applications/nfc/scenes/nfc_scene_emulate_mifare_ul.c b/applications/nfc/scenes/nfc_scene_emulate_mifare_ul.c index 7286b7ac..d1d52bef 100755 --- a/applications/nfc/scenes/nfc_scene_emulate_mifare_ul.c +++ b/applications/nfc/scenes/nfc_scene_emulate_mifare_ul.c @@ -1,38 +1,33 @@ #include "../nfc_i.h" +#define NFC_MF_UL_DATA_NOT_CHANGED (0UL) +#define NFC_MF_UL_DATA_CHANGED (1UL) + +void nfc_emulate_mifare_ul_worker_callback(void* context) { + Nfc* nfc = (Nfc*)context; + scene_manager_set_scene_state( + nfc->scene_manager, NfcSceneEmulateMifareUl, NFC_MF_UL_DATA_CHANGED); +} + const void nfc_scene_emulate_mifare_ul_on_enter(void* context) { Nfc* nfc = (Nfc*)context; // Setup view Popup* popup = nfc->popup; - NfcDeviceCommomData* data = &nfc->dev.dev_data.nfc_data; - if(strcmp(nfc->dev.dev_name, "")) { nfc_text_store_set(nfc, "%s", nfc->dev.dev_name); - } else if(data->uid_len == 4) { - nfc_text_store_set( - nfc, "%02X %02X %02X %02X", data->uid[0], data->uid[1], data->uid[2], data->uid[3]); - } else if(data->uid_len == 7) { - nfc_text_store_set( - nfc, - "%02X %02X %02X %02X\n%02X %02X %02X", - data->uid[0], - data->uid[1], - data->uid[2], - data->uid[3], - data->uid[4], - data->uid[5], - data->uid[6]); } - popup_set_icon(popup, 0, 3, &I_RFIDDolphinSend_97x61); - popup_set_header(popup, "Emulating Mf Ul", 56, 31, AlignLeft, AlignTop); - popup_set_text(popup, nfc->text_store, 56, 43, AlignLeft, AlignTop); + popup_set_header(popup, "Emulating\nMf Ultralight", 56, 31, AlignLeft, AlignTop); // Setup and start worker - view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); - nfc_worker_start(nfc->worker, NfcWorkerStateEmulateMifareUl, &nfc->dev.dev_data, NULL, nfc); + nfc_worker_start( + nfc->worker, + NfcWorkerStateEmulateMifareUl, + &nfc->dev.dev_data, + nfc_emulate_mifare_ul_worker_callback, + nfc); } const bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent event) { @@ -42,6 +37,17 @@ const bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent if(event.type == SceneManagerEventTypeTick) { notification_message(nfc->notifications, &sequence_blink_blue_10); consumed = true; + } else if(event.type == SceneManagerEventTypeBack) { + // Stop worker + nfc_worker_stop(nfc->worker); + // Check if data changed and save in shadow file + if(scene_manager_get_scene_state(nfc->scene_manager, NfcSceneEmulateMifareUl) == + NFC_MF_UL_DATA_CHANGED) { + scene_manager_set_scene_state( + nfc->scene_manager, NfcSceneEmulateMifareUl, NFC_MF_UL_DATA_NOT_CHANGED); + nfc_device_save_shadow(&nfc->dev, nfc->dev.dev_name); + } + consumed = false; } return consumed; } @@ -49,9 +55,6 @@ const bool nfc_scene_emulate_mifare_ul_on_event(void* context, SceneManagerEvent const void nfc_scene_emulate_mifare_ul_on_exit(void* context) { Nfc* nfc = (Nfc*)context; - // Stop worker - nfc_worker_stop(nfc->worker); - // Clear view Popup* popup = nfc->popup; popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); diff --git a/applications/nfc/scenes/nfc_scene_mifare_ul_menu.c b/applications/nfc/scenes/nfc_scene_mifare_ul_menu.c index 396c393b..70716618 100755 --- a/applications/nfc/scenes/nfc_scene_mifare_ul_menu.c +++ b/applications/nfc/scenes/nfc_scene_mifare_ul_menu.c @@ -38,7 +38,7 @@ const bool nfc_scene_mifare_ul_menu_on_event(void* context, SceneManagerEvent ev } else if(event.event == SubmenuIndexEmulate) { scene_manager_set_scene_state( nfc->scene_manager, NfcSceneMifareUlMenu, SubmenuIndexEmulate); - scene_manager_next_scene(nfc->scene_manager, NfcSceneNotImplemented); + scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateMifareUl); return true; } } else if(event.type == SceneManagerEventTypeBack) { diff --git a/applications/nfc/scenes/nfc_scene_restore_original.c b/applications/nfc/scenes/nfc_scene_restore_original.c new file mode 100644 index 00000000..3229d023 --- /dev/null +++ b/applications/nfc/scenes/nfc_scene_restore_original.c @@ -0,0 +1,48 @@ +#include "../nfc_i.h" + +#define SCENE_RESTORE_ORIGINAL_CUSTOM_EVENT (0UL) + +void nfc_scene_restore_original_popup_callback(void* context) { + Nfc* nfc = (Nfc*)context; + view_dispatcher_send_custom_event(nfc->view_dispatcher, SCENE_RESTORE_ORIGINAL_CUSTOM_EVENT); +} + +const void nfc_scene_restore_original_on_enter(void* context) { + Nfc* nfc = (Nfc*)context; + + // Setup view + Popup* popup = nfc->popup; + popup_set_icon(popup, 32, 5, &I_DolphinNice_96x59); + popup_set_header(popup, "Original file\nrestored", 13, 22, AlignLeft, AlignBottom); + popup_set_timeout(popup, 1500); + popup_set_context(popup, nfc); + popup_set_callback(popup, nfc_scene_restore_original_popup_callback); + popup_enable_timeout(popup); + view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewPopup); +} + +const bool nfc_scene_restore_original_on_event(void* context, SceneManagerEvent event) { + Nfc* nfc = (Nfc*)context; + bool consumed = false; + + if(event.type == SceneManagerEventTypeCustom) { + if(event.event == SCENE_RESTORE_ORIGINAL_CUSTOM_EVENT) { + consumed = scene_manager_previous_scene(nfc->scene_manager); + } + } + return consumed; +} + +const void nfc_scene_restore_original_on_exit(void* context) { + Nfc* nfc = (Nfc*)context; + + // Clear view + Popup* popup = nfc->popup; + popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignBottom); + popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignTop); + popup_set_icon(popup, 0, 0, NULL); + popup_set_callback(popup, NULL); + popup_set_context(popup, NULL); + popup_set_timeout(popup, 0); + popup_disable_timeout(popup); +} diff --git a/applications/nfc/scenes/nfc_scene_saved_menu.c b/applications/nfc/scenes/nfc_scene_saved_menu.c index 24d03fbc..cd682783 100755 --- a/applications/nfc/scenes/nfc_scene_saved_menu.c +++ b/applications/nfc/scenes/nfc_scene_saved_menu.c @@ -5,6 +5,7 @@ enum SubmenuIndex { SubmenuIndexEdit, SubmenuIndexDelete, SubmenuIndexInfo, + SubmenuIndexRestoreOriginal, }; void nfc_scene_saved_menu_submenu_callback(void* context, uint32_t index) { @@ -29,36 +30,52 @@ const void nfc_scene_saved_menu_on_enter(void* context) { submenu, "Info", SubmenuIndexInfo, nfc_scene_saved_menu_submenu_callback, nfc); submenu_set_selected_item( nfc->submenu, scene_manager_get_scene_state(nfc->scene_manager, NfcSceneSavedMenu)); + if(nfc->dev.shadow_file_exist) { + submenu_add_item( + submenu, + "Restore original", + SubmenuIndexRestoreOriginal, + nfc_scene_saved_menu_submenu_callback, + nfc); + } view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewMenu); } const bool nfc_scene_saved_menu_on_event(void* context, SceneManagerEvent event) { Nfc* nfc = (Nfc*)context; + bool consumed = false; if(event.type == SceneManagerEventTypeCustom) { + scene_manager_set_scene_state(nfc->scene_manager, NfcSceneSavedMenu, event.event); if(event.event == SubmenuIndexEmulate) { - scene_manager_set_scene_state( - nfc->scene_manager, NfcSceneSavedMenu, SubmenuIndexEmulate); - scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateUid); - return true; + if(nfc->dev.format == NfcDeviceSaveFormatMifareUl) { + scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateMifareUl); + } else { + scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateUid); + } + consumed = true; } else if(event.event == SubmenuIndexEdit) { - scene_manager_set_scene_state(nfc->scene_manager, NfcSceneSavedMenu, SubmenuIndexEdit); scene_manager_next_scene(nfc->scene_manager, NfcSceneSetUid); - return true; + consumed = true; } else if(event.event == SubmenuIndexDelete) { - scene_manager_set_scene_state( - nfc->scene_manager, NfcSceneSavedMenu, SubmenuIndexDelete); scene_manager_next_scene(nfc->scene_manager, NfcSceneDelete); - return true; + consumed = true; } else if(event.event == SubmenuIndexInfo) { - scene_manager_set_scene_state(nfc->scene_manager, NfcSceneSavedMenu, SubmenuIndexInfo); scene_manager_next_scene(nfc->scene_manager, NfcSceneDeviceInfo); - return true; + consumed = true; + } else if(event.event == SubmenuIndexRestoreOriginal) { + if(!nfc_device_restore(&nfc->dev)) { + scene_manager_search_and_switch_to_previous_scene( + nfc->scene_manager, NfcSceneStart); + } else { + scene_manager_next_scene(nfc->scene_manager, NfcSceneRestoreOriginal); + } + consumed = true; } } - return false; + return consumed; } const void nfc_scene_saved_menu_on_exit(void* context) { diff --git a/firmware/targets/f6/furi-hal/furi-hal-nfc.c b/firmware/targets/f6/furi-hal/furi-hal-nfc.c index d64a344e..d92e2cad 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-nfc.c +++ b/firmware/targets/f6/furi-hal/furi-hal-nfc.c @@ -86,9 +86,8 @@ bool furi_hal_nfc_detect(rfalNfcDevice **dev_list, uint8_t* dev_cnt, uint32_t ti return true; } -bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t sak, uint32_t timeout) { +bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t sak, bool activate_after_sak, uint32_t timeout) { rfalNfcState state = rfalNfcGetState(); - if(state == RFAL_NFC_STATE_NOTINIT) { rfalNfcInitialize(); } else if(state >= RFAL_NFC_STATE_ACTIVATED) { @@ -107,6 +106,7 @@ bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t s .maxBR = RFAL_BR_KEEP, .GBLen = RFAL_NFCDEP_GB_MAX_LEN, .notifyCb = NULL, + .activate_after_sak = activate_after_sak, }; params.lmConfigPA.nfcidLen = uid_len; memcpy(params.lmConfigPA.nfcid, uid, uid_len); @@ -119,7 +119,6 @@ bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t s while(state != RFAL_NFC_STATE_ACTIVATED) { rfalNfcWorker(); state = rfalNfcGetState(); - FURI_LOG_D("HAL NFC", "Current state %d", state); if(DWT->CYCCNT - start > timeout * clocks_in_ms) { rfalNfcDeactivate(true); return false; @@ -129,6 +128,11 @@ bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t s return true; } +bool furi_hal_nfc_get_first_frame(uint8_t** rx_buff, uint16_t** rx_len) { + ReturnCode ret = rfalNfcDataExchangeStart(NULL, 0, rx_buff, rx_len, 0); + return ret == ERR_NONE; +} + ReturnCode furi_hal_nfc_data_exchange(uint8_t* tx_buff, uint16_t tx_len, uint8_t** rx_buff, uint16_t** rx_len, bool deactivate) { furi_assert(rx_buff); furi_assert(rx_len); @@ -144,7 +148,6 @@ ReturnCode furi_hal_nfc_data_exchange(uint8_t* tx_buff, uint16_t tx_len, uint8_t rfalNfcWorker(); state = rfalNfcGetState(); ret = rfalNfcDataExchangeGetStatus(); - FURI_LOG_D("HAL NFC", "Nfc st: %d Data st: %d", state, ret); if(ret > ERR_SLEEP_REQ) { return ret; } diff --git a/firmware/targets/furi-hal-include/furi-hal-nfc.h b/firmware/targets/furi-hal-include/furi-hal-nfc.h index aaed2924..1ef9063d 100644 --- a/firmware/targets/furi-hal-include/furi-hal-nfc.h +++ b/firmware/targets/furi-hal-include/furi-hal-nfc.h @@ -49,7 +49,12 @@ bool furi_hal_nfc_detect(rfalNfcDevice** dev_list, uint8_t* dev_cnt, uint32_t ti /** * NFC listen */ -bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t sak, uint32_t timeout); +bool furi_hal_nfc_listen(uint8_t* uid, uint8_t uid_len, uint8_t* atqa, uint8_t sak, bool activate_after_sak, uint32_t timeout); + +/** + * Get first command from reader after activation in emulation mode + */ +bool furi_hal_nfc_get_first_frame(uint8_t** rx_buff, uint16_t** rx_len); /** * NFC data exchange diff --git a/lib/ST25RFAL002/include/rfal_nfc.h b/lib/ST25RFAL002/include/rfal_nfc.h index d8086d20..0500659b 100755 --- a/lib/ST25RFAL002/include/rfal_nfc.h +++ b/lib/ST25RFAL002/include/rfal_nfc.h @@ -213,6 +213,8 @@ typedef struct{ bool wakeupEnabled; /*!< Enable Wake-Up mode before polling */ bool wakeupConfigDefault; /*!< Wake-Up mode default configuration */ rfalWakeUpConfig wakeupConfig; /*!< Wake-Up mode configuration */ + + bool activate_after_sak; // Set device to Active mode after SAK responce }rfalNfcDiscoverParam; diff --git a/lib/ST25RFAL002/source/rfal_nfc.c b/lib/ST25RFAL002/source/rfal_nfc.c index a12cdcc9..96d35889 100755 --- a/lib/ST25RFAL002/source/rfal_nfc.c +++ b/lib/ST25RFAL002/source/rfal_nfc.c @@ -575,6 +575,7 @@ ReturnCode rfalNfcDataExchangeStart( uint8_t *txData, uint16_t txDataLen, uint8_ *rvdLen = (uint16_t*)&gNfcDev.rxLen; *rxData = (uint8_t*)( (gNfcDev.activeDev->rfInterface == RFAL_NFC_INTERFACE_ISODEP) ? gNfcDev.rxBuf.isoDepBuf.apdu : ((gNfcDev.activeDev->rfInterface == RFAL_NFC_INTERFACE_NFCDEP) ? gNfcDev.rxBuf.nfcDepBuf.pdu : gNfcDev.rxBuf.rfBuf)); + gNfcDev.state = RFAL_NFC_STATE_DATAEXCHANGE_DONE; return ERR_NONE; } @@ -1579,6 +1580,7 @@ static ReturnCode rfalNfcListenActivation( void ) lmSt = rfalListenGetState( &isDataRcvd, &bitRate ); + switch(lmSt) { @@ -1595,6 +1597,12 @@ static ReturnCode rfalNfcListenActivation( void ) /* Set the Listen Mode in Sleep state */ EXIT_ON_ERR( ret, rfalListenSleepStart( RFAL_LM_STATE_SLEEP_A, gNfcDev.rxBuf.rfBuf, sizeof(gNfcDev.rxBuf.rfBuf), &gNfcDev.rxLen ) ); } + + else if(gNfcDev.disc.activate_after_sak) { + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_NFCA; + rfalListenSetState(RFAL_LM_STATE_ACTIVE_A); + return ERR_NONE; + } #if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_LISTEN /* Check if received data is a valid RATS */ diff --git a/lib/nfc_protocols/mifare_ultralight.c b/lib/nfc_protocols/mifare_ultralight.c index a96c2889..39a93a00 100644 --- a/lib/nfc_protocols/mifare_ultralight.c +++ b/lib/nfc_protocols/mifare_ultralight.c @@ -137,3 +137,94 @@ uint16_t mf_ul_prepare_write(uint8_t* dest, uint16_t page_addr, uint32_t data) { dest[5] = (uint8_t) data; return 6; } + +void mf_ul_prepare_emulation(MifareUlDevice* mf_ul_emulate, MifareUlData* data) { + mf_ul_emulate->data = *data; + mf_ul_emulate->data_changed = false; + if(data->version.storage_size == 0) { + mf_ul_emulate->type = MfUltralightTypeUnknown; + mf_ul_emulate->support_fast_read = false; + } else if(data->version.storage_size == 0x0B) { + mf_ul_emulate->type = MfUltralightTypeUL11; + mf_ul_emulate->support_fast_read = true; + } else if(data->version.storage_size == 0x0E) { + mf_ul_emulate->type = MfUltralightTypeUL21; + mf_ul_emulate->support_fast_read = true; + } +} + +uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uint8_t* buff_tx, MifareUlDevice* mf_ul_emulate) { + uint8_t cmd = buff_rx[0]; + uint16_t page_num = mf_ul_emulate->data.data_size / 4; + uint16_t tx_len = 0; + + if(cmd == MF_UL_GET_VERSION_CMD) { + if(mf_ul_emulate->type != MfUltralightTypeUnknown) { + tx_len = sizeof(mf_ul_emulate->data.version); + memcpy(buff_tx, &mf_ul_emulate->data.version, tx_len); + } + } else if(cmd == MF_UL_READ_CMD) { + uint8_t start_page = buff_rx[1]; + if(start_page < page_num) { + tx_len = 16; + if(start_page + 4 > page_num) { + // Handle roll-over mechanism + uint8_t end_pages_num = page_num - start_page; + memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], end_pages_num * 4); + memcpy(&buff_tx[end_pages_num * 4], mf_ul_emulate->data.data, (4 - end_pages_num) * 4); + } else { + memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], tx_len); + } + } + } else if(cmd == MF_UL_FAST_READ_CMD) { + if(mf_ul_emulate->support_fast_read) { + uint8_t start_page = buff_rx[1]; + uint8_t end_page = buff_rx[2]; + if((start_page < page_num) && + (end_page < page_num) && (start_page < end_page)) { + tx_len = (end_page - start_page) * 4; + memcpy(buff_tx, &mf_ul_emulate->data.data[start_page * 4], tx_len); + } + } + } else if(cmd == MF_UL_WRITE) { + uint8_t write_page = buff_rx[1]; + if((write_page > 1) && (write_page < page_num - 2)) { + memcpy(&mf_ul_emulate->data.data[write_page * 4], &buff_rx[2], 4); + mf_ul_emulate->data_changed = true; + // TODO make 4-bit ACK + buff_tx[0] = 0x0A; + tx_len = 1; + } + } else if(cmd == MF_UL_READ_CNT) { + uint8_t cnt_num = buff_rx[1]; + if(cnt_num < 3) { + buff_tx[0] = mf_ul_emulate->data.counter[cnt_num] >> 16; + buff_tx[1] = mf_ul_emulate->data.counter[cnt_num] >> 8; + buff_tx[2] = mf_ul_emulate->data.counter[cnt_num]; + tx_len = 3; + } + } else if(cmd == MF_UL_INC_CNT) { + uint8_t cnt_num = buff_rx[1]; + uint32_t inc = (buff_rx[2] | (buff_rx[3] << 8) | (buff_rx[4] << 16)); + if((cnt_num < 3) && (mf_ul_emulate->data.counter[cnt_num] + inc < 0x00FFFFFF)) { + mf_ul_emulate->data.counter[cnt_num] += inc; + mf_ul_emulate->data_changed = true; + // TODO make 4-bit ACK + buff_tx[0] = 0x0A; + tx_len = 1; + } + } else if(cmd == MF_UL_READ_SIG) { + // Check 2nd byte = 0x00 - RFU + if(buff_rx[1] == 0x00) { + tx_len = sizeof(mf_ul_emulate->data.signature); + memcpy(buff_tx, mf_ul_emulate->data.signature, tx_len); + } + } else if(cmd == MF_UL_CHECK_TEARING) { + uint8_t cnt_num = buff_rx[1]; + if(cnt_num < 3) { + buff_tx[0] = mf_ul_emulate->data.tearing[cnt_num]; + tx_len = 1; + } + } + return tx_len; +} diff --git a/lib/nfc_protocols/mifare_ultralight.h b/lib/nfc_protocols/mifare_ultralight.h index 83673a7e..7522f334 100644 --- a/lib/nfc_protocols/mifare_ultralight.h +++ b/lib/nfc_protocols/mifare_ultralight.h @@ -65,6 +65,7 @@ typedef struct { uint8_t pages_to_read; uint8_t pages_readed; bool support_fast_read; + bool data_changed; MifareUlData data; } MifareUlDevice; @@ -93,3 +94,5 @@ void mf_ul_parse_fast_read_response(uint8_t* buff, uint8_t start_page, uint8_t e uint16_t mf_ul_prepare_write(uint8_t* dest, uint16_t page_addr, uint32_t data); +void mf_ul_prepare_emulation(MifareUlDevice* mf_ul_emulate, MifareUlData* data); +uint16_t mf_ul_prepare_emulation_response(uint8_t* buff_rx, uint16_t len_rx, uint8_t* buff_tx, MifareUlDevice* mf_ul_emulate); From 1f192c4a48bbf874a8707f38045fe8abb5a0f729 Mon Sep 17 00:00:00 2001 From: its your bedtime <23366927+itsyourbedtime@users.noreply.github.com> Date: Tue, 17 Aug 2021 00:53:35 +0300 Subject: [PATCH 08/18] [FL-1675] Dolphin scene and included apps removed #638 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- applications/applications.c | 16 - applications/dolphin/dolphin.c | 6 - applications/dolphin/games/food.c | 321 ----------- applications/dolphin/passport/passport.c | 147 ----- applications/dolphin/scenes/assets/emotes.h | 12 - applications/dolphin/scenes/assets/items.c | 233 -------- applications/dolphin/scenes/assets/items.h | 14 - applications/dolphin/scenes/assets/items_i.h | 8 - applications/dolphin/scenes/assets/meta.h | 276 --------- applications/dolphin/scenes/scene.c | 151 ----- applications/dolphin/scenes/scene.h | 138 ----- applications/dolphin/scenes/scene_controls.c | 60 -- .../dolphin/scenes/scene_dolphin_state.c | 47 -- applications/dolphin/scenes/scene_gfx.c | 121 ---- assets/compiled/assets_icons.c | 523 ------------------ assets/compiled/assets_icons.h | 127 ----- .../Animations/FX_Sitting_40x27/frame_0.png | Bin 369 -> 0 bytes .../Animations/FX_Sitting_40x27/frame_1.png | Bin 368 -> 0 bytes .../Animations/FX_Sitting_40x27/frame_rate | 1 - .../icons/Animations/MDIB_32x32/frame_0.png | Bin 359 -> 0 bytes .../icons/Animations/MDIB_32x32/frame_1.png | Bin 350 -> 0 bytes .../icons/Animations/MDIB_32x32/frame_2.png | Bin 350 -> 0 bytes .../icons/Animations/MDIB_32x32/frame_3.png | Bin 356 -> 0 bytes assets/icons/Animations/MDIB_32x32/frame_rate | 1 - assets/icons/Animations/MDI_32x32/frame_0.png | Bin 382 -> 0 bytes assets/icons/Animations/MDI_32x32/frame_1.png | Bin 383 -> 0 bytes assets/icons/Animations/MDI_32x32/frame_2.png | Bin 383 -> 0 bytes assets/icons/Animations/MDI_32x32/frame_3.png | Bin 381 -> 0 bytes assets/icons/Animations/MDI_32x32/frame_rate | 1 - .../icons/Animations/MDWLB_32x32/frame_1.png | Bin 356 -> 0 bytes .../icons/Animations/MDWLB_32x32/frame_2.png | Bin 365 -> 0 bytes .../icons/Animations/MDWLB_32x32/frame_3.png | Bin 363 -> 0 bytes .../icons/Animations/MDWLB_32x32/frame_rate | 1 - .../icons/Animations/MDWL_32x32/frame_1.png | Bin 384 -> 0 bytes .../icons/Animations/MDWL_32x32/frame_2.png | Bin 390 -> 0 bytes .../icons/Animations/MDWL_32x32/frame_3.png | Bin 382 -> 0 bytes assets/icons/Animations/MDWL_32x32/frame_rate | 1 - .../icons/Animations/MDWRB_32x32/frame_1.png | Bin 357 -> 0 bytes .../icons/Animations/MDWRB_32x32/frame_2.png | Bin 363 -> 0 bytes .../icons/Animations/MDWRB_32x32/frame_3.png | Bin 366 -> 0 bytes .../icons/Animations/MDWRB_32x32/frame_rate | 1 - .../icons/Animations/MDWR_32x32/frame_1.png | Bin 380 -> 0 bytes .../icons/Animations/MDWR_32x32/frame_2.png | Bin 389 -> 0 bytes .../icons/Animations/MDWR_32x32/frame_3.png | Bin 383 -> 0 bytes assets/icons/Animations/MDWR_32x32/frame_rate | 1 - assets/icons/Dolphin/BigBurger_24x24.png | Bin 356 -> 0 bytes assets/icons/Dolphin/BigGames_24x24.png | Bin 338 -> 0 bytes assets/icons/Dolphin/BigProfile_24x24.png | Bin 340 -> 0 bytes assets/icons/Dolphin/FX_Bang_32x6.png | Bin 325 -> 0 bytes assets/icons/Dolphin/FX_SittingB_40x27.png | Bin 346 -> 0 bytes .../icons/FoodMinigame/active_plate_48x18.png | Bin 1057 -> 0 bytes assets/icons/FoodMinigame/blackfish_25x17.png | Bin 1025 -> 0 bytes assets/icons/FoodMinigame/blacklid_36x27.png | Bin 1058 -> 0 bytes assets/icons/FoodMinigame/blackshit_25x17.png | Bin 304 -> 0 bytes .../FoodMinigame/blackskeleton_25x17.png | Bin 302 -> 0 bytes assets/icons/FoodMinigame/fish_25x17.png | Bin 1059 -> 0 bytes assets/icons/FoodMinigame/letterA_10x10.png | Bin 124 -> 0 bytes assets/icons/FoodMinigame/letterB_10x10.png | Bin 118 -> 0 bytes assets/icons/FoodMinigame/letterC_10x10.png | Bin 131 -> 0 bytes assets/icons/FoodMinigame/lid_36x27.png | Bin 1107 -> 0 bytes assets/icons/FoodMinigame/plate_42x19.png | Bin 1049 -> 0 bytes assets/icons/FoodMinigame/shit_25x17.png | Bin 318 -> 0 bytes assets/icons/FoodMinigame/skeleton_25x17.png | Bin 306 -> 0 bytes assets/icons/Passport/passport_bad1_43x45.png | Bin 1121 -> 0 bytes assets/icons/Passport/passport_bad2_43x45.png | Bin 1152 -> 0 bytes assets/icons/Passport/passport_bad3_43x45.png | Bin 1165 -> 0 bytes .../icons/Passport/passport_happy1_43x45.png | Bin 1163 -> 0 bytes .../icons/Passport/passport_happy2_43x45.png | Bin 1197 -> 0 bytes .../icons/Passport/passport_happy3_43x45.png | Bin 1210 -> 0 bytes .../icons/Passport/passport_okay1_43x45.png | Bin 1105 -> 0 bytes .../icons/Passport/passport_okay2_43x45.png | Bin 1140 -> 0 bytes .../icons/Passport/passport_okay3_43x45.png | Bin 1181 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_0.png | Bin 1502 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_1.png | Bin 1502 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_2.png | Bin 1505 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_3.png | Bin 1506 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_4.png | Bin 1506 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_5.png | Bin 1504 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_6.png | Bin 1505 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_7.png | Bin 1506 -> 0 bytes .../Scenes/Console_74x67/Console_74x67_8.png | Bin 1500 -> 0 bytes assets/icons/Scenes/Food/food10_61x98.png | Bin 1420 -> 0 bytes assets/icons/Scenes/Food/food11_61x98.png | Bin 1400 -> 0 bytes assets/icons/Scenes/Food/food12_61x98.png | Bin 1412 -> 0 bytes assets/icons/Scenes/Food/food1_61x98.png | Bin 1402 -> 0 bytes assets/icons/Scenes/Food/food2_61x98.png | Bin 1414 -> 0 bytes assets/icons/Scenes/Food/food3_61x98.png | Bin 1389 -> 0 bytes assets/icons/Scenes/Food/food4_61x98.png | Bin 1377 -> 0 bytes assets/icons/Scenes/Food/food5_61x98.png | Bin 1370 -> 0 bytes assets/icons/Scenes/Food/food6_61x98.png | Bin 1369 -> 0 bytes assets/icons/Scenes/Food/food7_61x98.png | Bin 1391 -> 0 bytes assets/icons/Scenes/Food/food8_61x98.png | Bin 1390 -> 0 bytes assets/icons/Scenes/Food/food9_61x98.png | Bin 1412 -> 0 bytes .../Scenes/Swimming/black_down1_73x61.png | Bin 1134 -> 0 bytes .../Scenes/Swimming/black_down2_73x61.png | Bin 1133 -> 0 bytes .../Scenes/Swimming/black_downleft1_73x61.png | Bin 1136 -> 0 bytes .../Scenes/Swimming/black_downleft2_73x61.png | Bin 1149 -> 0 bytes .../Scenes/Swimming/black_downleft3_73x61.png | Bin 1127 -> 0 bytes .../Swimming/black_downright1_73x61.png | Bin 1143 -> 0 bytes .../Swimming/black_downright2_73x61.png | Bin 1147 -> 0 bytes .../Swimming/black_downright3_73x61.png | Bin 1127 -> 0 bytes .../Scenes/Swimming/black_downup1_73x61.png | Bin 1134 -> 0 bytes .../Scenes/Swimming/black_downup2_73x61.png | Bin 1104 -> 0 bytes .../Scenes/Swimming/black_downup3_73x61.png | Bin 1107 -> 0 bytes .../Scenes/Swimming/black_left1_73x61.png | Bin 1114 -> 0 bytes .../Scenes/Swimming/black_left2_73x61.png | Bin 1115 -> 0 bytes .../Scenes/Swimming/black_left3_73x61.png | Bin 1123 -> 0 bytes .../Scenes/Swimming/black_leftdown1_73x61.png | Bin 1135 -> 0 bytes .../Scenes/Swimming/black_leftdown2_73x61.png | Bin 1126 -> 0 bytes .../Scenes/Swimming/black_leftup1_73x61.png | Bin 1137 -> 0 bytes .../Scenes/Swimming/black_leftup2_73x61.png | Bin 1127 -> 0 bytes .../Scenes/Swimming/black_right1_73x61.png | Bin 1111 -> 0 bytes .../Scenes/Swimming/black_right2_73x61.png | Bin 1121 -> 0 bytes .../Scenes/Swimming/black_right3_73x61.png | Bin 1123 -> 0 bytes .../Swimming/black_rightdown1_73x61.png | Bin 1132 -> 0 bytes .../Swimming/black_rightdown2_73x61.png | Bin 1133 -> 0 bytes .../Swimming/black_rightleft1_73x61.png | Bin 1110 -> 0 bytes .../Swimming/black_rightleft2_73x61.png | Bin 1114 -> 0 bytes .../Scenes/Swimming/black_rightup1_73x61.png | Bin 1143 -> 0 bytes .../Scenes/Swimming/black_rightup2_73x61.png | Bin 1129 -> 0 bytes .../icons/Scenes/Swimming/black_up1_73x61.png | Bin 1122 -> 0 bytes .../icons/Scenes/Swimming/black_up2_73x61.png | Bin 1125 -> 0 bytes .../Scenes/Swimming/black_updown1_73x61.png | Bin 1123 -> 0 bytes .../Scenes/Swimming/black_updown2_73x61.png | Bin 1097 -> 0 bytes .../Scenes/Swimming/black_updown3_73x61.png | Bin 1113 -> 0 bytes .../Scenes/Swimming/black_upleft1_73x61.png | Bin 1133 -> 0 bytes .../Scenes/Swimming/black_upleft2_73x61.png | Bin 1120 -> 0 bytes .../Scenes/Swimming/black_upright1_73x61.png | Bin 1139 -> 0 bytes .../Scenes/Swimming/black_upright2_73x61.png | Bin 1121 -> 0 bytes assets/icons/Scenes/Swimming/down1_73x61.png | Bin 1177 -> 0 bytes assets/icons/Scenes/Swimming/down2_73x61.png | Bin 1171 -> 0 bytes .../icons/Scenes/Swimming/downleft1_73x61.png | Bin 406 -> 0 bytes .../icons/Scenes/Swimming/downleft2_73x61.png | Bin 1182 -> 0 bytes .../icons/Scenes/Swimming/downleft3_73x61.png | Bin 1169 -> 0 bytes .../Scenes/Swimming/downright1_73x61.png | Bin 1185 -> 0 bytes .../Scenes/Swimming/downright2_73x61.png | Bin 1185 -> 0 bytes .../Scenes/Swimming/downright3_73x61.png | Bin 1166 -> 0 bytes .../icons/Scenes/Swimming/downup1_73x61.png | Bin 1157 -> 0 bytes .../icons/Scenes/Swimming/downup2_73x61.png | Bin 1146 -> 0 bytes .../icons/Scenes/Swimming/downup3_73x61.png | Bin 1146 -> 0 bytes assets/icons/Scenes/Swimming/left1_73x61.png | Bin 1153 -> 0 bytes assets/icons/Scenes/Swimming/left2_73x61.png | Bin 1156 -> 0 bytes assets/icons/Scenes/Swimming/left3_73x61.png | Bin 1154 -> 0 bytes .../icons/Scenes/Swimming/leftdown1_73x61.png | Bin 1173 -> 0 bytes .../icons/Scenes/Swimming/leftdown2_73x61.png | Bin 1183 -> 0 bytes .../icons/Scenes/Swimming/leftup1_73x61.png | Bin 1186 -> 0 bytes .../icons/Scenes/Swimming/leftup2_73x61.png | Bin 1168 -> 0 bytes assets/icons/Scenes/Swimming/right1_73x61.png | Bin 1150 -> 0 bytes assets/icons/Scenes/Swimming/right2_73x61.png | Bin 1161 -> 0 bytes assets/icons/Scenes/Swimming/right3_73x61.png | Bin 1159 -> 0 bytes .../Scenes/Swimming/rightdown1_73x61.png | Bin 1164 -> 0 bytes .../Scenes/Swimming/rightdown2_73x61.png | Bin 1185 -> 0 bytes .../Scenes/Swimming/rightleft1_73x61.png | Bin 1142 -> 0 bytes .../Scenes/Swimming/rightleft2_73x61.png | Bin 1139 -> 0 bytes .../icons/Scenes/Swimming/rightup1_73x61.png | Bin 1184 -> 0 bytes .../icons/Scenes/Swimming/rightup2_73x61.png | Bin 1174 -> 0 bytes assets/icons/Scenes/Swimming/up1_73x61.png | Bin 1179 -> 0 bytes assets/icons/Scenes/Swimming/up2_73x61.png | Bin 1169 -> 0 bytes .../icons/Scenes/Swimming/updown1_73x61.png | Bin 1157 -> 0 bytes .../icons/Scenes/Swimming/updown2_73x61.png | Bin 1136 -> 0 bytes .../icons/Scenes/Swimming/updown3_73x61.png | Bin 1151 -> 0 bytes .../icons/Scenes/Swimming/upleft1_73x61.png | Bin 1187 -> 0 bytes .../icons/Scenes/Swimming/upleft2_73x61.png | Bin 1163 -> 0 bytes .../icons/Scenes/Swimming/upright1_73x61.png | Bin 1182 -> 0 bytes .../icons/Scenes/Swimming/upright2_73x61.png | Bin 1159 -> 0 bytes 165 files changed, 2207 deletions(-) delete mode 100644 applications/dolphin/games/food.c delete mode 100644 applications/dolphin/passport/passport.c delete mode 100644 applications/dolphin/scenes/assets/emotes.h delete mode 100644 applications/dolphin/scenes/assets/items.c delete mode 100644 applications/dolphin/scenes/assets/items.h delete mode 100644 applications/dolphin/scenes/assets/items_i.h delete mode 100644 applications/dolphin/scenes/assets/meta.h delete mode 100644 applications/dolphin/scenes/scene.c delete mode 100644 applications/dolphin/scenes/scene.h delete mode 100644 applications/dolphin/scenes/scene_controls.c delete mode 100644 applications/dolphin/scenes/scene_dolphin_state.c delete mode 100644 applications/dolphin/scenes/scene_gfx.c delete mode 100644 assets/icons/Animations/FX_Sitting_40x27/frame_0.png delete mode 100644 assets/icons/Animations/FX_Sitting_40x27/frame_1.png delete mode 100644 assets/icons/Animations/FX_Sitting_40x27/frame_rate delete mode 100644 assets/icons/Animations/MDIB_32x32/frame_0.png delete mode 100644 assets/icons/Animations/MDIB_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDIB_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDIB_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDIB_32x32/frame_rate delete mode 100644 assets/icons/Animations/MDI_32x32/frame_0.png delete mode 100644 assets/icons/Animations/MDI_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDI_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDI_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDI_32x32/frame_rate delete mode 100644 assets/icons/Animations/MDWLB_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDWLB_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDWLB_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDWLB_32x32/frame_rate delete mode 100644 assets/icons/Animations/MDWL_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDWL_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDWL_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDWL_32x32/frame_rate delete mode 100644 assets/icons/Animations/MDWRB_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDWRB_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDWRB_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDWRB_32x32/frame_rate delete mode 100644 assets/icons/Animations/MDWR_32x32/frame_1.png delete mode 100644 assets/icons/Animations/MDWR_32x32/frame_2.png delete mode 100644 assets/icons/Animations/MDWR_32x32/frame_3.png delete mode 100644 assets/icons/Animations/MDWR_32x32/frame_rate delete mode 100644 assets/icons/Dolphin/BigBurger_24x24.png delete mode 100644 assets/icons/Dolphin/BigGames_24x24.png delete mode 100644 assets/icons/Dolphin/BigProfile_24x24.png delete mode 100644 assets/icons/Dolphin/FX_Bang_32x6.png delete mode 100644 assets/icons/Dolphin/FX_SittingB_40x27.png delete mode 100644 assets/icons/FoodMinigame/active_plate_48x18.png delete mode 100644 assets/icons/FoodMinigame/blackfish_25x17.png delete mode 100644 assets/icons/FoodMinigame/blacklid_36x27.png delete mode 100644 assets/icons/FoodMinigame/blackshit_25x17.png delete mode 100644 assets/icons/FoodMinigame/blackskeleton_25x17.png delete mode 100644 assets/icons/FoodMinigame/fish_25x17.png delete mode 100644 assets/icons/FoodMinigame/letterA_10x10.png delete mode 100644 assets/icons/FoodMinigame/letterB_10x10.png delete mode 100644 assets/icons/FoodMinigame/letterC_10x10.png delete mode 100644 assets/icons/FoodMinigame/lid_36x27.png delete mode 100644 assets/icons/FoodMinigame/plate_42x19.png delete mode 100644 assets/icons/FoodMinigame/shit_25x17.png delete mode 100644 assets/icons/FoodMinigame/skeleton_25x17.png delete mode 100644 assets/icons/Passport/passport_bad1_43x45.png delete mode 100644 assets/icons/Passport/passport_bad2_43x45.png delete mode 100644 assets/icons/Passport/passport_bad3_43x45.png delete mode 100644 assets/icons/Passport/passport_happy1_43x45.png delete mode 100644 assets/icons/Passport/passport_happy2_43x45.png delete mode 100644 assets/icons/Passport/passport_happy3_43x45.png delete mode 100644 assets/icons/Passport/passport_okay1_43x45.png delete mode 100644 assets/icons/Passport/passport_okay2_43x45.png delete mode 100644 assets/icons/Passport/passport_okay3_43x45.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_0.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_1.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_2.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_3.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_4.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_5.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_6.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_7.png delete mode 100644 assets/icons/Scenes/Console_74x67/Console_74x67_8.png delete mode 100644 assets/icons/Scenes/Food/food10_61x98.png delete mode 100644 assets/icons/Scenes/Food/food11_61x98.png delete mode 100644 assets/icons/Scenes/Food/food12_61x98.png delete mode 100644 assets/icons/Scenes/Food/food1_61x98.png delete mode 100644 assets/icons/Scenes/Food/food2_61x98.png delete mode 100644 assets/icons/Scenes/Food/food3_61x98.png delete mode 100644 assets/icons/Scenes/Food/food4_61x98.png delete mode 100644 assets/icons/Scenes/Food/food5_61x98.png delete mode 100644 assets/icons/Scenes/Food/food6_61x98.png delete mode 100644 assets/icons/Scenes/Food/food7_61x98.png delete mode 100644 assets/icons/Scenes/Food/food8_61x98.png delete mode 100644 assets/icons/Scenes/Food/food9_61x98.png delete mode 100644 assets/icons/Scenes/Swimming/black_down1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_down2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downleft3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downright1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downright2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downright3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_downup3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_left1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_left2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_left3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_leftdown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_leftdown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_leftup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_leftup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_right1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_right2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_right3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightdown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightdown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_rightup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_up1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_up2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_updown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_updown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_updown3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_upleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_upleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_upright1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/black_upright2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/down1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/down2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downleft3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downright1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downright2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downright3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/downup3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/left1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/left2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/left3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/leftdown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/leftdown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/leftup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/leftup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/right1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/right2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/right3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightdown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightdown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightup1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/rightup2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/up1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/up2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/updown1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/updown2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/updown3_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/upleft1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/upleft2_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/upright1_73x61.png delete mode 100644 assets/icons/Scenes/Swimming/upright2_73x61.png diff --git a/applications/applications.c b/applications/applications.c index a36ac486..786b8f35 100644 --- a/applications/applications.c +++ b/applications/applications.c @@ -28,9 +28,6 @@ extern int32_t keypad_test_app(void* p); extern int32_t lfrfid_app(void* p); extern int32_t lfrfid_debug_app(void* p); extern int32_t nfc_app(void* p); -extern int32_t passport_app(void* p); -extern int32_t food_minigame_app(void* p); -extern int32_t scene_app(void* p); extern int32_t scened_app(void* p); extern int32_t storage_test_app(void* p); extern int32_t subghz_app(void* p); @@ -248,19 +245,6 @@ const FlipperApplication FLIPPER_ARCHIVE = {.app = archive_app, .name = "Archive", .stack_size = 4096, .icon = &A_FileManager_14}; #endif -#ifdef SRV_DOLPHIN -const FlipperApplication FLIPPER_SCENE = - {.app = scene_app, .name = "Scenes", .stack_size = 1024, .icon = &A_Games_14}; - -const FlipperApplication FLIPPER_SCENE_APPS[] = { - {.app = passport_app, .name = "Passport", .stack_size = 1024, .icon = &A_Games_14}, - {.app = food_minigame_app, .name = "Food minigame", .stack_size = 1024, .icon = &A_Games_14}, -}; - -const size_t FLIPPER_SCENE_APPS_COUNT = sizeof(FLIPPER_SCENE_APPS) / sizeof(FlipperApplication); - -#endif - // Settings menu const FlipperApplication FLIPPER_SETTINGS_APPS[] = { #ifdef SRV_NOTIFICATION diff --git a/applications/dolphin/dolphin.c b/applications/dolphin/dolphin.c index b7133b9a..245746a5 100644 --- a/applications/dolphin/dolphin.c +++ b/applications/dolphin/dolphin.c @@ -119,12 +119,6 @@ bool dolphin_view_idle_main_input(InputEvent* event, void* context) { } else if(event->key == InputKeyUp && event->type == InputTypeShort) { osTimerStart(dolphin->timeout_timer, 40); view_dispatcher_switch_to_view(dolphin->idle_view_dispatcher, DolphinViewLockMenu); - } else if(event->key == InputKeyLeft && event->type == InputTypeShort) { -#if 0 - dolphin_switch_to_app(dolphin, &FAV_APP); -#endif - } else if(event->key == InputKeyRight && event->type == InputTypeShort) { - dolphin_switch_to_app(dolphin, &FLIPPER_SCENE); } else if(event->key == InputKeyDown && event->type == InputTypeShort) { dolphin_switch_to_app(dolphin, &FLIPPER_ARCHIVE); } else if(event->key == InputKeyDown && event->type == InputTypeLong) { diff --git a/applications/dolphin/games/food.c b/applications/dolphin/games/food.c deleted file mode 100644 index ea35b6d8..00000000 --- a/applications/dolphin/games/food.c +++ /dev/null @@ -1,321 +0,0 @@ -#include -#include -#include "dolphin/dolphin_state.h" - -#define MAX_TRIES 3 -#define DISHES_TOTAL 3 -#define LID_POS_MAX 20 -#define TRY_TIMEOUT 10 - -typedef enum { - EventTypeTick, - EventTypeKey, - EventTypeDeed, -} EventType; - -typedef struct { - union { - InputEvent input; - } value; - EventType type; -} AppEvent; - -typedef enum { - PlayerChoiceEvent, - OpenLootEvent, - WinEvent, - LooseEvent, - FinishedEvent, - ExitGameEvent, - GameEventTotal, -} GameEventType; - -typedef enum { - LootSkeleton, - LootFish, - LootShit, - LootTotalNum, -} LootIdEnum; - -typedef struct { - GameEventType current_event; - osMessageQueueId_t event_queue; - LootIdEnum loot_list[DISHES_TOTAL]; - - uint8_t cursor_pos; - uint8_t lid_pos; - uint8_t timeout; - uint8_t try; - - bool selected; - bool deed; - -} GameState; - -typedef struct { - const Icon* f; - const Icon* b; -} LootGfx; - -static const Icon* letters[DISHES_TOTAL] = {&I_letterA_10x10, &I_letterB_10x10, &I_letterC_10x10}; - -static const LootGfx loot[LootTotalNum] = { - [LootSkeleton] = - { - .f = &I_skeleton_25x17, - .b = &I_blackskeleton_25x17, - }, - [LootFish] = - { - .f = &I_fish_25x17, - .b = &I_blackfish_25x17, - }, - [LootShit] = - { - .f = &I_shit_25x17, - .b = &I_blackshit_25x17, - }, -}; - -static void input_callback(InputEvent* input_event, void* ctx) { - osMessageQueueId_t event_queue = ctx; - AppEvent event; - event.type = EventTypeKey; - event.value.input = *input_event; - osMessageQueuePut(event_queue, &event, 0, osWaitForever); -} - -static void draw_dish(Canvas* canvas, GameState* state, uint8_t x, uint8_t y, uint8_t id) { - bool active = state->cursor_pos == id; - bool opened = state->current_event == OpenLootEvent && active; - - canvas_set_bitmap_mode(canvas, true); - canvas_set_color(canvas, ColorBlack); - - if(active) { - canvas_draw_icon(canvas, x, y, &I_active_plate_48x18); - } - - if(opened) { - state->lid_pos = CLAMP(state->lid_pos + 1, LID_POS_MAX, 0); - } - - uint8_t lid_pos = (y - 17) - (opened ? state->lid_pos : 0); - - canvas_draw_icon(canvas, x + 3, y - 6, &I_plate_42x19); - - canvas_set_color(canvas, ColorWhite); - canvas_draw_icon(canvas, x + 11, y - 10, loot[state->loot_list[id]].b); - canvas_set_color(canvas, ColorBlack); - canvas_draw_icon(canvas, x + 11, y - 10, loot[state->loot_list[id]].f); - - canvas_set_color(canvas, ColorWhite); - canvas_draw_icon(canvas, x + 6, lid_pos, &I_blacklid_36x27); - canvas_set_color(canvas, ColorBlack); - canvas_draw_icon(canvas, x + 6, lid_pos, &I_lid_36x27); - canvas_set_bitmap_mode(canvas, false); - - canvas_draw_icon(canvas, x + 19, y + 8, letters[id]); -} - -static void draw_dishes_scene(Canvas* canvas, GameState* state) { - uint8_t tries_left = MAX_TRIES - state->try; - for(size_t i = 0; i < MAX_TRIES; i++) { - if(i < tries_left) { - canvas_draw_disc(canvas, 5 + i * 8, 5, 2); - } else { - canvas_draw_circle(canvas, 5 + i * 8, 5, 2); - } - } - - for(size_t i = 0; i < DISHES_TOTAL; i++) { - draw_dish(canvas, state, i * 40, i % 2 ? 26 : 44, i); - } -} - -static void render_callback(Canvas* canvas, void* ctx) { - GameState* state = (GameState*)acquire_mutex((ValueMutex*)ctx, 25); - canvas_clear(canvas); - - switch(state->current_event) { - case WinEvent: - canvas_draw_str(canvas, 30, 30, "Dolphin_happy.png"); - break; - case LooseEvent: - canvas_draw_str_aligned(canvas, 64, 30, AlignCenter, AlignCenter, "Try again!"); - break; - case ExitGameEvent: - break; - case FinishedEvent: - break; - default: - draw_dishes_scene(canvas, state); - break; - } - - release_mutex((ValueMutex*)ctx, state); -} -static void reset_lid_pos(GameState* state) { - state->selected = false; - state->lid_pos = 0; -} - -void dolphin_food_deed(GameState* state) { - furi_assert(state); - AppEvent event; - event.type = EventTypeDeed; - furi_check(osMessageQueuePut(state->event_queue, &event, 0, osWaitForever) == osOK); -} - -static void reset_loot_array(GameState* state) { - for(size_t i = 0; i < LootTotalNum; i++) { - state->loot_list[i] = i; - } - - for(size_t i = 0; i < LootTotalNum; i++) { - int temp = state->loot_list[i]; - int r_idx = rand() % LootTotalNum; - - state->loot_list[i] = state->loot_list[r_idx]; - state->loot_list[r_idx] = temp; - } -} - -static bool selected_is_food(GameState* state) { - return state->loot_list[state->cursor_pos] == LootFish; -} - -static bool tries_exceed(GameState* state) { - return state->try == MAX_TRIES; -} - -static bool timeout_exceed(GameState* state) { - return state->timeout == TRY_TIMEOUT; -} - -static void gamestate_update(GameState* state, DolphinState* dolphin_state) { - switch(state->current_event) { - case PlayerChoiceEvent: - if(state->selected) { - state->current_event = OpenLootEvent; - } - break; - case OpenLootEvent: - state->timeout = CLAMP(state->timeout + 1, TRY_TIMEOUT, 0); - if(timeout_exceed(state)) { - state->timeout = 0; - state->current_event = selected_is_food(state) ? WinEvent : LooseEvent; - state->deed = selected_is_food(state); - } - break; - case LooseEvent: - state->timeout = CLAMP(state->timeout + 1, TRY_TIMEOUT, 0); - if(timeout_exceed(state)) { - state->timeout = 0; - state->current_event = FinishedEvent; - } - break; - case WinEvent: - if(state->deed) { - dolphin_food_deed(state); - } - break; - case FinishedEvent: - reset_lid_pos(state); - reset_loot_array(state); - - state->try++; - state->current_event = tries_exceed(state) ? ExitGameEvent : PlayerChoiceEvent; - break; - - default: - break; - } -} - -static void food_minigame_controls(GameState* state, AppEvent* event) { - furi_assert(state); - furi_assert(event); - - if(event->value.input.key == InputKeyRight) { - if(state->current_event == PlayerChoiceEvent) { - state->cursor_pos = CLAMP(state->cursor_pos + 1, DISHES_TOTAL - 1, 0); - } - } else if(event->value.input.key == InputKeyLeft) { - if(state->current_event == PlayerChoiceEvent) { - state->cursor_pos = CLAMP(state->cursor_pos - 1, DISHES_TOTAL - 1, 0); - } - } else if(event->value.input.key == InputKeyOk) { - switch(state->current_event) { - case PlayerChoiceEvent: - state->selected = true; - break; - case WinEvent: - state->current_event = FinishedEvent; - break; - default: - break; - } - } -} - -int32_t food_minigame_app(void* p) { - GameState* state = furi_alloc(sizeof(GameState)); - DolphinState* dolphin_state = dolphin_state_alloc(); - dolphin_state_load(dolphin_state); - - ValueMutex state_mutex; - - state->event_queue = osMessageQueueNew(2, sizeof(AppEvent), NULL); - - furi_check(state->event_queue); - - if(!init_mutex(&state_mutex, state, sizeof(GameState*))) { - printf("[Food minigame] cannot create mutex\r\n"); - return 0; - } - - ViewPort* view_port = view_port_alloc(); - - view_port_draw_callback_set(view_port, render_callback, &state_mutex); - view_port_input_callback_set(view_port, input_callback, state->event_queue); - - Gui* gui = furi_record_open("gui"); - gui_add_view_port(gui, view_port, GuiLayerFullscreen); - - reset_loot_array(state); - - AppEvent event; - while(1) { - osStatus_t event_status = osMessageQueueGet(state->event_queue, &event, NULL, 100); - if(event_status == osOK) { - if(event.type == EventTypeKey && event.value.input.type == InputTypeShort) { - food_minigame_controls(state, &event); - - if(event.value.input.key == InputKeyBack) { - break; - } - } else if(event.type == EventTypeDeed) { - dolphin_state_on_deed(dolphin_state, DolphinDeedIButtonRead); - dolphin_state_save(dolphin_state); - state->deed = false; - } - } - - if(state->current_event == ExitGameEvent) { - break; - } - gamestate_update(state, dolphin_state); - view_port_update(view_port); - } - - gui_remove_view_port(gui, view_port); - view_port_free(view_port); - furi_record_close("gui"); - delete_mutex(&state_mutex); - osMessageQueueDelete(state->event_queue); - dolphin_state_free(dolphin_state); - free(state); - - return 0; -} diff --git a/applications/dolphin/passport/passport.c b/applications/dolphin/passport/passport.c deleted file mode 100644 index de4b1966..00000000 --- a/applications/dolphin/passport/passport.c +++ /dev/null @@ -1,147 +0,0 @@ -#include -#include -#include -#include "dolphin/dolphin.h" -#include "dolphin/dolphin_state.h" -#include "math.h" - -#define MOODS_TOTAL 3 -#define BUTTHURT_MAX 3 - -typedef enum { - EventTypeTick, - EventTypeKey, -} EventType; - -typedef struct { - union { - InputEvent input; - } value; - EventType type; -} AppEvent; - -// Moods, corresponding to butthurt level. (temp, unclear about max level) -static const char* mood_strings[MOODS_TOTAL] = {[0] = "Happy", [1] = "Ok", [2] = "Bad"}; - -static const Icon* portrait_happy[BUTTHURT_MAX] = { - &I_passport_happy1_43x45, - &I_passport_happy2_43x45, - &I_passport_happy3_43x45}; -static const Icon* portrait_ok[BUTTHURT_MAX] = { - &I_passport_okay1_43x45, - &I_passport_okay2_43x45, - &I_passport_okay3_43x45}; -static const Icon* portrait_bad[BUTTHURT_MAX] = { - &I_passport_bad1_43x45, - &I_passport_bad2_43x45, - &I_passport_bad3_43x45}; -static const Icon** portraits[MOODS_TOTAL] = {portrait_happy, portrait_ok, portrait_bad}; - -static void input_callback(InputEvent* input_event, void* ctx) { - osMessageQueueId_t event_queue = ctx; - AppEvent event; - event.type = EventTypeKey; - event.value.input = *input_event; - osMessageQueuePut(event_queue, &event, 0, osWaitForever); -} - -static void render_callback(Canvas* canvas, void* ctx) { - DolphinState* state = (DolphinState*)acquire_mutex((ValueMutex*)ctx, 25); - - char level[20]; - char mood[32]; - - uint32_t butthurt = CLAMP(dolphin_state_get_butthurt(state), BUTTHURT_MAX - 1, 0); - uint32_t current_level = dolphin_state_get_level(state); - uint32_t prev_cap = dolphin_state_xp_to_levelup(state, current_level - 1, false); - uint32_t exp = (dolphin_state_xp_to_levelup(state, current_level, true) * 63) / - (dolphin_state_xp_to_levelup(state, current_level, false) - prev_cap); - uint8_t portrait_level = CLAMP(floor(current_level / 14), MOODS_TOTAL - 1, 0); - - canvas_clear(canvas); - - // multipass - canvas_draw_icon(canvas, 0, 0, &I_PassportLeft_6x47); - canvas_draw_icon(canvas, 0, 47, &I_PassportBottom_128x17); - canvas_draw_line(canvas, 6, 0, 125, 0); - canvas_draw_line(canvas, 127, 2, 127, 47); - canvas_draw_dot(canvas, 126, 1); - - //portrait frame - canvas_draw_line(canvas, 9, 6, 9, 53); - canvas_draw_line(canvas, 10, 5, 52, 5); - canvas_draw_line(canvas, 55, 8, 55, 53); - canvas_draw_line(canvas, 10, 54, 54, 54); - canvas_draw_line(canvas, 53, 5, 55, 7); - - // portrait - canvas_draw_icon(canvas, 10, 9, portraits[butthurt][portrait_level]); - canvas_draw_line(canvas, 59, 18, 124, 18); - canvas_draw_line(canvas, 59, 31, 124, 31); - canvas_draw_line(canvas, 59, 44, 124, 44); - - const char* my_name = furi_hal_version_get_name_ptr(); - canvas_draw_str(canvas, 59, 15, my_name ? my_name : "Unknown"); - - snprintf(level, 20, "Level: %ld", current_level); - snprintf(mood, 20, "Mood: %s", mood_strings[butthurt]); - - canvas_draw_str(canvas, 59, 28, mood); - - canvas_draw_str(canvas, 59, 41, level); - canvas_set_color(canvas, ColorWhite); - canvas_draw_box(canvas, 123 - exp, 48, exp + 1, 6); - canvas_set_color(canvas, ColorBlack); - canvas_draw_line(canvas, 123 - exp, 48, 123 - exp, 54); - - release_mutex((ValueMutex*)ctx, state); -} - -int32_t passport_app(void* p) { - DolphinState* dolphin_state = dolphin_state_alloc(); - ValueMutex state_mutex; - dolphin_state_load(dolphin_state); - - osMessageQueueId_t event_queue = osMessageQueueNew(2, sizeof(AppEvent), NULL); - furi_check(event_queue); - - if(!init_mutex(&state_mutex, dolphin_state, sizeof(DolphinState*))) { - printf("[Passport] cannot create mutex\r\n"); - return 0; - } - - ViewPort* view_port = view_port_alloc(); - - view_port_draw_callback_set(view_port, render_callback, &state_mutex); - view_port_input_callback_set(view_port, input_callback, event_queue); - - Gui* gui = furi_record_open("gui"); - gui_add_view_port(gui, view_port, GuiLayerFullscreen); - - AppEvent event; - while(1) { - osStatus_t event_status = osMessageQueueGet(event_queue, &event, NULL, 25); - if(event_status == osOK) { - if(event.type == EventTypeKey && event.value.input.type == InputTypeShort && - event.value.input.key == InputKeyBack) { - break; - } - } - - view_port_update(view_port); - } - - gui_remove_view_port(gui, view_port); - - view_port_free(view_port); - - furi_record_close("gui"); - - delete_mutex(&state_mutex); - - osMessageQueueDelete(event_queue); - - dolphin_state_free(dolphin_state); - - return 0; -} diff --git a/applications/dolphin/scenes/assets/emotes.h b/applications/dolphin/scenes/assets/emotes.h deleted file mode 100644 index 6c3f0dba..00000000 --- a/applications/dolphin/scenes/assets/emotes.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -// temp -const char* console_emotes[] = { - "Run it, m8", - "Lets GOOOO", - "Click it, buddy", - "I wanna play", - "Wtf is this?", - "Just do it", - "JUST DO IT!", -}; diff --git a/applications/dolphin/scenes/assets/items.c b/applications/dolphin/scenes/assets/items.c deleted file mode 100644 index 539c01e1..00000000 --- a/applications/dolphin/scenes/assets/items.c +++ /dev/null @@ -1,233 +0,0 @@ -#include -#include "applications.h" -#include "items_i.h" -#include "emotes.h" -#include - -const Item Food = { - .layer = 4, - .timeout = 100, - .pos = - { - .x = 0, - .y = 90, - }, - .width = 60, - .height = 50, - .draw = food_redraw, - .callback = food_callback}; - -const Item Console = { - .layer = 4, - .timeout = 100, - .pos = - { - .x = 357, - .y = 190, - }, - .width = 40, - .height = 20, - .draw = console_redraw, - .callback = console_callback}; - -const Item* Home[] = {&Food, &Console}; - -const Item** Scenes[] = {Home}; - -const Item** get_scene(SceneState* state) { - return Scenes[state->scene_id]; -} - -static void dolphin_scene_start_app(SceneState* state, const FlipperApplication* flipper_app) { - furi_assert(state); - furi_assert(flipper_app); - - state->scene_app_thread = furi_thread_alloc(); - - furi_assert(flipper_app->app); - furi_assert(flipper_app->name); - - furi_thread_set_name(state->scene_app_thread, flipper_app->name); - furi_thread_set_stack_size(state->scene_app_thread, flipper_app->stack_size); - furi_thread_set_callback(state->scene_app_thread, flipper_app->app); - furi_thread_start(state->scene_app_thread); -} - -uint16_t roll_new(uint16_t prev, uint16_t max) { - uint16_t val = 999; - while(val != prev) { - val = random() % max; - break; - } - return val; -} - -static void dolphin_scene_type_text( - Canvas* canvas, - SceneState* state, - uint8_t x, - uint8_t y, - const char* text) { - char dialog_str[64]; - char buf[64]; - - strcpy(dialog_str, (char*)text); - - if(state->dialog_progress <= strlen(dialog_str)) { - if(HAL_GetTick() / 10 % 2 == 0) state->dialog_progress++; - dialog_str[state->dialog_progress] = '\0'; - snprintf(buf, state->dialog_progress, dialog_str); - } else { - snprintf(buf, 64, dialog_str); - } - - canvas_draw_str_aligned(canvas, x, y, AlignCenter, AlignCenter, buf); -} - -const void scene_activate_item_callback(SceneState* state, Canvas* canvas) { - furi_assert(state); - furi_assert(canvas); - - const Item* near = is_nearby(state); - if(near && state->use_pending == true) { - state->action_timeout = near->timeout; - near->callback(canvas, state); - state->use_pending = false; - } else if(near) { - near->callback(canvas, state); - } -} - -const Vec2 item_get_pos(SceneState* state, ItemsEnum item) { - const Item** current = get_scene(state); - Vec2 rel_pos = {0, 0}; - - rel_pos.x = DOLPHIN_WIDTH / 2 + (current[item]->pos.x * PARALLAX(current[item]->layer)); - rel_pos.y = DOLPHIN_WIDTH / 4 + (current[item]->pos.y * PARALLAX(current[item]->layer)); - - return rel_pos; -} - -const Item* is_nearby(SceneState* state) { - furi_assert(state); - uint8_t item = 0; - bool found = false; - const Item** current = get_scene(state); - while(item < ItemsEnumTotal) { - int32_t rel_x = - (DOLPHIN_CENTER + DOLPHIN_WIDTH / 2 - - (current[item]->pos.x - state->player_global.x) * PARALLAX(current[item]->layer)); - - uint8_t item_height = current[item]->height; - uint8_t item_width = current[item]->width; - - int32_t rel_y = current[item]->pos.y - state->player_global.y; - - if(abs(rel_x) <= item_width && abs(rel_y) <= item_height) { - found = !found; - break; - } - ++item; - } - return found ? current[item] : NULL; -} - -void food_redraw(Canvas* canvas, void* s) { - furi_assert(s); - SceneState* state = s; - - const Icon* food_frames[] = { - &I_food1_61x98, - &I_food2_61x98, - &I_food3_61x98, - &I_food4_61x98, - &I_food5_61x98, - &I_food6_61x98, - &I_food7_61x98, - &I_food8_61x98, - &I_food9_61x98, - &I_food10_61x98, - &I_food11_61x98, - &I_food12_61x98, - }; - - uint8_t frame = ((HAL_GetTick() / 200) % SIZEOF_ARRAY(food_frames)); - - if(is_nearby(state) && (state->player_global.y > Food.pos.y)) { - dolphin_scene_type_text( - canvas, - state, - (Food.pos.x - state->player_global.x) * PARALLAX(Food.layer) + 90, - state->screen.y + 8, - console_emotes[state->emote_id]); - - } else { - state->dialog_progress = 0; - state->emote_id = roll_new(state->previous_emote, SIZEOF_ARRAY(console_emotes)); - } - - canvas_draw_icon( - canvas, - (Food.pos.x - state->player_global.x) * PARALLAX(Food.layer), - Food.pos.y - state->player_global.y, - food_frames[frame]); - - canvas_set_bitmap_mode(canvas, true); -} - -void food_callback(Canvas* canvas, void* s) { - furi_assert(s); - SceneState* state = s; - if(state->use_pending) { - dolphin_scene_start_app(state, &FLIPPER_SCENE_APPS[1]); - } -} - -void console_redraw(Canvas* canvas, void* s) { - furi_assert(s); - SceneState* state = s; - - const Icon* console[] = { - &I_Console_74x67_0, - &I_Console_74x67_1, - &I_Console_74x67_2, - &I_Console_74x67_3, - &I_Console_74x67_4, - &I_Console_74x67_5, - &I_Console_74x67_6, - &I_Console_74x67_7, - &I_Console_74x67_8, - - }; - - uint8_t frame = ((HAL_GetTick() / 100) % SIZEOF_ARRAY(console)); - - canvas_draw_icon( - canvas, - (Console.pos.x - state->player_global.x) * PARALLAX(Console.layer), - Console.pos.y - state->player_global.y, - console[frame]); - - canvas_set_bitmap_mode(canvas, true); - - if(is_nearby(state)) { - dolphin_scene_type_text( - canvas, - state, - (Console.pos.x - state->player_global.x) * PARALLAX(Console.layer) - 25, - Console.pos.y - state->player_global.y + 14, - console_emotes[state->emote_id]); - - } else { - state->dialog_progress = 0; - state->emote_id = roll_new(state->previous_emote, SIZEOF_ARRAY(console_emotes)); - } -} - -void console_callback(Canvas* canvas, void* s) { - furi_assert(s); - SceneState* state = s; - if(state->use_pending) { - dolphin_scene_start_app(state, &FLIPPER_SCENE_APPS[0]); - } -} \ No newline at end of file diff --git a/applications/dolphin/scenes/assets/items.h b/applications/dolphin/scenes/assets/items.h deleted file mode 100644 index 9da4d17c..00000000 --- a/applications/dolphin/scenes/assets/items.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once -#include "dolphin/scenes/scene.h" - -typedef enum { - ItemsFood, - ItemsConsole, - ItemsEnumTotal, -} ItemsEnum; - -uint16_t roll_new(uint16_t prev, uint16_t max); -const Vec2 item_get_pos(SceneState* state, ItemsEnum item); -const Item* is_nearby(SceneState* state); -const Item** get_scene(SceneState* state); -const void scene_activate_item_callback(SceneState* state, Canvas* canvas); diff --git a/applications/dolphin/scenes/assets/items_i.h b/applications/dolphin/scenes/assets/items_i.h deleted file mode 100644 index 872dee35..00000000 --- a/applications/dolphin/scenes/assets/items_i.h +++ /dev/null @@ -1,8 +0,0 @@ -#pragma once -#include "items.h" - -void food_redraw(Canvas* canvas, void* state); -void food_callback(Canvas* canvas, void* state); - -void console_redraw(Canvas* canvas, void* state); -void console_callback(Canvas* canvas, void* state); diff --git a/applications/dolphin/scenes/assets/meta.h b/applications/dolphin/scenes/assets/meta.h deleted file mode 100644 index 467e9ea0..00000000 --- a/applications/dolphin/scenes/assets/meta.h +++ /dev/null @@ -1,276 +0,0 @@ -#pragma once -#include "dolphin/scenes/scene.h" - -const DolphinFrame up = { - .frames = - { - { - .f = &I_up1_73x61, - .b = &I_black_up1_73x61, - }, - { - .f = &I_up2_73x61, - .b = &I_black_up2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame up_down = { - .frames = - { - { - .f = &I_updown1_73x61, - .b = &I_black_updown1_73x61, - }, - { - .f = &I_updown2_73x61, - .b = &I_black_updown2_73x61, - }, - { - .f = &I_updown3_73x61, - .b = &I_black_updown3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame up_right = { - .frames = - { - { - .f = &I_upright1_73x61, - .b = &I_black_upright1_73x61, - }, - { - .f = &I_upright2_73x61, - .b = &I_black_upright2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame up_left = { - .frames = - { - { - .f = &I_upleft1_73x61, - .b = &I_black_upleft1_73x61, - }, - { - .f = &I_upleft2_73x61, - .b = &I_black_upleft2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame right = { - .frames = - { - { - .f = &I_right1_73x61, - .b = &I_black_right1_73x61, - }, - { - .f = &I_right2_73x61, - .b = &I_black_right2_73x61, - }, - { - .f = &I_right3_73x61, - .b = &I_black_right3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame right_up = { - .frames = - { - { - .f = &I_rightup1_73x61, - .b = &I_black_rightup1_73x61, - }, - { - .f = &I_rightup2_73x61, - .b = &I_black_rightup2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame right_down = { - .frames = - { - { - .f = &I_rightdown1_73x61, - .b = &I_black_rightdown1_73x61, - }, - { - .f = &I_rightdown2_73x61, - .b = &I_black_rightdown2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame right_left = { - .frames = - { - { - .f = &I_rightleft1_73x61, - .b = &I_black_rightleft1_73x61, - }, - { - .f = &I_rightleft2_73x61, - .b = &I_black_rightleft2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame down = { - .frames = - { - { - .f = &I_down1_73x61, - .b = &I_black_down1_73x61, - }, - { - .f = &I_down2_73x61, - .b = &I_black_down2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame down_up = { - .frames = - { - { - .f = &I_downup1_73x61, - .b = &I_black_downup1_73x61, - }, - { - .f = &I_downup2_73x61, - .b = &I_black_downup2_73x61, - }, - { - .f = &I_downup3_73x61, - .b = &I_black_downup3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame down_left = { - .frames = - { - { - .f = &I_downleft1_73x61, - .b = &I_black_downleft1_73x61, - }, - { - .f = &I_downleft2_73x61, - .b = &I_black_downleft2_73x61, - }, - { - .f = &I_downleft3_73x61, - .b = &I_black_downleft3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame down_right = { - .frames = - { - { - .f = &I_downright1_73x61, - .b = &I_black_downright1_73x61, - }, - { - .f = &I_downright2_73x61, - .b = &I_black_downright2_73x61, - }, - { - .f = &I_downright3_73x61, - .b = &I_black_downright3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame left = { - .frames = - { - { - .f = &I_left1_73x61, - .b = &I_black_left1_73x61, - }, - { - .f = &I_left2_73x61, - .b = &I_black_left2_73x61, - }, - { - .f = &I_left3_73x61, - .b = &I_black_left3_73x61, - }, - }, - .total = 3, -}; - -const DolphinFrame left_up = { - .frames = - { - { - .f = &I_leftup1_73x61, - .b = &I_black_leftup1_73x61, - }, - { - .f = &I_leftup2_73x61, - .b = &I_black_leftup2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame left_down = { - .frames = - { - { - .f = &I_leftdown1_73x61, - .b = &I_black_leftdown1_73x61, - }, - { - .f = &I_leftdown2_73x61, - .b = &I_black_leftdown2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame left_right = { - .frames = - { - { - .f = &I_rightleft1_73x61, - .b = &I_black_rightleft1_73x61, - }, - { - .f = &I_rightleft2_73x61, - .b = &I_black_rightleft2_73x61, - }, - }, - .total = 2, -}; - -const DolphinFrame* frames[4][4] = { - [DirUp] = {[DirUp] = &up, [DirRight] = &up_right, [DirDown] = &up_down, [DirLeft] = &up_left}, - [DirRight] = - {[DirUp] = &right_up, [DirRight] = &right, [DirDown] = &right_down, [DirLeft] = &right_left}, - [DirDown] = - {[DirUp] = &down_up, [DirRight] = &down_right, [DirDown] = &down, [DirLeft] = &down_left}, - [DirLeft] = - {[DirUp] = &left_up, [DirRight] = &left_right, [DirDown] = &left_down, [DirLeft] = &left}, -}; diff --git a/applications/dolphin/scenes/scene.c b/applications/dolphin/scenes/scene.c deleted file mode 100644 index 13c0cff0..00000000 --- a/applications/dolphin/scenes/scene.c +++ /dev/null @@ -1,151 +0,0 @@ -#include -#include -#include "scene.h" - -static SceneAppGui* scene_app_gui = NULL; -static ValueMutex* scene_state_mutex = NULL; - -void dolphin_scene_redraw(Canvas* canvas, void* ctx) { - furi_assert(canvas); - furi_assert(ctx); - - SceneState* state = (SceneState*)acquire_mutex((ValueMutex*)ctx, 25); - if(state == NULL) return; // redraw fail - uint32_t t = xTaskGetTickCount(); - - canvas_clear(canvas); - dolphin_scene_render(state, canvas, t); - dolphin_scene_render_state(state, canvas); - release_mutex((ValueMutex*)ctx, state); -} - -void dolphin_scene_handle_input(SceneState* state, InputEvent* input) { - // printf("[kb] event: %02x %s\n", input->key, input->state ? "pressed" : "released"); - dolphin_scene_handle_user_input(state, input); -} - -void dolphin_scene_tick_handler(SceneState* state, uint32_t t, uint32_t dt) { - // printf("t: %d, dt: %d\n", t, dt); - dolphin_scene_coordinates(state, dt); - dolphin_scene_update_state(state, t, dt); -} - -static void scene_engine_tick_callback(void* p) { - osMessageQueueId_t event_queue = p; - AppEvent event; - event.type = EventTypeTick; - osMessageQueuePut(event_queue, (void*)&event, 0, 0); -} - -static void scene_engine_input_callback(InputEvent* input_event, void* ctx) { - osMessageQueueId_t event_queue = ctx; - AppEvent event; - event.type = EventTypeKey; - event.value.input = *input_event; - osMessageQueuePut(event_queue, (void*)&event, 0, osWaitForever); -} - -void scene_alloc() { - printf("scene_alloc: start\r\n"); - furi_assert(scene_app_gui == NULL); - furi_assert(scene_state_mutex == NULL); - - // SceneAppGui - scene_app_gui = furi_alloc(sizeof(SceneAppGui)); - scene_app_gui->mqueue = osMessageQueueNew(8, sizeof(AppEvent), NULL); - scene_app_gui->gui = furi_record_open("gui"); - scene_app_gui->view_port = view_port_alloc(); - scene_app_gui->timer = - osTimerNew(scene_engine_tick_callback, osTimerPeriodic, scene_app_gui->mqueue, NULL); - printf("scene_alloc: timer %p\r\n", scene_app_gui->timer); - // Scene State - SceneState* scene_state = furi_alloc(sizeof(SceneState)); - scene_state->player.y = DOLPHIN_DEFAULT_Y; - scene_state->player.x = DOLPHIN_CENTER; - - scene_state->player_global.x = 160; - scene_state->player_global.y = WORLD_HEIGHT; - - scene_state->frame_group = DirRight; - scene_state->frame_type = DirRight; - scene_state->frame_pending = DirRight; - scene_state->last_group = DirRight; - - scene_state->screen.x = scene_state->player.x; - scene_state->screen.y = scene_state->player.y; - // scene_state->debug = true; - scene_state_mutex = furi_alloc(sizeof(ValueMutex)); - furi_check(init_mutex(scene_state_mutex, scene_state, sizeof(SceneState))); - - // Open GUI and register fullscreen view_port - view_port_draw_callback_set(scene_app_gui->view_port, dolphin_scene_redraw, scene_state_mutex); - view_port_input_callback_set( - scene_app_gui->view_port, scene_engine_input_callback, scene_app_gui->mqueue); - gui_add_view_port(scene_app_gui->gui, scene_app_gui->view_port, GuiLayerFullscreen); - view_port_enabled_set(scene_app_gui->view_port, true); - printf("scene_alloc: complete\r\n"); -} - -void scene_free() { - printf("scene_free: start\r\n"); - view_port_enabled_set(scene_app_gui->view_port, false); - gui_remove_view_port(scene_app_gui->gui, scene_app_gui->view_port); - - SceneState* scene_state = (SceneState*)acquire_mutex_block(scene_state_mutex); - furi_assert(scene_state); - free(scene_state); - release_mutex(scene_state_mutex, scene_state); - delete_mutex(scene_state_mutex); - free(scene_state_mutex); - scene_state_mutex = NULL; - - furi_check(osTimerDelete(scene_app_gui->timer) == osOK); - furi_record_close("gui"); - view_port_free(scene_app_gui->view_port); - furi_check(osMessageQueueDelete(scene_app_gui->mqueue) == osOK); - free(scene_app_gui); - scene_app_gui = NULL; - printf("scene_free: complete\r\n"); -} - -int32_t scene_app(void* p) { - furi_hal_power_insomnia_enter(); - scene_alloc(); - - osTimerStart(scene_app_gui->timer, 40); - - uint32_t t = xTaskGetTickCount(); - uint32_t prev_t = 0; - - while(1) { - AppEvent event; - if(osMessageQueueGet(scene_app_gui->mqueue, &event, 0, osWaitForever) == osOK) { - SceneState* scene_state = (SceneState*)acquire_mutex_block(scene_state_mutex); - if(event.type == EventTypeTick) { - t = xTaskGetTickCount(); - dolphin_scene_tick_handler(scene_state, t, (t - prev_t) % 1024); - prev_t = t; - } else if(event.type == EventTypeKey) { - if(event.value.input.key == InputKeyBack && - event.value.input.type == InputTypeShort) { - release_mutex(scene_state_mutex, scene_state); - break; - - } else { - dolphin_scene_handle_input(scene_state, &event.value.input); - } - } - release_mutex(scene_state_mutex, scene_state); - view_port_update(scene_app_gui->view_port); - } - } - - osTimerStop(scene_app_gui->timer); - - // CMSIS + FreeRTOS = Enterprise - osDelay(15); - - scene_free(); - furi_hal_power_insomnia_exit(); - return 0; -} \ No newline at end of file diff --git a/applications/dolphin/scenes/scene.h b/applications/dolphin/scenes/scene.h deleted file mode 100644 index 78783769..00000000 --- a/applications/dolphin/scenes/scene.h +++ /dev/null @@ -1,138 +0,0 @@ -#pragma once - -#include -#include -#include - -// global -#define SCALE 32 -// screen - -#define SCREEN_WIDTH GUI_DISPLAY_WIDTH -#define SCREEN_HEIGHT GUI_DISPLAY_HEIGHT -#define BONDARIES_X_LEFT 40 -#define BONDARIES_X_RIGHT 88 - -// player -#define DOLPHIN_WIDTH 32 -#define DOLPHIN_HEIGHT 32 -#define DOLPHIN_CENTER (SCREEN_WIDTH / 2 - DOLPHIN_WIDTH) -#define SPEED_X 4 -#define SPEED_Y 4 -#define ACTIONS_NUM 4 -#define DOLPHIN_DEFAULT_Y 2 -#define MAX_FRAMES 3 - -// world -#define WORLD_WIDTH 256 -#define WORLD_HEIGHT 192 - -#define LAYERS 8 -#define DOLPHIN_LAYER 6 -#define PARALLAX_MOD 7 -#define PARALLAX(layer) layer / PARALLAX_MOD - layer - -#define DIALOG_PROGRESS 250 - -enum Actions { IDLE = 0, EMOTE, INTERACT, MINDCONTROL }; - -static const uint16_t default_timeout[] = - {[IDLE] = 100, [EMOTE] = 50, [INTERACT] = 10, [MINDCONTROL] = 50}; - -typedef enum { - EventTypeTick, - EventTypeKey, -} EventType; - -typedef struct { - union { - InputEvent input; - } value; - EventType type; -} AppEvent; - -typedef struct { - int32_t x; - int32_t y; -} Vec2; - -typedef struct { - osMessageQueueId_t mqueue; - Gui* gui; - ViewPort* view_port; - osTimerId_t* timer; -} SceneAppGui; - -typedef struct { - uint8_t layer; - uint16_t timeout; - Vec2 pos; - - uint8_t width; - uint8_t height; - - void (*draw)(Canvas* canvas, void* model); - void (*callback)(Canvas* canvas, void* model); -} Item; - -typedef enum { - DirUp = 0, - DirRight, - DirDown, - DirLeft, -} FrameDirectionEnum; - -typedef struct { - const Icon* f; - const Icon* b; -} DolphinGfxAsset; - -typedef struct { - const DolphinGfxAsset frames[MAX_FRAMES]; - const uint8_t total; -} DolphinFrame; - -typedef struct { - Vec2 player; - Vec2 player_global; - Vec2 player_v; - Vec2 screen; - - FrameDirectionEnum frame_group; - FrameDirectionEnum last_group; - FrameDirectionEnum frame_pending; - FrameDirectionEnum frame_type; - - const DolphinFrame* current_frame; - - bool transition; - bool transition_pending; - bool use_pending; - bool debug; - - uint8_t player_anim; - uint8_t frame_idx; - - uint8_t scene_id; - uint8_t emote_id; - uint8_t previous_emote; - - uint8_t action; - uint8_t prev_action; - uint8_t action_timeout; - uint8_t dialog_progress; - - FuriThread* scene_app_thread; -} SceneState; - -void dolphin_scene_render(SceneState* state, Canvas* canvas, uint32_t t); -void dolphin_scene_render_dolphin(SceneState* state, Canvas* canvas); -void dolphin_scene_handle_user_input(SceneState* state, InputEvent* input); -void dolphin_scene_coordinates(SceneState* state, uint32_t dt); - -void dolphin_scene_render_state(SceneState* state, Canvas* canvas); -void dolphin_scene_update_state(SceneState* state, uint32_t t, uint32_t dt); - -void dolphin_scene_redraw(Canvas* canvas, void* ctx); -void dolphin_scene_tick_handler(SceneState* state, uint32_t t, uint32_t dt); -void dolphin_scene_handle_input(SceneState* state, InputEvent* input); diff --git a/applications/dolphin/scenes/scene_controls.c b/applications/dolphin/scenes/scene_controls.c deleted file mode 100644 index 0d54f91b..00000000 --- a/applications/dolphin/scenes/scene_controls.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -#include "scene.h" - -void dolphin_scene_handle_user_input(SceneState* state, InputEvent* input) { - furi_assert(state); - furi_assert(input); - - state->last_group = state->frame_group; - if(input->type == InputTypePress) { - state->action = MINDCONTROL; - } - - if(state->action == MINDCONTROL) { - if(input->type == InputTypePress) { - if(input->key == InputKeyRight) { - state->player_v.y = 0; - state->player_v.x = SPEED_X; - } else if(input->key == InputKeyLeft) { - state->player_v.y = 0; - state->player_v.x = -SPEED_X; - } else if(input->key == InputKeyUp) { - state->player_v.x = 0; - state->player_v.y = -SPEED_Y; - } else if(input->key == InputKeyDown) { - state->player_v.x = 0; - state->player_v.y = SPEED_Y; - } - } - - if(input->type == InputTypeRelease) { - state->player_v.x = 0; - state->player_v.y = 0; - } else if(input->type == InputTypeShort) { - if(input->key == InputKeyOk) { - state->prev_action = MINDCONTROL; - state->action = INTERACT; - state->use_pending = true; - state->action_timeout = 0; - } - } - } -} - -void dolphin_scene_coordinates(SceneState* state, uint32_t dt) { - furi_assert(state); - - // global pos - state->player_global.x = CLAMP(state->player_global.x + state->player_v.x, WORLD_WIDTH, 0); - state->player_global.y = CLAMP(state->player_global.y + state->player_v.y, WORLD_HEIGHT, 0); - - // nudge camera postition - if(state->player_global.x > 170) { - state->player.x = - CLAMP(state->player.x - state->player_v.x / 2, DOLPHIN_CENTER, -DOLPHIN_WIDTH / 2); - } else if(state->player_global.x < 70) { - state->player.x = - CLAMP(state->player.x - state->player_v.x / 2, DOLPHIN_WIDTH * 2, DOLPHIN_CENTER); - } -} \ No newline at end of file diff --git a/applications/dolphin/scenes/scene_dolphin_state.c b/applications/dolphin/scenes/scene_dolphin_state.c deleted file mode 100644 index 8d0886bd..00000000 --- a/applications/dolphin/scenes/scene_dolphin_state.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include "scene.h" -#include "assets/items.h" - -static void scene_proceed_action(SceneState* state) { - furi_assert(state); - state->prev_action = state->action; - state->action = roll_new(state->prev_action, ACTIONS_NUM); - state->action_timeout = default_timeout[state->action]; -} - -static void scene_action_handler(SceneState* state) { - furi_assert(state); - if(state->action == MINDCONTROL) { - if(state->player_v.x != 0 || state->player_v.y != 0) { - state->action_timeout = default_timeout[state->action]; - } - } - - if(state->action_timeout > 0) { - state->action_timeout--; - } -} - -void dolphin_scene_update_state(SceneState* state, uint32_t t, uint32_t dt) { - furi_assert(state); - scene_action_handler(state); - - switch(state->action) { - case INTERACT: - if(state->action_timeout == 0) { - if(state->prev_action == MINDCONTROL) { - state->action = MINDCONTROL; - } else { - scene_proceed_action(state); - } - } - break; - - default: - - if(state->action_timeout == 0) { - scene_proceed_action(state); - } - break; - } -} diff --git a/applications/dolphin/scenes/scene_gfx.c b/applications/dolphin/scenes/scene_gfx.c deleted file mode 100644 index 0f722980..00000000 --- a/applications/dolphin/scenes/scene_gfx.c +++ /dev/null @@ -1,121 +0,0 @@ -#include -#include "scene.h" -#include "assets/items.h" -#include "assets/meta.h" -#include - -void dolphin_scene_transition_handler(SceneState* state) { - uint8_t speed_mod = (state->player_v.x || state->player_v.y || state->transition) ? 6 : 10; - - if(state->player_v.x < 0) { - state->frame_pending = DirLeft; - } else if(state->player_v.x > 0) { - state->frame_pending = DirRight; - } else if(state->player_v.y < 0) { - state->frame_pending = DirUp; - } else if(state->player_v.y > 0) { - state->frame_pending = DirDown; - } - state->transition_pending = state->frame_group != state->frame_pending; - - if(*&frames[state->frame_group][state->frame_type]->frames[state->frame_idx].f) { - state->current_frame = *&frames[state->frame_group][state->frame_type]; - } - - uint8_t total = state->current_frame->frames[2].f == NULL ? 2 : 3; - - if(state->transition_pending && !state->frame_idx) { - state->transition_pending = false; - state->transition = true; - } - - if(state->transition) { - state->frame_type = state->frame_pending; - state->frame_group = state->last_group; - state->transition = !(state->frame_idx == total - 1); - } else { - state->frame_group = state->frame_type; - } - - state->player_anim++; - - if(!(state->player_anim % speed_mod)) { - state->frame_idx = (state->frame_idx + 1) % total; - } -} - -void dolphin_scene_render_dolphin(SceneState* state, Canvas* canvas) { - furi_assert(state); - furi_assert(canvas); - - dolphin_scene_transition_handler(state); - - canvas_set_bitmap_mode(canvas, true); - canvas_set_color(canvas, ColorWhite); - canvas_draw_icon( - canvas, state->player.x, state->player.y, state->current_frame->frames[state->frame_idx].b); - canvas_set_color(canvas, ColorBlack); - canvas_draw_icon( - canvas, state->player.x, state->player.y, state->current_frame->frames[state->frame_idx].f); - canvas_set_bitmap_mode(canvas, false); -} - -static bool item_screen_bounds_x(int32_t pos) { - return pos > -SCREEN_WIDTH && pos < (SCREEN_WIDTH * 2); -} -static bool item_screen_bounds_y(int32_t pos) { - return pos > -SCREEN_HEIGHT * 2 && pos < (SCREEN_HEIGHT * 2); -} - -void dolphin_scene_render(SceneState* state, Canvas* canvas, uint32_t t) { - furi_assert(state); - furi_assert(canvas); - - canvas_set_font(canvas, FontSecondary); - canvas_set_color(canvas, ColorBlack); - const Item** current_scene = get_scene(state); - - for(uint8_t l = 0; l < LAYERS; l++) { - for(uint8_t i = 0; i < ItemsEnumTotal; i++) { - int32_t item_pos_X = (current_scene[i]->pos.x - state->player_global.x); - int32_t item_pos_Y = (current_scene[i]->pos.y - state->player_global.y); - - if(item_screen_bounds_x(item_pos_X) && item_screen_bounds_y(item_pos_Y)) { - if(l == current_scene[i]->layer) { - if(current_scene[i]->draw) { - current_scene[i]->draw(canvas, state); - } - } - } - } - - if(l == DOLPHIN_LAYER) dolphin_scene_render_dolphin(state, canvas); - } -} - -void dolphin_scene_render_state(SceneState* state, Canvas* canvas) { - furi_assert(state); - furi_assert(canvas); - - char buf[64]; - - canvas_set_font(canvas, FontSecondary); - canvas_set_color(canvas, ColorBlack); - - // dolphin_scene_debug - if(state->debug) { - sprintf( - buf, - "%d:%d %d/%dP%dL%d T%d-%d", - state->frame_idx, - state->current_frame->frames[2].f == NULL ? 2 : 3, - state->frame_group, - state->frame_type, - state->frame_pending, - state->last_group, - state->transition_pending, - state->transition); - canvas_draw_str(canvas, 0, 13, buf); - } - if(state->action == INTERACT) scene_activate_item_callback(state, canvas); -} \ No newline at end of file diff --git a/assets/compiled/assets_icons.c b/assets/compiled/assets_icons.c index f76f05c9..8a2d5b35 100644 --- a/assets/compiled/assets_icons.c +++ b/assets/compiled/assets_icons.c @@ -2,42 +2,6 @@ #include -const uint8_t _A_FX_Sitting_40x27_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x7C,0x08,0x00,0x00,0x00,0x02,0x09,0x00,0x00,0x00,0x3E,0x08,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0xE0,0x0F,0x05,0x00,0x00,0x5F,0x05,0x02,0x00,0xE0,0xAA,0x4A,0x02,0x00,0x18,0x55,0x45,0x04,0x00,0x04,0x00,0x80,0x05,0x00,0x82,0xFF,0x7F,0x05,0xFC,0x79,0x00,0x00,0x06,0x18,0x04,0x00,0x00,0x04,0x60,0x02,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,}; -const uint8_t _A_FX_Sitting_40x27_1[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x7C,0x08,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x3E,0x08,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0xE0,0x0F,0x05,0x00,0x00,0x5F,0x05,0x02,0x00,0xE0,0xAA,0x4A,0x02,0x00,0x18,0x55,0x45,0x04,0x00,0x04,0x00,0x80,0x05,0x00,0x82,0xFF,0x7F,0x05,0xFC,0x79,0x00,0x00,0x06,0x18,0x04,0x00,0x00,0x04,0x60,0x02,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,}; -const uint8_t *_A_FX_Sitting_40x27[] = {_A_FX_Sitting_40x27_0,_A_FX_Sitting_40x27_1}; - -const uint8_t _A_MDIB_32x32_0[] = {0x00,0x80,0x0F,0x00,0x00,0xC0,0xFF,0x01,0x00,0xE0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDIB_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xE0,0xFF,0x01,0x00,0xE0,0xFF,0x03,0x00,0xE0,0xFF,0x03,0x00,0xC0,0xFF,0x07,0x00,0x80,0xFF,0x07,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDIB_32x32_2[] = {0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xE0,0xFF,0x01,0x00,0xE0,0xFF,0x03,0x00,0xE0,0xFF,0x03,0x00,0xC0,0xFF,0x07,0x00,0x80,0xFF,0x07,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDIB_32x32_3[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0xE0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF8,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t *_A_MDIB_32x32[] = {_A_MDIB_32x32_0,_A_MDIB_32x32_1,_A_MDIB_32x32_2,_A_MDIB_32x32_3}; - -const uint8_t _A_MDI_32x32_0[] = {0x00,0x80,0x0F,0x00,0x00,0x40,0xF0,0x01,0x00,0x60,0x04,0x01,0x00,0x30,0x70,0x01,0x00,0x10,0x80,0x00,0x00,0x08,0x7E,0x00,0x00,0x08,0x17,0x00,0x00,0x04,0x15,0x00,0x00,0x84,0x0A,0x00,0x00,0x42,0x09,0x00,0x00,0xAA,0x0A,0x00,0x00,0x69,0x09,0x00,0x00,0xA9,0x0A,0x00,0x00,0x69,0x0D,0x00,0x00,0xAA,0x02,0x00,0x00,0x6C,0x03,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0xA0,0x04,0x00,0x00,0x60,0x05,0x00,0x00,0x60,0x05,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDI_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xE0,0x83,0x01,0x00,0x20,0x88,0x03,0x00,0xA0,0x03,0x02,0x00,0x40,0x00,0x04,0x00,0x80,0x9F,0x04,0x00,0x00,0x62,0x09,0x00,0x00,0xC2,0x08,0x00,0x00,0x42,0x09,0x00,0x00,0xAA,0x0A,0x00,0x00,0x69,0x09,0x00,0x00,0xA9,0x0A,0x00,0x00,0x69,0x0D,0x00,0x00,0xAA,0x02,0x00,0x00,0x6C,0x03,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0xA0,0x04,0x00,0x00,0x60,0x05,0x00,0x00,0x60,0x05,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDI_32x32_2[] = {0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xE0,0x83,0x01,0x00,0x20,0x88,0x03,0x00,0xA0,0x03,0x02,0x00,0x40,0x00,0x04,0x00,0x80,0x9F,0x04,0x00,0x00,0x62,0x09,0x00,0x00,0xC2,0x08,0x00,0x00,0x42,0x09,0x00,0x00,0xAA,0x0A,0x00,0x00,0x69,0x09,0x00,0x00,0xA9,0x0A,0x00,0x00,0x69,0x0D,0x00,0x00,0xAA,0x02,0x00,0x00,0x6C,0x03,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0xA0,0x04,0x00,0x00,0x60,0x05,0x00,0x00,0x60,0x05,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t _A_MDI_32x32_3[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x60,0xF0,0x01,0x00,0x70,0x04,0x01,0x00,0x10,0x70,0x01,0x00,0x08,0x80,0x00,0x00,0x08,0x7E,0x00,0x00,0x04,0x15,0x00,0x00,0x84,0x12,0x00,0x00,0x42,0x09,0x00,0x00,0xAA,0x0A,0x00,0x00,0x69,0x09,0x00,0x00,0xA9,0x0A,0x00,0x00,0x69,0x0D,0x00,0x00,0xAA,0x02,0x00,0x00,0x6C,0x03,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0xA0,0x04,0x00,0x00,0x60,0x05,0x00,0x00,0x60,0x05,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t *_A_MDI_32x32[] = {_A_MDI_32x32_0,_A_MDI_32x32_1,_A_MDI_32x32_2,_A_MDI_32x32_3}; - -const uint8_t _A_MDWLB_32x32_0[] = {0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x80,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0x80,0xFF,0x0F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x7F,0x00,0x00,0xF8,0x7F,0x00,0x00,0xF8,0xFF,0x00,0x00,0xF8,0xFF,0x00,0x00,0xFC,0xFF,0x00,0x00,0xDC,0x7F,0x00,0x00,0xCC,0x3F,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x0F,0x00,0x00,0xC0,0x0F,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x0F,0x00,0x00,0xC0,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0D,0x00,0x00,0x00,0x09,0x00,}; -const uint8_t _A_MDWLB_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x80,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0x80,0xFF,0x0F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x7F,0x00,0x00,0xF0,0x7F,0x00,0x00,0xF0,0xFF,0x00,0x00,0xF0,0xFF,0x00,0x00,0xF8,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xD8,0x3F,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x0F,0x00,0x00,0xC0,0x0F,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0x38,0x0F,0x00,0x00,0x08,0x1C,0x00,0x00,0x04,0x10,0x00,}; -const uint8_t _A_MDWLB_32x32_2[] = {0x00,0xF0,0x01,0x00,0x80,0xFF,0x03,0x00,0x80,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xFC,0x3F,0x00,0x00,0xFC,0x7F,0x00,0x00,0xFC,0x7F,0x00,0x00,0xFE,0xFF,0x00,0x00,0xFE,0xFF,0x00,0x00,0xEE,0xFF,0x00,0x00,0xC6,0xFF,0x00,0x00,0xC2,0x7F,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x1F,0x00,0x00,0x80,0x0F,0x00,0x00,0xC0,0x0F,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xC0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x06,0x00,0x00,0xE0,0x06,0x00,0x00,0x60,0x04,0x00,}; -const uint8_t *_A_MDWLB_32x32[] = {_A_MDWLB_32x32_0,_A_MDWLB_32x32_1,_A_MDWLB_32x32_2}; - -const uint8_t _A_MDWL_32x32_0[] = {0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x80,0x0F,0x06,0x00,0x80,0x20,0x0E,0x00,0x80,0x0E,0x08,0x00,0x00,0x01,0x10,0x00,0x00,0x7E,0x10,0x00,0x00,0xA8,0x20,0x00,0x00,0x48,0x21,0x00,0x00,0xA8,0x42,0x00,0x00,0x48,0x55,0x00,0x00,0xA8,0x96,0x00,0x00,0x48,0x95,0x00,0x00,0xA4,0x96,0x00,0x00,0x54,0x55,0x00,0x00,0xCC,0x36,0x00,0x00,0x40,0x25,0x00,0x00,0x80,0x16,0x00,0x00,0x80,0x15,0x00,0x00,0x80,0x12,0x00,0x00,0x80,0x11,0x00,0x00,0x80,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x0A,0x00,0x00,0x40,0x0A,0x00,0x00,0x80,0x0A,0x00,0x00,0x80,0x0D,0x00,0x00,0x00,0x09,0x00,}; -const uint8_t _A_MDWL_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x80,0x0F,0x06,0x00,0x80,0x20,0x0E,0x00,0x80,0x0E,0x08,0x00,0x00,0x01,0x10,0x00,0x00,0x7E,0x10,0x00,0x00,0xA8,0x20,0x00,0x00,0x48,0x21,0x00,0x00,0x88,0x42,0x00,0x00,0x50,0x55,0x00,0x00,0x90,0x96,0x00,0x00,0x50,0x95,0x00,0x00,0x88,0x96,0x00,0x00,0x68,0x55,0x00,0x00,0xD8,0x36,0x00,0x00,0x40,0x25,0x00,0x00,0x80,0x16,0x00,0x00,0x80,0x15,0x00,0x00,0x80,0x12,0x00,0x00,0x80,0x11,0x00,0x00,0x80,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x20,0x04,0x00,0x00,0x20,0x04,0x00,0x00,0x10,0x09,0x00,0x00,0xD0,0x08,0x00,0x00,0x38,0x0B,0x00,0x00,0x08,0x1C,0x00,0x00,0x04,0x10,0x00,}; -const uint8_t _A_MDWL_32x32_2[] = {0x00,0xF0,0x01,0x00,0x80,0x0F,0x02,0x00,0x80,0x20,0x06,0x00,0x80,0x0E,0x0C,0x00,0x00,0x01,0x08,0x00,0x00,0x7E,0x10,0x00,0x00,0xE8,0x10,0x00,0x00,0xA8,0x20,0x00,0x00,0x44,0x21,0x00,0x00,0xA4,0x42,0x00,0x00,0x54,0x55,0x00,0x00,0xA2,0x96,0x00,0x00,0x52,0xA5,0x00,0x00,0xAA,0xA6,0x00,0x00,0x46,0xA5,0x00,0x00,0xC2,0x66,0x00,0x00,0x40,0x25,0x00,0x00,0x80,0x16,0x00,0x00,0x80,0x15,0x00,0x00,0x80,0x12,0x00,0x00,0x80,0x11,0x00,0x00,0x80,0x08,0x00,0x00,0x40,0x08,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x40,0x04,0x00,0x00,0x20,0x05,0x00,0x00,0xA0,0x06,0x00,0x00,0xA0,0x06,0x00,0x00,0x60,0x04,0x00,}; -const uint8_t *_A_MDWL_32x32[] = {_A_MDWL_32x32_0,_A_MDWL_32x32_1,_A_MDWL_32x32_2}; - -const uint8_t _A_MDWRB_32x32_0[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0xE0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF8,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFF,0x3F,0x00,0x00,0xFE,0x3B,0x00,0x00,0xFC,0x33,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xF0,0x03,0x00,0x00,0xF0,0x03,0x00,0x00,0xF0,0x01,0x00,0x00,0xB0,0x01,0x00,0x00,0x90,0x00,0x00,}; -const uint8_t _A_MDWRB_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0xE0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF8,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFC,0x1B,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x1C,0x00,0x00,0x38,0x10,0x00,0x00,0x08,0x20,0x00,}; -const uint8_t _A_MDWRB_32x32_2[] = {0x00,0x80,0x0F,0x00,0x00,0xC0,0xFF,0x01,0x00,0xE0,0xFF,0x01,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xFF,0x00,0x00,0xF8,0x7F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x3F,0x00,0x00,0xFE,0x3F,0x00,0x00,0xFE,0x3F,0x00,0x00,0xFF,0x7F,0x00,0x00,0xFF,0x7F,0x00,0x00,0xFF,0x77,0x00,0x00,0xFF,0x63,0x00,0x00,0xFE,0x43,0x00,0x00,0xFC,0x03,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x03,0x00,0x00,0xE0,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x60,0x07,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t *_A_MDWRB_32x32[] = {_A_MDWRB_32x32_0,_A_MDWRB_32x32_1,_A_MDWRB_32x32_2}; - -const uint8_t _A_MDWR_32x32_0[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x60,0xF0,0x01,0x00,0x70,0x04,0x01,0x00,0x10,0x70,0x01,0x00,0x08,0x80,0x00,0x00,0x08,0x7E,0x00,0x00,0x04,0x15,0x00,0x00,0x84,0x12,0x00,0x00,0x42,0x15,0x00,0x00,0xAA,0x12,0x00,0x00,0x69,0x15,0x00,0x00,0xA9,0x12,0x00,0x00,0x69,0x25,0x00,0x00,0xAA,0x2A,0x00,0x00,0x6C,0x33,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x50,0x02,0x00,0x00,0x50,0x02,0x00,0x00,0x50,0x01,0x00,0x00,0xB0,0x01,0x00,0x00,0x90,0x00,0x00,}; -const uint8_t _A_MDWR_32x32_1[] = {0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x60,0xF0,0x01,0x00,0x70,0x04,0x01,0x00,0x10,0x70,0x01,0x00,0x08,0x80,0x00,0x00,0x08,0x7E,0x00,0x00,0x04,0x15,0x00,0x00,0x84,0x12,0x00,0x00,0x42,0x11,0x00,0x00,0xAA,0x0A,0x00,0x00,0x69,0x09,0x00,0x00,0xA9,0x0A,0x00,0x00,0x69,0x11,0x00,0x00,0xAA,0x16,0x00,0x00,0x6C,0x1B,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x04,0x00,0x00,0x20,0x04,0x00,0x00,0x90,0x08,0x00,0x00,0x10,0x0B,0x00,0x00,0xD0,0x1C,0x00,0x00,0x38,0x10,0x00,0x00,0x08,0x20,0x00,}; -const uint8_t _A_MDWR_32x32_2[] = {0x00,0x80,0x0F,0x00,0x00,0x40,0xF0,0x01,0x00,0x60,0x04,0x01,0x00,0x30,0x70,0x01,0x00,0x10,0x80,0x00,0x00,0x08,0x7E,0x00,0x00,0x08,0x17,0x00,0x00,0x04,0x15,0x00,0x00,0x84,0x22,0x00,0x00,0x42,0x25,0x00,0x00,0xAA,0x2A,0x00,0x00,0x69,0x45,0x00,0x00,0xA5,0x4A,0x00,0x00,0x65,0x55,0x00,0x00,0xA5,0x62,0x00,0x00,0x66,0x43,0x00,0x00,0xA4,0x02,0x00,0x00,0x68,0x01,0x00,0x00,0xA8,0x01,0x00,0x00,0x48,0x01,0x00,0x00,0x88,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0x20,0x02,0x00,0x00,0xA0,0x04,0x00,0x00,0x60,0x05,0x00,0x00,0x60,0x05,0x00,0x00,0x20,0x06,0x00,}; -const uint8_t *_A_MDWR_32x32[] = {_A_MDWR_32x32_0,_A_MDWR_32x32_1,_A_MDWR_32x32_2}; - const uint8_t _A_WatchingTV_128x64_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x11,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x11,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x09,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x20,0x06,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x10,0x00,0x20,0x06,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x10,0x00,0x20,0x0A,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x20,0x11,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x00,0x00,0x00,0x40,0x00,0xA0,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x00,0x50,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x30,0x80,0x7F,0xE0,0x00,0x00,0x80,0x03,0x80,0x0F,0x20,0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x80,0x9F,0x00,0x00,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x18,0x00,0x00,0x80,0x00,0x00,0x80,0x03,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x14,0x00,0x00,0x40,0x00,0x00,0x80,0x03,0xE0,0x3F,0x60,0x00,0x00,0x00,0x00,0x08,0x24,0x00,0x00,0x40,0x00,0x00,0xC0,0x01,0x20,0x67,0x40,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x00,0x30,0x00,0x00,0x60,0x00,0x60,0xA7,0xA0,0x00,0x00,0x00,0x00,0xF8,0x47,0x00,0x00,0x0C,0x00,0x00,0x18,0x00,0xC0,0x53,0xC1,0x00,0x00,0x00,0x00,0x06,0x58,0x00,0x00,0x03,0x00,0x00,0x0C,0x00,0x80,0xAF,0xA0,0x00,0x00,0x00,0x00,0x01,0x60,0x00,0xF0,0x00,0x00,0x00,0x06,0x00,0x00,0x50,0xD0,0x00,0x00,0x00,0x80,0x00,0x40,0xF8,0x0F,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x40,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD0,0x00,0x00,0xFF,0xFF,0x0F,0x80,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x03,0xA8,0x00,0x00,0x55,0x55,0xF5,0xFF,0xFF,0xFF,0x0F,0x00,0xAE,0x00,0x00,0x60,0x04,0xD4,0x0F,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0xD5,0x00,0x00,0x1C,0x00,0x78,0x35,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x0F,0xC0,0xAA,0xFF,0xE1,0x03,0x00,0x0C,0x6A,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xEA,0x0A,0x60,0x81,0x01,0x1E,0x60,0x00,0x06,0xD4,0x00,0x55,0x55,0x55,0x55,0x55,0x75,0x0D,0x20,0x00,0x03,0x00,0x10,0x00,0x03,0xA8,0x01,0xAA,0xAA,0xAA,0xAA,0xAA,0xAE,0x0A,0x20,0x00,0x0F,0x00,0x2E,0x80,0x01,0x50,0x03,0x55,0x55,0x55,0x55,0x55,0x57,0x3D,0x3E,0x80,0xF5,0xFF,0x05,0x40,0x01,0xA8,0x02,0xAA,0xAA,0xAA,0xAA,0xEA,0xAA,0xCA,0x21,0x80,0xAA,0xAA,0x02,0xA0,0x00,0x50,0x03,0xFF,0xFF,0xFF,0xFF,0x7F,0x55,0x0D,0x20,0x80,0x55,0x55,0x01,0xD0,0x00,0xE8,0x07,0x88,0x88,0x88,0x88,0xB8,0xAA,0x0A,0x20,0x40,0xAA,0x02,0x00,0xAA,0x00,0x18,0x18,0x55,0x55,0x55,0x55,0x57,0x55,0x0D,0x20,0x40,0x00,0x00,0x00,0x55,0x00,0x04,0x20,0x22,0x22,0x22,0xA2,0xB3,0xAA,0x0A,0x40,0x40,0x00,0x00,0x80,0x6A,0x00,0x02,0x20,0x55,0x55,0x55,0x75,0x55,0x55,0x0D,0x80,0x40,0x00,0x00,0x40,0x7D,0x00,0x01,0x40,0x88,0x88,0x88,0x98,0xB8,0xAA,0x0A,0x00,0x21,0x00,0x00,0xA0,0x47,0x80,0x00,0x40,0x55,0x55,0x55,0x57,0x55,0x55,0x0D,0x00,0x3E,0x00,0x00,0xD0,0x40,0x80,0x00,0x40,0xFF,0xFF,0xFF,0x23,0xB2,0xAA,0x0A,0x00,0x00,0x00,0x00,0x6A,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x40,0x35,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x88,0xB8,0xAA,0x0A,0x00,0x00,0x00,0xA0,0x1A,0x40,0x20,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x54,0x15,0x40,0x20,0x00,0x80,0x31,0xFC,0x8F,0x22,0xB2,0xAA,0x0A,0x00,0x00,0x80,0xAA,0x0A,0x40,0x10,0x00,0x80,0x49,0x02,0x90,0x55,0x55,0x55,0x0D,0x00,0x00,0x50,0x55,0x0D,0x80,0x10,0x00,0x80,0x49,0x02,0x90,0x88,0xB8,0xAA,0x2A,0x00,0x80,0xAA,0xAA,0x0E,0x80,0x08,0x00,0x80,0x31,0x02,0x90,0x55,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x01,0x00,0x07,0x00,0x80,0x01,0x02,0x90,0x22,0xB2,0xAA,0xF6,0xAA,0xEA,0xFF,0xFF,0x01,0x00,0x04,0x00,0x40,0x11,0xFC,0x8F,0x55,0x55,0x55,0x85,0xD7,0x1F,0x00,0x00,0x1E,0x00,0x04,0x00,0x40,0x29,0x00,0x80,0x88,0xB8,0xAA,0x06,0x6C,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x29,0x00,0x80,0x55,0x55,0x55,0x05,0x38,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x20,0x15,0x00,0x80,0x22,0xB2,0xAA,0x06,0x10,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x20,0x0B,0x00,0x80,0x55,0x55,0x55,0x05,0x10,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x10,}; const uint8_t _A_WatchingTV_128x64_1[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xA0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x02,0x00,0xE0,0x10,0x00,0x00,0x00,0x00,0x00,0xC0,0x55,0x75,0x00,0x00,0x00,0x00,0x02,0x00,0xA0,0x10,0x00,0x00,0x00,0x00,0x00,0xA0,0xAA,0xAA,0x00,0x00,0x00,0x00,0x04,0x00,0x50,0x09,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x50,0x01,0x00,0x00,0x00,0x08,0x00,0xB0,0x05,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xA0,0x02,0x00,0x00,0x00,0x10,0x00,0x50,0x02,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x05,0x00,0x00,0x00,0x10,0x00,0xB0,0x07,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x80,0x0A,0x00,0x00,0x00,0x20,0x00,0x50,0x09,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x15,0x00,0x00,0x00,0x40,0x00,0xB0,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x1A,0x00,0x00,0x00,0x80,0x00,0x58,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x34,0x00,0x00,0x00,0x80,0x00,0x28,0xC0,0xFF,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x01,0x38,0x00,0x00,0x83,0x03,0x00,0x80,0x03,0x80,0x0F,0x30,0x00,0x00,0x00,0x00,0x02,0x18,0x00,0x00,0xFC,0x02,0x00,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x18,0x00,0x00,0x00,0x02,0x00,0x80,0x03,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x04,0x14,0x00,0x00,0x00,0x01,0x00,0x80,0x03,0xE0,0xBF,0x60,0x00,0x00,0x00,0x00,0x08,0x24,0x00,0x00,0x80,0x00,0x00,0xC0,0x01,0xE0,0x67,0x51,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x00,0x40,0x00,0x00,0x60,0x00,0x60,0xA7,0xA0,0x00,0x00,0x00,0x00,0xF8,0x47,0x00,0x00,0x30,0x00,0x00,0x18,0x00,0xC0,0x53,0xD1,0x00,0x00,0x00,0x00,0x06,0x58,0x00,0x00,0x0C,0x00,0x00,0x0C,0x00,0x80,0xAF,0xA0,0x00,0x00,0x00,0x00,0x01,0x60,0xF0,0xFF,0x03,0x00,0x00,0x06,0x00,0x00,0x50,0xD0,0x00,0x00,0x00,0x80,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xA8,0x00,0x00,0x00,0x40,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD4,0x00,0x00,0xFF,0xFF,0x0F,0x80,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x03,0xAA,0x00,0x00,0x55,0x55,0xF5,0xFF,0xFF,0xFF,0x0F,0x00,0xAE,0x00,0x00,0x60,0x04,0xD4,0x0F,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0xD5,0x00,0x00,0x1C,0x00,0x7A,0x35,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x0F,0xC0,0xAA,0xFF,0xE1,0x03,0x00,0xAD,0x6A,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xEA,0x0A,0x60,0xD5,0x01,0x1E,0x60,0x80,0x56,0xD5,0x00,0x55,0x55,0x55,0x55,0x55,0x75,0x0D,0xA0,0xAA,0x03,0x00,0x50,0x40,0x83,0xAA,0x01,0xAA,0xAA,0xAA,0xAA,0xAA,0xAE,0x0A,0x60,0x40,0x0F,0x00,0x2E,0xA0,0x01,0x55,0x03,0x55,0x55,0x55,0x55,0x55,0x57,0x3D,0x3E,0x80,0xF5,0xFF,0x15,0x50,0x01,0xAA,0x02,0xAA,0xAA,0xAA,0xAA,0xEA,0xAA,0xCA,0x21,0x80,0xAA,0xAA,0x0A,0xA8,0x00,0x55,0x03,0xFF,0xFF,0xFF,0xFF,0x7F,0x55,0x0D,0x20,0x80,0x55,0x55,0x05,0xD5,0x00,0xEA,0x07,0x88,0x88,0x88,0x88,0xB8,0xAA,0x0A,0x20,0xC0,0xAA,0xAA,0x82,0xAA,0x00,0x1D,0x18,0x55,0x55,0x55,0x55,0x57,0x55,0x0D,0x20,0x40,0x55,0x05,0x40,0x55,0x00,0x06,0x20,0x22,0x22,0x22,0xA2,0xB3,0xAA,0x0A,0x40,0x40,0x00,0x00,0xA0,0x6A,0x00,0x03,0x20,0x55,0x55,0x55,0x75,0x55,0x55,0x0D,0x80,0x40,0x00,0x00,0x50,0x7D,0x00,0x01,0x40,0x88,0x88,0x88,0x98,0xB8,0xAA,0x0A,0x00,0x21,0x00,0x00,0xA8,0x47,0x80,0x00,0x40,0x55,0x55,0x55,0x57,0x55,0x55,0x0D,0x00,0x3E,0x00,0x00,0xD5,0x40,0x80,0x00,0x40,0xFF,0xFF,0xFF,0x23,0xB2,0xAA,0x0A,0x00,0x00,0x00,0xA0,0x6A,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x50,0x35,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x88,0xB8,0xAA,0x0A,0x00,0x00,0x00,0xAA,0x1A,0x40,0x20,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x40,0x55,0x15,0x40,0x20,0x00,0x80,0x31,0xFC,0x8F,0x22,0xB2,0xAA,0x0A,0x00,0x00,0xA8,0xAA,0x0A,0x40,0x10,0x00,0x80,0x49,0x02,0x90,0x55,0x55,0x55,0x1D,0x00,0x40,0x55,0x55,0x0D,0x80,0x10,0x00,0x80,0x49,0x02,0x90,0x88,0xB8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0x08,0x00,0x80,0x31,0x02,0x90,0x55,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x01,0x00,0x07,0x00,0x80,0x01,0x02,0x90,0x22,0xB2,0xAA,0xF6,0xAA,0xEA,0xFF,0xFF,0x01,0x00,0x04,0x00,0x40,0x11,0xFC,0x8F,0x55,0x55,0x55,0x85,0xD7,0x1F,0x00,0x00,0x1E,0x00,0x04,0x00,0x40,0x29,0x00,0x80,0x88,0xB8,0xAA,0x06,0x6C,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x29,0x00,0x80,0x55,0x55,0x55,0x05,0x38,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x20,0x15,0x00,0x80,0x22,0xB2,0xAA,0x06,0x10,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x20,0x0B,0x00,0x80,0x55,0x55,0x55,0x05,0x10,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x10,}; const uint8_t _A_WatchingTV_128x64_2[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x18,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x14,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x02,0x00,0x1C,0x10,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x60,0x00,0x00,0x00,0x00,0x02,0x00,0x16,0x10,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x04,0x00,0x2A,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x36,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x10,0x00,0x62,0x02,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x10,0x00,0xC6,0x03,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x0A,0x07,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x00,0x00,0x00,0x40,0x00,0x86,0x08,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x00,0x4A,0x08,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x24,0x08,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x01,0x3C,0xF0,0x3F,0x80,0x01,0x00,0x80,0x03,0x80,0x0F,0x20,0x00,0x00,0x00,0x00,0x02,0x18,0x00,0xC0,0x60,0x01,0x00,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x38,0x00,0x00,0x1F,0x01,0x00,0x80,0x03,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x14,0x00,0x00,0x80,0x00,0x00,0x80,0x03,0xE0,0x3F,0x60,0x00,0x00,0x00,0x00,0x08,0x14,0x00,0x00,0x40,0x00,0x00,0xC0,0x01,0x20,0x67,0x40,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x00,0x20,0x00,0x00,0x60,0x00,0x60,0xA7,0xA0,0x00,0x00,0x00,0x00,0xF8,0x27,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0xC0,0x53,0xC1,0x00,0x00,0x00,0x00,0x06,0x58,0x00,0x00,0x06,0x00,0x00,0x0C,0x00,0x80,0xAF,0xA0,0x00,0x00,0x00,0x00,0x01,0x60,0x80,0xFF,0x01,0x00,0x00,0x06,0x00,0x00,0x50,0xD0,0x00,0x00,0x00,0x80,0x00,0x40,0x78,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x40,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xD0,0x00,0x00,0xFF,0xFF,0x0F,0x80,0x04,0x00,0x00,0x00,0xF0,0x00,0x00,0x80,0x03,0xA8,0x00,0x00,0x55,0x55,0xF5,0xFF,0xFF,0xFF,0x0F,0x00,0xAE,0x00,0x00,0x60,0x04,0xD4,0x0F,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x0E,0x80,0xD5,0x00,0x00,0x1C,0x00,0x78,0x35,0x00,0x55,0x55,0x55,0x55,0x55,0x55,0x0F,0xC0,0xAA,0xFF,0xE1,0x03,0x00,0x0C,0x6A,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xEA,0x0A,0x60,0x81,0x01,0x1E,0x60,0x00,0x06,0xD4,0x00,0x55,0x55,0x55,0x55,0x55,0x75,0x0D,0x20,0x00,0x03,0x00,0x10,0x00,0x03,0xA8,0x01,0xAA,0xAA,0xAA,0xAA,0xAA,0xAE,0x0A,0x20,0x00,0x0F,0x00,0x2E,0x80,0x01,0x50,0x03,0x55,0x55,0x55,0x55,0x55,0x57,0x3D,0x3E,0x80,0xF5,0xFF,0x05,0x40,0x01,0xA8,0x02,0xAA,0xAA,0xAA,0xAA,0xEA,0xAA,0xCA,0x21,0x80,0xAA,0xAA,0x02,0xA0,0x00,0x50,0x03,0xFF,0xFF,0xFF,0xFF,0x7F,0x55,0x0D,0x20,0x80,0x55,0x55,0x01,0xD0,0x00,0xE8,0x07,0x88,0x88,0x88,0x88,0xB8,0xAA,0x0A,0x20,0x40,0xAA,0x02,0x00,0xAA,0x00,0x18,0x18,0x55,0x55,0x55,0x55,0x57,0x55,0x0D,0x20,0x40,0x00,0x00,0x00,0x55,0x00,0x04,0x20,0x22,0x22,0x22,0xA2,0xB3,0xAA,0x0A,0x40,0x40,0x00,0x00,0x80,0x6A,0x00,0x02,0x20,0x55,0x55,0x55,0x75,0x55,0x55,0x0D,0x80,0x40,0x00,0x00,0x40,0x7D,0x00,0x01,0x40,0x88,0x88,0x88,0x98,0xB8,0xAA,0x0A,0x00,0x21,0x00,0x00,0xA0,0x47,0x80,0x00,0x40,0x55,0x55,0x55,0x57,0x55,0x55,0x0D,0x00,0x3E,0x00,0x00,0xD0,0x40,0x80,0x00,0x40,0xFF,0xFF,0xFF,0x23,0xB2,0xAA,0x0A,0x00,0x00,0x00,0x00,0x6A,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x40,0x35,0x40,0x40,0x00,0x80,0x01,0x00,0x80,0x88,0xB8,0xAA,0x0A,0x00,0x00,0x00,0xA0,0x1A,0x40,0x20,0x00,0x80,0x01,0x00,0x80,0x55,0x55,0x55,0x0D,0x00,0x00,0x00,0x54,0x15,0x40,0x20,0x00,0x80,0x31,0xFC,0x8F,0x22,0xB2,0xAA,0x0A,0x00,0x00,0x80,0xAA,0x0A,0x40,0x10,0x00,0x80,0x49,0x02,0x90,0x55,0x55,0x55,0x0D,0x00,0x00,0x50,0x55,0x0D,0x80,0x10,0x00,0x80,0x49,0x02,0x90,0x88,0xB8,0xAA,0x2A,0x00,0x80,0xAA,0xAA,0x0E,0x80,0x08,0x00,0x80,0x31,0x02,0x90,0x55,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x01,0x00,0x07,0x00,0x80,0x01,0x02,0x90,0x22,0xB2,0xAA,0xF6,0xAA,0xEA,0xFF,0xFF,0x01,0x00,0x04,0x00,0x40,0x11,0xFC,0x8F,0x55,0x55,0x55,0x85,0xD7,0x1F,0x00,0x00,0x1E,0x00,0x04,0x00,0x40,0x29,0x00,0x80,0x88,0xB8,0xAA,0x06,0x6C,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x20,0x29,0x00,0x80,0x55,0x55,0x55,0x05,0x38,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x20,0x15,0x00,0x80,0x22,0xB2,0xAA,0x06,0x10,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x20,0x0B,0x00,0x80,0x55,0x55,0x55,0x05,0x10,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x10,}; @@ -98,15 +62,6 @@ const uint8_t *_I_ButtonRight_4x7[] = {_I_ButtonRight_4x7_0}; const uint8_t _I_ButtonCenter_7x7_0[] = {0x1C,0x22,0x5D,0x5D,0x5D,0x22,0x1C,}; const uint8_t *_I_ButtonCenter_7x7[] = {_I_ButtonCenter_7x7_0}; -const uint8_t _I_FX_SittingB_40x27_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0xFF,0xFF,0x03,0x00,0xE0,0xFF,0xFF,0x03,0x00,0xF8,0xFF,0xFF,0x07,0x00,0xFC,0xFF,0xFF,0x07,0x00,0xFE,0xFF,0x7F,0x07,0xFC,0x7F,0x00,0x00,0x06,0xF8,0x07,0x00,0x00,0x04,0xE0,0x03,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,}; -const uint8_t *_I_FX_SittingB_40x27[] = {_I_FX_SittingB_40x27_0}; - -const uint8_t _I_BigGames_24x24_0[] = {0x00,0x3E,0x00,0x00,0x41,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x41,0x00,0x00,0x3E,0x00,0x00,0x14,0x00,0x00,0x14,0x00,0x00,0x14,0x00,0xF8,0xF7,0x1F,0x08,0x14,0x10,0x84,0xF7,0x20,0xC4,0xF7,0x21,0xC2,0xFF,0x41,0x02,0x7F,0x40,0x01,0x00,0x80,0xFF,0xFF,0xFF,0x55,0x55,0xD5,0xAB,0xAA,0xAA,0x55,0x55,0xD5,0xFF,0xFF,0xFF,}; -const uint8_t *_I_BigGames_24x24[] = {_I_BigGames_24x24_0}; - -const uint8_t _I_BigProfile_24x24_0[] = {0x00,0x18,0x00,0x00,0x24,0x00,0x00,0x42,0x00,0x00,0x5A,0x00,0x00,0x5A,0x00,0x00,0x42,0x00,0x00,0x42,0x00,0xFE,0xFF,0x7F,0x01,0x00,0x80,0xF1,0x00,0x80,0xF9,0xF1,0xBF,0xF9,0x01,0x80,0xF9,0xF1,0xBF,0xF9,0x01,0x80,0xF1,0xB0,0x83,0x61,0x00,0x80,0x61,0xF0,0xBC,0xF1,0x00,0x80,0x09,0x01,0x80,0x05,0xF2,0xBB,0xFD,0x03,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0xFE,0xFF,0x7F,}; -const uint8_t *_I_BigProfile_24x24[] = {_I_BigProfile_24x24_0}; - const uint8_t _I_DolphinOkay_41x43_0[] = {0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x1E,0xE0,0x00,0x00,0x00,0x80,0x01,0x00,0x07,0x00,0x00,0x60,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x80,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x3E,0x00,0x00,0x80,0x00,0x00,0x7D,0x00,0x00,0x80,0x00,0x80,0xFE,0x00,0x00,0x80,0x00,0x40,0xE2,0x01,0x00,0x80,0x00,0x40,0xF2,0x01,0x00,0x80,0x00,0x40,0xFE,0x01,0x00,0x80,0x00,0x40,0xFE,0x05,0x00,0x80,0x00,0x40,0x7C,0x0B,0x00,0x80,0x00,0x80,0x80,0x15,0x00,0x80,0x00,0x00,0xFD,0x0A,0x00,0x00,0x01,0x00,0x02,0x15,0x00,0x00,0x01,0x00,0x01,0x0A,0x00,0x00,0xE1,0x07,0x00,0x06,0x00,0x80,0x1F,0x00,0x00,0x02,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x10,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x80,0x03,0x00,0x00,0x01,0x00,0x70,0x00,0x00,0x00,0xF9,0x03,0x0F,0x00,0x00,0x00,0x06,0xFC,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0xC0,0x01,0x00,0x08,0x00,0x00,0x78,0x00,0x00,0x30,0x00,0xF8,0xAF,0x00,0x00,0xC0,0xFF,0xFF,0x57,0x00,0x00,0x00,0xF8,0xBF,0x2A,0x00,0x00,0x00,0xF8,0x57,0x15,0x00,0x00,0x00,0xF8,0xAB,0x02,0x00,0x00,}; const uint8_t *_I_DolphinOkay_41x43[] = {_I_DolphinOkay_41x43_0}; @@ -137,54 +92,9 @@ const uint8_t *_I_DolphinFirstStart7_61x51[] = {_I_DolphinFirstStart7_61x51_0}; const uint8_t _I_Flipper_young_80x60_0[] = {0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x83,0x21,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x06,0xC3,0xD8,0x01,0x00,0x00,0x00,0x00,0xE0,0x3B,0x0C,0x86,0x31,0x07,0x00,0x00,0x00,0x00,0xC0,0x21,0x10,0x0C,0x21,0x0C,0x00,0x00,0x00,0x00,0x00,0xE7,0x60,0x18,0x62,0x14,0x00,0x00,0x00,0x00,0x00,0x8C,0xC1,0x10,0x46,0x24,0x00,0x00,0x00,0x00,0x00,0x18,0xC7,0x3F,0xC4,0x4C,0x00,0x00,0x00,0x00,0x00,0x10,0xFE,0xF3,0x87,0xC8,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x9C,0x50,0x01,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xE0,0xD0,0x02,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x80,0x93,0x02,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x9C,0x04,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x98,0x05,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x20,0x0D,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x40,0x15,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x15,0x00,0xF0,0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x35,0x00,0x1E,0x38,0x0C,0x00,0x00,0x00,0x00,0x00,0x26,0x00,0x03,0xE0,0x04,0x00,0x00,0x00,0x00,0x00,0x24,0x80,0x01,0x80,0x07,0x00,0x00,0xF0,0xFF,0x01,0x5C,0x80,0x0F,0x00,0x04,0x00,0x00,0x18,0x00,0x03,0x48,0x80,0x1F,0x00,0x08,0x00,0x00,0xCC,0x7F,0x06,0x50,0x00,0x7F,0x00,0x30,0x00,0x00,0x26,0x80,0x0C,0x60,0x00,0xFE,0x01,0x40,0x00,0x00,0x13,0x00,0x09,0x40,0x00,0xFC,0x07,0x80,0x00,0x00,0x89,0x3F,0x12,0x80,0x00,0xF8,0x0F,0x00,0x03,0x80,0xC5,0x7F,0x14,0x00,0x00,0xF0,0x3F,0x00,0x0C,0x80,0xE4,0xFF,0x24,0x00,0x00,0xE0,0x7F,0x00,0x10,0x80,0xE2,0xFF,0x28,0x00,0x00,0xC0,0xFF,0x01,0x60,0x80,0xF2,0xE7,0x29,0x00,0x00,0x80,0xFF,0x03,0x80,0x81,0xF2,0xE7,0x29,0x00,0x00,0x00,0xFF,0x07,0x00,0x8E,0xF2,0xFF,0x29,0x00,0x00,0x00,0xFE,0x0F,0x00,0xB8,0xF2,0xFE,0x29,0x00,0x00,0x00,0xFC,0x1F,0x00,0xE0,0xF2,0xFC,0x29,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0xFE,0xF9,0x69,0x01,0x00,0x00,0xF0,0x7F,0x00,0x00,0x82,0xFF,0xA4,0x02,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x7E,0x54,0x05,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x78,0xB2,0x0A,0xE0,0x01,0x80,0xFF,0x03,0x00,0x38,0x40,0x59,0x15,0x70,0xFE,0xFF,0xFF,0x0F,0x00,0xE0,0x80,0xA9,0x0A,0x90,0x00,0xF8,0x80,0x1F,0x00,0x80,0x01,0x57,0x15,0x10,0x03,0x0E,0x00,0x3F,0x00,0x00,0x03,0xAA,0x0A,0x10,0x9C,0x07,0x00,0x7C,0x00,0x00,0x02,0x54,0x15,0x20,0xF0,0x01,0x00,0xF8,0x01,0x06,0x06,0xA8,0x0A,0x20,0x00,0x0F,0x00,0xFC,0x0F,0x03,0x00,0x50,0x15,0x40,0x00,0xF8,0xFF,0xFF,0xFF,0x00,0x00,0xA0,0x0A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x15,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x0A,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x05,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,}; const uint8_t *_I_Flipper_young_80x60[] = {_I_Flipper_young_80x60_0}; -const uint8_t _I_BigBurger_24x24_0[] = {0xE0,0xFF,0x07,0x18,0x00,0x18,0x04,0x41,0x20,0x02,0x08,0x42,0x12,0x00,0x48,0x81,0x20,0x80,0x01,0x00,0x80,0x01,0x00,0x80,0xFE,0xFF,0x7F,0xFE,0xFF,0x77,0x31,0x18,0x8C,0x87,0xC3,0xE1,0x7C,0x3C,0x3E,0x04,0x00,0x20,0xFE,0xFF,0x7F,0x01,0x00,0x80,0xFF,0x1F,0xF8,0xAA,0x6A,0x6E,0x56,0xD5,0x55,0xFE,0xFF,0x7F,0x01,0x00,0x80,0x01,0x00,0x80,0x02,0x00,0x40,0xFC,0xFF,0x3F,}; -const uint8_t *_I_BigBurger_24x24[] = {_I_BigBurger_24x24_0}; - -const uint8_t _I_FX_Bang_32x6_0[] = {0x02,0x83,0xC0,0xC0,0x06,0x86,0x61,0x60,0x0C,0x86,0x61,0x30,0x18,0x0C,0x31,0x18,0x30,0x08,0x10,0x0C,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_FX_Bang_32x6[] = {_I_FX_Bang_32x6_0}; - const uint8_t _I_DolphinFirstStart3_57x48_0[] = {0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x04,0x00,0x00,0xF8,0x03,0x01,0x00,0x00,0x08,0x00,0x00,0x04,0xBC,0x00,0x00,0x00,0x10,0x00,0x00,0x02,0xC0,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x02,0x00,0x38,0x40,0x00,0x00,0x02,0x00,0x04,0x00,0x3E,0x40,0x00,0x00,0xF4,0x03,0x08,0x80,0x07,0x80,0x00,0x00,0x5C,0x0D,0x10,0xE0,0x01,0x80,0x00,0x00,0xA8,0x3A,0x20,0xE0,0x00,0x00,0x01,0x00,0x58,0x55,0x00,0xC0,0x01,0x00,0x01,0x00,0xB0,0xAA,0x00,0x80,0x07,0x00,0x01,0x00,0x60,0x55,0x01,0x00,0x1E,0x00,0x01,0x0E,0xC0,0xAA,0x02,0xE0,0x5C,0x00,0x01,0x11,0x80,0x55,0x05,0x00,0xA9,0x00,0x01,0x21,0x00,0xAB,0x0A,0x00,0x56,0x07,0x01,0x41,0x00,0x56,0x15,0x00,0xEC,0x08,0x01,0x81,0x00,0xBF,0x2A,0x00,0x34,0x08,0x01,0x01,0xF1,0xC0,0x57,0x00,0x0C,0x08,0x01,0x02,0x0A,0x00,0xBE,0x00,0x04,0x08,0x01,0x02,0x06,0x00,0x78,0x83,0x02,0x04,0x01,0x02,0x0C,0x00,0xF0,0x7F,0x01,0x04,0x01,0x02,0xF4,0x01,0xFE,0x81,0x00,0x04,0x01,0x04,0x08,0xFF,0x6B,0x40,0x00,0x02,0x01,0x04,0x88,0x55,0x1D,0x40,0x00,0x02,0x01,0x04,0x50,0xAA,0x06,0x20,0x00,0x02,0x01,0x04,0x30,0xD4,0x01,0x20,0x00,0x01,0x01,0x04,0x10,0x68,0x00,0x10,0x00,0x01,0x01,0x04,0x18,0x18,0x00,0x10,0x00,0x01,0x01,0x08,0x18,0x06,0x80,0x10,0x00,0x01,0x01,0x08,0xE8,0x01,0x60,0x08,0x80,0x00,0x01,0x08,0x08,0x00,0x18,0x08,0x80,0x00,0x00,0x08,0x10,0x00,0x06,0x08,0x80,0x00,0x00,0x08,0x60,0xE0,0x01,0x08,0x80,0x00,0x00,0x08,0x80,0x1F,0x00,0x08,0x80,0x00,0x00,0x08,0x80,0x04,0x00,0x04,0x00,0x01,0x00,0x08,0x80,0x04,0x00,0x04,0x00,0x01,0x00,0x10,0x00,0x03,0x00,0x04,0x00,0x01,0x00,0x10,0x00,0x03,0x00,0x04,0x00,0x01,0x00,0x10,0x00,0x01,0x00,0x04,0x00,0x02,0x00,0x10,0x00,0x01,0x00,0x04,0x00,0x02,0x00,0x10,0x80,0x00,0x00,0x04,0x00,0x02,0x00,0x10,0x80,0x00,0x00,0x04,0x00,0x06,0x00,}; const uint8_t *_I_DolphinFirstStart3_57x48[] = {_I_DolphinFirstStart3_57x48_0}; -const uint8_t _I_blackfish_25x17_0[] = {0x00,0x0E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3F,0x80,0x01,0x80,0xFF,0xE0,0x01,0xE0,0xFF,0xF0,0x01,0xF0,0xFF,0xF3,0x01,0xF8,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0x00,0xFF,0xFF,0x7F,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x01,0xFE,0xFF,0xFB,0x01,0xF8,0xFF,0xF1,0x01,0xE0,0x7F,0xC0,0x01,0x00,0x3F,0x00,0x00,0x00,0x3C,0x00,0x00,}; -const uint8_t *_I_blackfish_25x17[] = {_I_blackfish_25x17_0}; - -const uint8_t _I_blacklid_36x27_0[] = {0x00,0x80,0x1F,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0xFE,0xFF,0x07,0x00,0x80,0xFF,0xFF,0x1F,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0xE0,0xFF,0xFF,0x7F,0x00,0xF0,0xFF,0xFF,0xFF,0x00,0xF8,0xFF,0xFF,0xFF,0x01,0xFC,0xFF,0xFF,0xFF,0x03,0xFC,0xFF,0xFF,0xFF,0x03,0xFE,0xFF,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0xFE,0xFF,0xFF,0xFF,0x07,0xFE,0xFF,0xFF,0xFF,0x07,0xFC,0xFF,0xFF,0xFF,0x03,0xF0,0xFF,0xFF,0xFF,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0xFC,0xFF,0x03,0x00,}; -const uint8_t *_I_blacklid_36x27[] = {_I_blacklid_36x27_0}; - -const uint8_t _I_skeleton_25x17_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x10,0x25,0xC0,0x00,0x08,0x49,0xA1,0x00,0x68,0x4A,0x92,0x00,0x64,0x4A,0x52,0x00,0x64,0xFE,0x5F,0x00,0x08,0x4A,0x92,0x00,0x08,0x4A,0xA1,0x00,0x10,0x29,0xC0,0x00,0xE0,0x04,0x00,0x00,}; -const uint8_t *_I_skeleton_25x17[] = {_I_skeleton_25x17_0}; - -const uint8_t _I_letterB_10x10_0[] = {0xFF,0x03,0x01,0x02,0x39,0x02,0x49,0x02,0x39,0x02,0x49,0x02,0x49,0x02,0x39,0x02,0x01,0x02,0xFF,0x03,}; -const uint8_t *_I_letterB_10x10[] = {_I_letterB_10x10_0}; - -const uint8_t _I_shit_25x17_0[] = {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x30,0x01,0x00,0x00,0x18,0x01,0x00,0x00,0x0F,0x01,0x00,0x80,0x00,0x07,0x00,0x80,0xC0,0x08,0x00,0xC0,0x03,0x08,0x00,0x20,0x06,0x1E,0x00,0x20,0x30,0x13,0x00,0x20,0x00,0x10,0x00,0xC0,0x00,0x18,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_shit_25x17[] = {_I_shit_25x17_0}; - -const uint8_t _I_letterC_10x10_0[] = {0xFF,0x03,0x01,0x02,0x31,0x02,0x49,0x02,0x09,0x02,0x09,0x02,0x49,0x02,0x31,0x02,0x01,0x02,0xFF,0x03,}; -const uint8_t *_I_letterC_10x10[] = {_I_letterC_10x10_0}; - -const uint8_t _I_active_plate_48x18_0[] = {0x08,0x00,0x00,0x00,0x00,0x10,0x0C,0x00,0x00,0x00,0x00,0x30,0x06,0x00,0x00,0x00,0x00,0x60,0x06,0x00,0x00,0x00,0x00,0x60,0x07,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0xF8,0x3E,0x00,0x00,0x00,0x00,0x7C,0x7E,0x00,0x00,0x00,0x00,0x7E,0xFC,0x01,0x00,0x00,0x80,0x3F,0xF8,0x0F,0x00,0x00,0xF0,0x1F,0xF0,0x7F,0x00,0x00,0xFE,0x0F,0xE0,0xFF,0xFF,0xFF,0xFF,0x07,0x80,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0xFE,0xFF,0xFF,0x7F,0x00,0x00,0xF0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,}; -const uint8_t *_I_active_plate_48x18[] = {_I_active_plate_48x18_0}; - -const uint8_t _I_fish_25x17_0[] = {0x00,0x0E,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x21,0x80,0x01,0x80,0xCD,0x60,0x01,0x60,0xC0,0x10,0x01,0x10,0x00,0x13,0x01,0x08,0x00,0x8C,0x00,0xC4,0x00,0x88,0x00,0xE3,0x00,0x40,0x00,0xE1,0x00,0x80,0x00,0x03,0x00,0x80,0x00,0x01,0x00,0x0C,0x01,0x0E,0x00,0x1B,0x01,0x38,0xC0,0x71,0x01,0xE0,0x7F,0xC0,0x01,0x00,0x3F,0x00,0x00,0x00,0x3C,0x00,0x00,}; -const uint8_t *_I_fish_25x17[] = {_I_fish_25x17_0}; - -const uint8_t _I_blackshit_25x17_0[] = {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0xF8,0x01,0x00,0x00,0xFF,0x01,0x00,0x80,0xFF,0x07,0x00,0x80,0xFF,0x0F,0x00,0xC0,0xFF,0x0F,0x00,0xE0,0xFF,0x1F,0x00,0xE0,0xFF,0x1F,0x00,0xE0,0xFF,0x1F,0x00,0xC0,0xFF,0x1F,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_blackshit_25x17[] = {_I_blackshit_25x17_0}; - -const uint8_t _I_lid_36x27_0[] = {0x00,0x80,0x1F,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0x00,0x38,0xCF,0x01,0x00,0x00,0x06,0x00,0x06,0x00,0x80,0x01,0x00,0x18,0x00,0x40,0x00,0x80,0x21,0x00,0x20,0x00,0x00,0x46,0x00,0x10,0x00,0x00,0x8C,0x00,0x08,0x00,0x00,0x18,0x01,0x04,0x00,0x00,0x38,0x02,0x04,0x00,0x00,0x70,0x02,0x02,0x00,0x00,0x70,0x04,0x02,0x00,0x00,0xE0,0x04,0x01,0x00,0x00,0xE0,0x08,0x01,0x00,0x00,0xC0,0x09,0x01,0x00,0x00,0xC0,0x09,0x01,0x00,0x00,0xC0,0x09,0x02,0x00,0x00,0xC0,0x07,0x02,0x00,0x00,0xC0,0x07,0x0C,0x00,0x00,0xE0,0x03,0x30,0x00,0x00,0xF0,0x00,0xC0,0x03,0x00,0x3C,0x00,0x00,0xFC,0xFF,0x03,0x00,}; -const uint8_t *_I_lid_36x27[] = {_I_lid_36x27_0}; - -const uint8_t _I_blackskeleton_25x17_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x25,0xC0,0x00,0xF8,0x49,0xE1,0x00,0xF8,0x4B,0xF2,0x00,0xFC,0x4B,0x72,0x00,0xFC,0xFF,0x7F,0x00,0xF8,0x4B,0xF2,0x00,0xF8,0x4B,0xE1,0x00,0xF0,0x29,0xC0,0x00,0xE0,0x04,0x00,0x00,}; -const uint8_t *_I_blackskeleton_25x17[] = {_I_blackskeleton_25x17_0}; - -const uint8_t _I_letterA_10x10_0[] = {0xFF,0x03,0x01,0x02,0x31,0x02,0x49,0x02,0x79,0x02,0x49,0x02,0x49,0x02,0x49,0x02,0x01,0x02,0xFF,0x03,}; -const uint8_t *_I_letterA_10x10[] = {_I_letterA_10x10_0}; - -const uint8_t _I_plate_42x19_0[] = {0x00,0xF0,0xFF,0x3F,0x00,0x00,0x00,0x0E,0x00,0xC0,0x01,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x08,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0xC0,0x01,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0xC0,0x01,0x00,0x00,0xF0,0xFF,0x3F,0x00,0x00,}; -const uint8_t *_I_plate_42x19[] = {_I_plate_42x19_0}; - const uint8_t _I_PassportBottom_128x17_0[] = {0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x9A,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x9A,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x58,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x95,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x9A,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0xF9,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0D,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x05,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x05,0xF2,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x05,0xFA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x09,0x79,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0xD5,0x80,0x55,0xD5,0x00,0xF3,0xCC,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x6A,0x00,0xAB,0x6A,0x00,0x06,0x86,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0xFE,0x3F,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; const uint8_t *_I_PassportBottom_128x17[] = {_I_PassportBottom_128x17_0}; @@ -417,33 +327,6 @@ const uint8_t *_I_Medium_chip_22x21[] = {_I_Medium_chip_22x21_0}; const uint8_t _I_EMV_Chip_14x11_0[] = {0xFC,0x0F,0x02,0x10,0xC9,0x24,0x2F,0x3C,0x11,0x22,0x11,0x22,0x11,0x22,0x2F,0x3D,0xC9,0x24,0x02,0x10,0xFC,0x0F,}; const uint8_t *_I_EMV_Chip_14x11[] = {_I_EMV_Chip_14x11_0}; -const uint8_t _I_passport_happy1_43x45_0[] = {0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x03,0x00,0x00,0x40,0x00,0x00,0x04,0x00,0x00,0x20,0x00,0x00,0x08,0x70,0x00,0x10,0x00,0x00,0x10,0x8E,0x01,0x08,0x00,0x00,0xA0,0x01,0x02,0x08,0x00,0x00,0x60,0x00,0x02,0x04,0x00,0x00,0x30,0xC0,0x03,0x04,0x00,0x00,0x0C,0x10,0x02,0x02,0x70,0x00,0x06,0x0C,0x01,0x02,0xFC,0x01,0x01,0x02,0x01,0x02,0xFE,0x01,0x80,0x80,0x00,0x01,0xFF,0x03,0x40,0x40,0x00,0x01,0x2F,0x00,0x60,0x60,0x00,0x81,0x17,0x00,0xB0,0x20,0x00,0x41,0x0F,0x00,0x58,0x11,0x00,0x81,0x0A,0x00,0xAC,0x08,0x00,0x41,0x0D,0x00,0x56,0x05,0x00,0x81,0x8A,0x00,0xBF,0x06,0x00,0x40,0x85,0x80,0xFF,0x07,0x00,0x80,0x02,0xE3,0xC3,0x1F,0x00,0x00,0x00,0xFC,0x01,0x7F,0x00,0x00,0x00,0xF0,0x03,0xFC,0x03,0x00,0x00,0x80,0x3F,0xF0,0x07,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x8E,0x03,0x00,0x00,0x04,0x00,0xD3,0x04,0x00,0x00,0x07,0x80,0x71,0x04,0x00,0xF0,0x01,0x80,0x61,0x44,0xFD,0x1F,0x00,0x80,0x61,0x88,0xAA,0x02,0x00,0x80,0x61,0x08,0x54,0x01,0x00,0xC0,0xC0,0x10,0xA8,0x01,0x00,0xC0,0xC0,0x10,0x40,0x01,0x00,0xC0,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x40,0x00,0x02,0x00,0x30,0xC0,0x80,0x00,0x02,0x00,0x38,0xC0,0x80,0x00,0x04,0x00,0x1C,0xC0,0x00,0x01,0x04,0x00,0x0E,0xC0,0x00,0x02,0x08,0x00,0x06,0xE0,0x01,0x0C,0x08,0x00,0x03,0xE0,0x01,0x70,0x10,0x00,0x01,0xF0,0x03,0x80,0x33,0x00,}; -const uint8_t *_I_passport_happy1_43x45[] = {_I_passport_happy1_43x45_0}; - -const uint8_t _I_passport_bad3_43x45_0[] = {0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x30,0x00,0x02,0x00,0x00,0x00,0x0C,0x00,0x07,0x00,0x00,0x00,0x02,0xC0,0x18,0x00,0x00,0x00,0x01,0x20,0x20,0x00,0x00,0x80,0x01,0x10,0x40,0x00,0x00,0x40,0x01,0x08,0x80,0x00,0x00,0x20,0x01,0x08,0x80,0x00,0x00,0x10,0x01,0x08,0x00,0x01,0x00,0x10,0x01,0x04,0x50,0x01,0x00,0x08,0x02,0x04,0xAA,0x06,0x00,0x08,0xE2,0x07,0xD5,0x0F,0x00,0x04,0x14,0x88,0x3A,0x12,0x00,0x04,0xEC,0x50,0x07,0x12,0x00,0x04,0xF6,0xA1,0x04,0x14,0x00,0x02,0x8C,0x63,0x08,0x14,0x00,0x02,0x8E,0x26,0x08,0x14,0x00,0x02,0x8D,0x2B,0x08,0x14,0x00,0x02,0x4E,0x2C,0x04,0x14,0x00,0x02,0x35,0x28,0x04,0x12,0x00,0x02,0xFA,0x17,0x04,0x12,0x00,0x02,0x84,0xF9,0xFF,0x0F,0x00,0x02,0x02,0x07,0x04,0x08,0x00,0x02,0x00,0x00,0x08,0x10,0x00,0x02,0x00,0x00,0x10,0x20,0x00,0x03,0x00,0x00,0x20,0x40,0x00,0x02,0x00,0x00,0x40,0x80,0x00,0x0C,0xC0,0x01,0x80,0x00,0x01,0x30,0x20,0x06,0x00,0x01,0x02,0xC0,0x20,0x18,0x00,0x01,0x02,0x00,0x01,0x60,0x00,0x02,0x04,0x00,0x02,0x80,0x01,0x02,0x04,0x80,0x02,0x0F,0x06,0x04,0x04,0x00,0x02,0x3A,0x38,0xFC,0x07,0x01,0x02,0xD4,0xC0,0x07,0x03,0x0E,0x02,0xA8,0x03,0x80,0x00,0x70,0x02,0x40,0x1D,0x40,0x00,0x80,0x03,0x80,0xEA,0x3F,0x00,0x00,0x0C,0x00,0x55,0x35,0x00,0x00,0x30,0x00,0xAA,0x2A,0x00,0x00,0xC0,0x00,0x54,0x35,0x00,0x00,0x00,0x01,0xA0,0x6A,0x00,0x00,0x40,0x01,0x00,0x45,0x00,0x00,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x40,0x00,}; -const uint8_t *_I_passport_bad3_43x45[] = {_I_passport_bad3_43x45_0}; - -const uint8_t _I_passport_okay2_43x45_0[] = {0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x9E,0xE3,0x00,0x00,0x00,0x80,0x61,0x00,0x07,0x00,0x00,0x60,0x10,0x00,0x18,0x00,0x00,0x10,0x08,0x00,0x20,0x00,0x00,0x08,0x04,0x00,0x40,0x00,0x00,0x04,0x04,0x00,0x80,0x00,0x00,0x04,0x02,0x00,0x80,0x00,0x00,0x02,0x03,0x00,0x00,0x01,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x01,0x03,0x00,0x00,0x02,0x80,0x80,0x05,0xFE,0x00,0x02,0x80,0x80,0x02,0x01,0x01,0x04,0x80,0x80,0x85,0x7C,0x02,0x04,0x80,0xFF,0x4A,0xFA,0x04,0x04,0x40,0x00,0x57,0xC5,0x04,0x00,0x40,0x01,0x78,0xE5,0x05,0x00,0x20,0x21,0x40,0xFD,0x15,0x00,0x20,0x21,0x40,0xFD,0x2D,0x00,0x20,0x21,0x40,0xF9,0x55,0x00,0x20,0x42,0x80,0x82,0x2C,0x00,0x20,0x42,0x80,0xFD,0x57,0x00,0x20,0x02,0x80,0x06,0x2A,0x00,0x40,0x00,0x78,0x02,0x14,0x00,0x40,0xE0,0x07,0x02,0x04,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x10,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x01,0x00,0x80,0x01,0x00,0x00,0x01,0x00,0x70,0x00,0x00,0x00,0xF9,0x00,0x0F,0x00,0x00,0x00,0x06,0xFF,0x00,0x00,0x06,0x00,0x04,0x00,0x00,0xC0,0x0B,0x00,0x08,0x00,0x00,0x78,0x05,0x00,0x30,0x00,0xF8,0xAF,0x02,0x00,0xC0,0xFF,0xFF,0x57,0x01,0x00,0x00,0xF8,0xBF,0x2A,0x00,0x00,0x00,0xF8,0x57,0x15,0x00,0x00,0x00,0xF8,0xAB,0x02,0x00,0x00,0x00,0xF8,0x55,0x01,0x00,0x00,0x00,0xF8,0xAA,0x00,0x00,0x00,}; -const uint8_t *_I_passport_okay2_43x45[] = {_I_passport_okay2_43x45_0}; - -const uint8_t _I_passport_bad2_43x45_0[] = {0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x70,0x00,0x06,0x00,0x00,0x00,0xFC,0x07,0x18,0x00,0x00,0x00,0x02,0x1D,0x60,0x00,0x00,0x00,0x01,0x2A,0x80,0x00,0x00,0x80,0x00,0x50,0x00,0x01,0x00,0x40,0x00,0xA0,0x00,0x02,0x00,0x20,0x00,0xC0,0x00,0x04,0x00,0x10,0x00,0xA0,0x01,0x04,0x00,0x10,0x00,0x40,0x01,0x08,0x00,0x08,0xE0,0x81,0x02,0x08,0x00,0x08,0x18,0x06,0xE3,0x0F,0x00,0x04,0x04,0x88,0x1A,0x08,0x00,0x04,0x62,0x10,0x07,0x10,0x00,0x04,0xD2,0x91,0x41,0x14,0x00,0x02,0xCA,0x93,0x40,0x14,0x00,0x02,0xCA,0x66,0x44,0x14,0x00,0x02,0xCB,0x2F,0x44,0x14,0x00,0x82,0x8A,0x2F,0x44,0x14,0x00,0x02,0x15,0x14,0x04,0x10,0x00,0x82,0xFA,0x13,0x00,0x10,0x00,0x02,0x05,0x39,0xFC,0x0F,0x00,0x01,0x02,0xC6,0x03,0x08,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x80,0x00,0x01,0xC0,0x01,0x00,0x00,0x01,0x01,0x20,0x06,0x00,0x00,0x01,0x01,0x00,0x18,0x00,0x00,0x02,0x01,0x00,0x60,0x00,0x00,0x02,0x00,0x00,0x80,0x01,0x00,0x04,0x00,0x00,0x0F,0x06,0x00,0x04,0x00,0x00,0x3A,0x38,0xF8,0x07,0x00,0x00,0xD4,0xC0,0x07,0x02,0x00,0x00,0xA8,0x03,0x00,0x02,0x00,0x00,0x40,0x1D,0x80,0x01,0x00,0x00,0x80,0xEA,0x7F,0x00,0x00,0x00,0x00,0x55,0x0D,0x00,0x00,0x00,0x00,0xAA,0x0A,0x00,0x00,0x00,0x00,0x54,0x0D,0x00,0x00,0x00,0x00,0xA0,0x0A,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,}; -const uint8_t *_I_passport_bad2_43x45[] = {_I_passport_bad2_43x45_0}; - -const uint8_t _I_passport_okay3_43x45_0[] = {0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x28,0xE0,0x00,0x00,0x00,0x00,0x5E,0x00,0x07,0x00,0x00,0x80,0xA1,0x00,0x1A,0x00,0x00,0x60,0x40,0x01,0x26,0x00,0x00,0x10,0x80,0x02,0x4A,0x00,0x00,0x08,0x80,0x02,0x85,0x00,0x00,0x04,0x00,0x01,0x83,0x00,0x00,0x02,0x00,0x01,0x05,0x01,0x00,0x02,0x00,0x02,0x03,0x01,0x00,0x01,0x00,0x82,0x01,0x02,0x00,0x01,0x00,0xFF,0x02,0x02,0x00,0xAB,0x80,0x80,0x01,0x04,0x00,0x55,0x41,0x3E,0x01,0x04,0x80,0xFF,0x22,0x41,0x02,0x04,0x40,0x40,0xA7,0xA2,0x02,0x02,0x40,0x40,0xB8,0x9C,0x06,0x02,0x20,0x20,0xA0,0x94,0x0A,0x02,0x20,0x20,0xA0,0x9C,0x06,0x01,0x20,0x20,0xA0,0xA2,0x0B,0x01,0x20,0x20,0xE0,0xC1,0x17,0x01,0x20,0x20,0xC0,0xFF,0x8B,0x00,0x20,0x40,0x80,0x03,0x95,0x00,0x40,0x40,0x78,0x01,0x4A,0x00,0x40,0xE0,0x1F,0x01,0x46,0x00,0x80,0x1F,0x05,0x00,0x40,0x00,0xC0,0xC0,0x02,0x20,0x80,0x00,0x30,0xB0,0x01,0x20,0x00,0x07,0x08,0x68,0x00,0x10,0x00,0x00,0x04,0x14,0x00,0x10,0x00,0x00,0x02,0x14,0x00,0x08,0x00,0x04,0x01,0x0A,0x00,0x04,0x00,0x02,0x01,0x0A,0x80,0x03,0x00,0x01,0x01,0x0A,0x70,0x00,0x00,0x01,0xF9,0x0A,0x0F,0x00,0x80,0x00,0x06,0xFF,0x00,0x00,0x86,0x00,0x04,0x00,0x00,0xC0,0x4B,0x00,0x08,0x00,0x00,0x78,0xA5,0x00,0x30,0x00,0xF8,0xAF,0x22,0x01,0xC0,0xFF,0xFF,0x57,0x41,0x02,0x00,0xF8,0xBF,0x2A,0x80,0x04,0x00,0xF8,0x57,0x15,0x00,0x01,0x00,0xF8,0xAB,0x02,0x00,0x02,0x00,0xF8,0x55,0x01,0x00,0x04,0x00,0xF8,0xAA,0x00,0x00,0x00,}; -const uint8_t *_I_passport_okay3_43x45[] = {_I_passport_okay3_43x45_0}; - -const uint8_t _I_passport_bad1_43x45_0[] = {0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x30,0x80,0x03,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x02,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x40,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0x08,0x00,0x04,0x60,0x30,0x00,0x08,0x00,0x04,0xD0,0x01,0x00,0x08,0x00,0x02,0xC8,0x03,0x00,0x08,0x00,0x02,0xCA,0x06,0x00,0x08,0x00,0x02,0xCD,0x0F,0x40,0x0D,0x00,0x02,0x8A,0x0F,0xA0,0x0A,0x00,0x02,0x15,0x04,0x50,0x05,0x00,0x02,0xFA,0x03,0xA8,0x06,0x00,0x02,0x04,0x01,0xF4,0x07,0x00,0x01,0x02,0x02,0x08,0x08,0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x80,0x00,0x01,0xC0,0x01,0x00,0x00,0x01,0x01,0x20,0x06,0x00,0x00,0x01,0x01,0x00,0x18,0x00,0x00,0x02,0x01,0x00,0x60,0x00,0x00,0x02,0x00,0x00,0x80,0x01,0x00,0x04,0x00,0x00,0x0F,0x06,0x00,0x04,0x00,0x00,0x3A,0x38,0xF8,0x07,0x00,0x00,0xD4,0xC0,0x07,0x02,0x00,0x00,0xA8,0x03,0x00,0x02,0x00,0x00,0x40,0x1D,0x80,0x01,0x00,0x00,0x80,0xEA,0x7F,0x00,0x00,0x00,0x00,0x55,0x0D,0x00,0x00,0x00,0x00,0xAA,0x0A,0x00,0x00,0x00,0x00,0x54,0x0D,0x00,0x00,0x00,0x00,0xA0,0x0A,0x00,0x00,0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x10,0x00,}; -const uint8_t *_I_passport_bad1_43x45[] = {_I_passport_bad1_43x45_0}; - -const uint8_t _I_passport_happy3_43x45_0[] = {0x00,0xFE,0x3F,0x00,0x00,0x00,0x80,0x05,0xE8,0x00,0x00,0x00,0x40,0x02,0xD4,0x07,0x00,0x00,0x20,0x01,0x68,0x08,0x00,0x00,0x10,0x01,0x14,0x10,0x70,0x00,0x08,0x01,0x0A,0x20,0x8E,0x01,0x08,0x02,0x05,0xE0,0x01,0x02,0x04,0xFE,0x0A,0x60,0x00,0x02,0x04,0x01,0x13,0xF0,0xC1,0x03,0x84,0x7C,0x22,0x0C,0x12,0x02,0x46,0x82,0x42,0x02,0x0C,0x01,0x4A,0xF9,0x82,0x01,0x02,0x01,0x4E,0xFD,0x42,0x80,0x80,0x00,0x7B,0xCF,0x23,0x40,0x40,0x00,0x55,0x27,0x1C,0x60,0x60,0x00,0x6A,0x1A,0x00,0xB0,0x20,0x00,0xC1,0x0C,0x00,0x58,0x11,0x00,0x81,0x09,0x00,0xAC,0x08,0x00,0x40,0x0F,0x00,0x56,0x05,0x00,0x80,0x8A,0x00,0xBF,0x06,0x00,0x41,0x85,0x80,0xFF,0x07,0x00,0x82,0x02,0xE3,0xC3,0x1F,0x00,0x04,0x00,0xFC,0x01,0x7F,0x00,0x08,0x00,0xF0,0x03,0xFC,0x03,0x10,0x00,0x80,0x3F,0xF0,0x07,0x20,0x00,0x00,0xC0,0xFF,0x07,0x21,0x00,0x00,0x00,0x00,0x04,0x23,0x8E,0x03,0x00,0x00,0x04,0x16,0xD3,0x04,0x00,0x00,0x07,0x8C,0x71,0x04,0x00,0xF0,0x01,0x98,0x61,0x44,0xFD,0x1F,0x00,0xB0,0x61,0x88,0xAA,0x02,0x00,0xE0,0x61,0x08,0x54,0x01,0x00,0xC0,0xC0,0x10,0xA8,0x01,0x00,0xC0,0xC0,0x10,0x40,0x01,0x00,0xC0,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x40,0x00,0x02,0x00,0x30,0xC0,0x80,0x00,0x02,0x00,0x38,0xC0,0x80,0x00,0x04,0x00,0x1C,0xC0,0x00,0x01,0x04,0x00,0x0E,0xC0,0x00,0x02,0x08,0x00,0x06,0xE0,0x01,0x0C,0x08,0x00,0x03,0xE0,0x01,0x70,0x10,0x00,0x01,0xF0,0x03,0x80,0x33,0x00,}; -const uint8_t *_I_passport_happy3_43x45[] = {_I_passport_happy3_43x45_0}; - -const uint8_t _I_passport_happy2_43x45_0[] = {0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x80,0x00,0x80,0x0F,0x00,0x00,0x40,0x1F,0x60,0x10,0x00,0x00,0xE0,0xEA,0x10,0x24,0x70,0x00,0x10,0x54,0x49,0x68,0x8E,0x01,0x08,0xA0,0x86,0xE8,0x01,0x02,0x08,0x78,0x05,0x61,0x00,0x02,0x04,0xC6,0x12,0x31,0xC0,0x03,0x04,0x01,0x23,0x0C,0x10,0x02,0x82,0x70,0x22,0x06,0x0C,0x01,0x82,0xFC,0x02,0x01,0x02,0x01,0x42,0xFE,0xC2,0x80,0x80,0x00,0x41,0xFF,0x23,0x40,0x40,0x00,0x41,0x2F,0x1C,0x60,0x60,0x00,0x41,0x16,0x00,0xB0,0x20,0x00,0xC1,0x08,0x00,0x58,0x11,0x00,0x81,0x0F,0x00,0xAC,0x08,0x00,0x41,0x0D,0x00,0x56,0x05,0x00,0x81,0x8A,0x00,0xBF,0x06,0x00,0x40,0x85,0x80,0xFF,0x07,0x00,0x80,0x02,0xE3,0xC3,0x1F,0x00,0x00,0x00,0xFC,0x01,0x7F,0x00,0x00,0x00,0xF0,0x03,0xFC,0x03,0x00,0x00,0x80,0x3F,0xF0,0x07,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x8E,0x03,0x00,0x00,0x04,0x00,0xD3,0x04,0x00,0x00,0x07,0x80,0x71,0x04,0x00,0xF0,0x01,0x80,0x61,0x44,0xFD,0x1F,0x00,0x80,0x61,0x88,0xAA,0x02,0x00,0x80,0x61,0x08,0x54,0x01,0x00,0xC0,0xC0,0x10,0xA8,0x01,0x00,0xC0,0xC0,0x10,0x40,0x01,0x00,0xC0,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x20,0x00,0x02,0x00,0x60,0xC0,0x40,0x00,0x02,0x00,0x30,0xC0,0x80,0x00,0x02,0x00,0x38,0xC0,0x80,0x00,0x04,0x00,0x1C,0xC0,0x00,0x01,0x04,0x00,0x0E,0xC0,0x00,0x02,0x08,0x00,0x06,0xE0,0x01,0x0C,0x08,0x00,0x03,0xE0,0x01,0x70,0x10,0x00,0x01,0xF0,0x03,0x80,0x33,0x00,}; -const uint8_t *_I_passport_happy2_43x45[] = {_I_passport_happy2_43x45_0}; - -const uint8_t _I_passport_okay1_43x45_0[] = {0x00,0x00,0xE0,0x3F,0x00,0x00,0x00,0x00,0x1C,0xC0,0x01,0x00,0x00,0x00,0x03,0x00,0x06,0x00,0x00,0xC0,0x00,0x00,0x18,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x40,0x00,0x00,0x08,0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x80,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x7C,0x00,0x04,0x80,0x00,0x00,0xFA,0x00,0x04,0x80,0x00,0x00,0xFD,0x01,0x04,0x80,0x00,0x80,0xC4,0x03,0x00,0x80,0x00,0x80,0xE4,0x03,0x00,0x80,0x00,0x80,0xFC,0x03,0x00,0x80,0x00,0x80,0xFC,0x0B,0x00,0x80,0x00,0x80,0xF8,0x16,0x00,0x80,0x00,0x00,0x01,0x2B,0x00,0x80,0x00,0x00,0xFA,0x15,0x00,0x00,0x01,0x00,0x04,0x2A,0x00,0x00,0x01,0x00,0x02,0x14,0x00,0x00,0xE1,0x03,0x00,0x0C,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x20,0x00,0x00,0x18,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x10,0x00,0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x80,0x03,0x00,0x00,0x01,0x00,0x70,0x00,0x00,0x00,0xF9,0x03,0x0F,0x00,0x00,0x00,0x06,0xFC,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0xC0,0x01,0x00,0x08,0x00,0x00,0x78,0x00,0x00,0x30,0x00,0xF8,0xAF,0x00,0x00,0xC0,0xFF,0xFF,0x57,0x00,0x00,0x00,0xF8,0xBF,0x2A,0x00,0x00,0x00,0xF8,0x57,0x15,0x00,0x00,0x00,0xF8,0xAB,0x02,0x00,0x00,0x00,0xF8,0x55,0x01,0x00,0x00,0x00,0xF8,0xAA,0x00,0x00,0x00,}; -const uint8_t *_I_passport_okay1_43x45[] = {_I_passport_okay1_43x45_0}; - const uint8_t _I_Health_16x16_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0x40,0x01,0x78,0x0F,0x08,0x08,0x78,0x0F,0x40,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; const uint8_t *_I_Health_16x16[] = {_I_Health_16x16_0}; @@ -489,285 +372,6 @@ const uint8_t *_I_SDQuestion_35x43[] = {_I_SDQuestion_35x43_0}; const uint8_t _I_SDError_43x35_0[] = {0xFE,0xFF,0xFF,0xFF,0xFF,0x03,0x01,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x3D,0x30,0x18,0x0C,0x06,0x04,0x3D,0x60,0x0C,0x18,0x03,0x04,0x01,0xC0,0x06,0xB0,0x01,0x04,0x3D,0x80,0x03,0xE0,0x00,0x04,0x3D,0x80,0x03,0xE0,0x00,0x04,0x01,0xC0,0x06,0xB0,0x01,0x04,0x3D,0x60,0x0C,0x18,0x03,0x04,0x3D,0x30,0x18,0x0C,0x06,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0xFC,0x3F,0x00,0x04,0x3D,0x00,0xFF,0xFF,0x00,0x04,0x01,0x80,0x1F,0xF9,0x01,0x04,0x3D,0xC0,0x2F,0xF2,0x03,0x04,0x3D,0xC0,0x5F,0xE4,0x03,0x04,0x01,0x80,0x83,0xE4,0x01,0x04,0x3D,0x08,0x80,0x20,0x10,0x04,0x3D,0x08,0x00,0x11,0x10,0x04,0x01,0x30,0x00,0x0E,0x0C,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x3D,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x04,0xFE,0xFF,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x1F,0x00,0x04,0x00,0x00,0x82,0x20,0x00,0x04,0x00,0x00,0xFC,0xC0,0xFF,0x03,}; const uint8_t *_I_SDError_43x35[] = {_I_SDError_43x35_0}; -const uint8_t _I_Console_74x67_4_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0x8E,0xFF,0xE3,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0x76,0xFF,0xDD,0xAF,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xFA,0xFE,0xBE,0xAF,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xFA,0xFE,0xBE,0x2F,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xFC,0x7D,0x7F,0x2F,0x60,0x64,0x3B,0x00,0x00,0x8C,0xFC,0x7D,0x7F,0x2F,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xFE,0xBB,0xFF,0x26,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFE,0xC7,0xFF,0xA9,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0xE0,0x80,0x03,0x23,0x80,0x05,0x0F,0x00,0x00,0x8C,0xEE,0xBE,0x7B,0x2B,0x00,0xFF,0x07,0x00,0x00,0x8C,0xEE,0xBE,0x7B,0x2B,0x73,0xF6,0x43,0x00,0x00,0x8C,0xEE,0xBE,0x7B,0x2B,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x0E,0x3E,0x78,0x28,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_4[] = {_I_Console_74x67_4_0}; - -const uint8_t _I_Console_74x67_5_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0xC6,0xFF,0xF1,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xBA,0xFF,0xEE,0xAF,0x44,0xF8,0x1E,0x00,0x00,0x8C,0x7C,0x7F,0xDF,0xAF,0x44,0xF8,0x1D,0x00,0x00,0x8C,0x7C,0x7F,0xDF,0x2F,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xFE,0xBE,0xBF,0x27,0x60,0x64,0x3B,0x00,0x00,0x8C,0xFE,0xBE,0xBF,0x27,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xFE,0xDD,0x7F,0x2B,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFE,0xE3,0xFF,0xAC,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x70,0xC0,0x81,0x21,0x80,0x05,0x0F,0x00,0x00,0x8C,0x76,0xDF,0xBD,0x2D,0x00,0xFF,0x07,0x00,0x00,0x8C,0x76,0xDF,0xBD,0x2D,0x73,0xF6,0x43,0x00,0x00,0x8C,0x76,0xDF,0xBD,0x2D,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x06,0x1F,0x3C,0x2C,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_5[] = {_I_Console_74x67_5_0}; - -const uint8_t _I_Console_74x67_7_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0xF0,0x7F,0xFC,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xEE,0xBF,0xFB,0xA7,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xDE,0xDF,0xF7,0xAB,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xDE,0xDF,0xF7,0x2B,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xBE,0xEF,0xEF,0x2D,0x60,0x64,0x3B,0x00,0x00,0x8C,0xBE,0xEF,0xEF,0x2D,0xB0,0x42,0x7B,0x00,0x00,0x8C,0x7E,0xF7,0xDF,0x2E,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFE,0xF8,0x3F,0xAF,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x1C,0x70,0x60,0x20,0x80,0x05,0x0F,0x00,0x00,0x8C,0xDC,0x77,0x6F,0x2F,0x00,0xFF,0x07,0x00,0x00,0x8C,0xDC,0x77,0x6F,0x2F,0x73,0xF6,0x43,0x00,0x00,0x8C,0xDC,0x77,0x6F,0x2F,0x53,0xF8,0xA0,0x00,0x00,0x8C,0xC0,0x07,0x0F,0x2F,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_7[] = {_I_Console_74x67_7_0}; - -const uint8_t _I_Console_74x67_6_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0xE2,0xFF,0xF8,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xDC,0x7F,0xF7,0xAF,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xBE,0xBF,0xEF,0xA7,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xBE,0xBF,0xEF,0x27,0xA3,0x82,0x3B,0x00,0x00,0x8C,0x7E,0xDF,0xDF,0x2B,0x60,0x64,0x3B,0x00,0x00,0x8C,0x7E,0xDF,0xDF,0x2B,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xFE,0xEE,0xBF,0x2D,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFE,0xF1,0x7F,0xAE,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x38,0xE0,0xC0,0x20,0x80,0x05,0x0F,0x00,0x00,0x8C,0xBA,0xEF,0xDE,0x2E,0x00,0xFF,0x07,0x00,0x00,0x8C,0xBA,0xEF,0xDE,0x2E,0x73,0xF6,0x43,0x00,0x00,0x8C,0xBA,0xEF,0xDE,0x2E,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x82,0x0F,0x1E,0x2E,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_6[] = {_I_Console_74x67_6_0}; - -const uint8_t _I_Console_74x67_2_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0x3E,0xFE,0x8F,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xDE,0xFD,0x77,0xAF,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xEE,0xFB,0xFB,0xAE,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xEE,0xFB,0xFB,0x2E,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xF6,0xF7,0xFD,0x2D,0x60,0x64,0x3B,0x00,0x00,0x8C,0xF6,0xF7,0xFD,0x2D,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xFA,0xEF,0xFE,0x2B,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFC,0x1F,0xFF,0xA7,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x80,0x03,0x0E,0x2C,0x80,0x05,0x0F,0x00,0x00,0x8C,0xBC,0xFB,0xEE,0x2D,0x00,0xFF,0x07,0x00,0x00,0x8C,0xBC,0xFB,0xEE,0x2D,0x73,0xF6,0x43,0x00,0x00,0x8C,0xBC,0xFB,0xEE,0x2D,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x3C,0xF8,0xE0,0x21,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_2[] = {_I_Console_74x67_2_0}; - -const uint8_t _I_Console_74x67_3_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0x1E,0xFF,0xC7,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xEE,0xFE,0xBB,0xAF,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xF6,0xFD,0x7D,0xAF,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xF6,0xFD,0x7D,0x2F,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xFA,0xFB,0xFE,0x2E,0x60,0x64,0x3B,0x00,0x00,0x8C,0xFA,0xFB,0xFE,0x2E,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xFC,0x77,0xFF,0x2D,0x63,0x74,0x3B,0x00,0x00,0x8C,0xFE,0x8F,0xFF,0xA3,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0xC0,0x01,0x07,0x26,0x80,0x05,0x0F,0x00,0x00,0x8C,0xDE,0x7D,0xF7,0x26,0x00,0xFF,0x07,0x00,0x00,0x8C,0xDE,0x7D,0xF7,0x26,0x73,0xF6,0x43,0x00,0x00,0x8C,0xDE,0x7D,0xF7,0x26,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x1E,0x7C,0xF0,0x20,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_3[] = {_I_Console_74x67_3_0}; - -const uint8_t _I_Console_74x67_1_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0x7E,0xFC,0x1F,0x2F,0x83,0x06,0x0F,0x00,0x00,0x8C,0xBE,0xFB,0xEF,0xAE,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xDE,0xF7,0xF7,0xAD,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xDE,0xF7,0xF7,0x2D,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xEE,0xEF,0xFB,0x2B,0x60,0x64,0x3B,0x00,0x00,0x8C,0xEE,0xEF,0xFB,0x2B,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xF6,0xDF,0xFD,0x27,0x63,0x74,0x3B,0x00,0x00,0x8C,0xF8,0x3F,0xFE,0xAF,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x02,0x07,0x1C,0x28,0x80,0x05,0x0F,0x00,0x00,0x8C,0x7A,0xF7,0xDD,0x2B,0x00,0xFF,0x07,0x00,0x00,0x8C,0x7A,0xF7,0xDD,0x2B,0x73,0xF6,0x43,0x00,0x00,0x8C,0x7A,0xF7,0xDD,0x2B,0x53,0xF8,0xA0,0x00,0x00,0x8C,0x78,0xF0,0xC1,0x23,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_1[] = {_I_Console_74x67_1_0}; - -const uint8_t _I_Console_74x67_0_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0xFE,0xF8,0x3F,0x2E,0x83,0x06,0x0F,0x00,0x00,0x8C,0x7E,0xF7,0xDF,0xAD,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xBE,0xEF,0xEF,0xAB,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xBE,0xEF,0xEF,0x2B,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xDE,0xDF,0xF7,0x27,0x60,0x64,0x3B,0x00,0x00,0x8C,0xDE,0xDF,0xF7,0x27,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xEC,0xBF,0xFB,0x2F,0x63,0x74,0x3B,0x00,0x00,0x8C,0xF2,0x7F,0xFC,0xAF,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x06,0x0E,0x38,0x20,0x80,0x05,0x0F,0x00,0x00,0x8C,0xF6,0xEE,0xBB,0x27,0x00,0xFF,0x07,0x00,0x00,0x8C,0xF6,0xEE,0xBB,0x27,0x73,0xF6,0x43,0x00,0x00,0x8C,0xF6,0xEE,0xBB,0x27,0x53,0xF8,0xA0,0x00,0x00,0x8C,0xF0,0xE0,0x83,0x27,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_0[] = {_I_Console_74x67_0_0}; - -const uint8_t _I_Console_74x67_8_0[] = {0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xFC,0x00,0xE0,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x84,0x20,0x10,0x01,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0xFC,0xF8,0xE0,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x00,0xFE,0x03,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x00,0xFF,0xE7,0x00,0x00,0x8C,0xF8,0x3F,0xFE,0x27,0x83,0x06,0x0F,0x00,0x00,0x8C,0xF6,0xDF,0xFD,0xAB,0x44,0xF8,0x1E,0x00,0x00,0x8C,0xEE,0xEF,0xFB,0xAD,0x44,0xF8,0x1D,0x00,0x00,0x8C,0xEE,0xEF,0xFB,0x2D,0xA3,0x82,0x3B,0x00,0x00,0x8C,0xDE,0xF7,0xF7,0x2E,0x60,0x64,0x3B,0x00,0x00,0x8C,0xDE,0xF7,0xF7,0x2E,0xB0,0x42,0x7B,0x00,0x00,0x8C,0xBE,0xFB,0x6F,0x2F,0x63,0x74,0x3B,0x00,0x00,0x8C,0x7E,0xFC,0x9F,0xAF,0xA4,0x8A,0x3B,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0xAF,0x44,0xF5,0x1D,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0xC3,0xFB,0x1E,0x00,0x00,0x8C,0x0E,0x38,0x30,0x20,0x80,0x05,0x0F,0x00,0x00,0x8C,0xEE,0xBB,0xB7,0x27,0x00,0xFF,0x07,0x00,0x00,0x8C,0xEE,0xBB,0xB7,0x27,0x73,0xF6,0x43,0x00,0x00,0x8C,0xEE,0xBB,0xB7,0x27,0x53,0xF8,0xA0,0x00,0x00,0x8C,0xE0,0x83,0x87,0x27,0x70,0x20,0x40,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0xFE,0xFF,0xFF,0x2F,0x03,0x00,0x00,0x00,0x00,0x8C,0x7C,0xF8,0x1C,0x20,0xE0,0x70,0x38,0x00,0x00,0x0C,0x01,0x00,0x00,0x10,0x10,0x89,0x44,0x00,0x00,0x4C,0xFE,0xFF,0xFF,0x4F,0x50,0xA9,0x74,0x00,0x00,0xEC,0x00,0x00,0x00,0xE0,0x50,0x99,0x44,0x00,0x00,0x4C,0x00,0x00,0x00,0x40,0xE0,0x70,0x38,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x30,0x1C,0x0E,0x00,0x00,0x00,0x00,0x48,0x02,0x00,0x30,0x22,0x11,0xB6,0xE1,0xF1,0x78,0x90,0x00,0x00,0x68,0x2A,0x15,0x00,0x10,0x0A,0x85,0x20,0x01,0x00,0xC4,0x2A,0x13,0xB6,0xE1,0xF1,0x78,0x20,0x01,0x00,0xC4,0x1C,0x0F,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x88,0x83,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0xF0,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xBE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xCE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xF2,0xFF,0xFF,0xFF,0xE1,0xFF,0xF0,0x03,0x00,0x00,0x3D,0x00,0x00,0xFC,0x90,0x3F,0xE1,0x03,0x00,0x80,0x3E,0x33,0xC6,0x7C,0x88,0x3F,0xC2,0x03,0x00,0x40,0xBE,0x44,0x29,0x7C,0x44,0x5F,0xC4,0x03,0x00,0x40,0xBE,0x34,0xE6,0x7C,0x22,0x9F,0xC8,0x03,0x00,0x40,0xBE,0x44,0x29,0x7D,0x11,0x1F,0xD1,0x03,0x00,0x40,0x3E,0x33,0xC6,0xFC,0x08,0x1F,0xE2,0x03,0x00,0x40,0x3E,0x00,0x00,0xFC,0x84,0x3F,0xE4,0x03,0x00,0x80,0xFE,0xFF,0xFF,0xFF,0xC3,0x7F,0xF8,0x03,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7C,0xE0,0x03,0x1F,0x7C,0x7C,0x18,0x03,0x00,0x38,0x82,0x10,0x84,0x20,0x44,0x44,0xA4,0x00,0x00,0x1E,0xFE,0xF0,0x87,0x3F,0x22,0x22,0xBC,0x03,0x00,0xC7,0x07,0x3E,0xF0,0x01,0x1F,0x1F,0x00,0x00,0xC0,0x23,0x08,0x41,0x08,0x02,0x11,0x11,0xC6,0x00,0xE0,0xE0,0x0F,0x7F,0xF8,0x83,0x88,0x08,0x29,0x01,0x78,0x7C,0xE0,0x03,0x1F,0xC0,0xC7,0x07,0xEF,0x01,0x1C,0x82,0x10,0x84,0x20,0x40,0x44,0x04,0x00,0x00,0x0F,0xFE,0xF0,0x87,0x3F,0x20,0x22,0x82,0x31,0x00,}; -const uint8_t *_I_Console_74x67_8[] = {_I_Console_74x67_8_0}; - -const uint8_t _I_food8_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x18,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x14,0x00,0x00,0x00,0x02,0x04,0x00,0x80,0x77,0x00,0x00,0x00,0x06,0x08,0x0F,0x40,0x40,0x00,0x00,0x00,0x0A,0x88,0x10,0x20,0x26,0x00,0x00,0x00,0x82,0x49,0x20,0x20,0x14,0x00,0x00,0x00,0x84,0x29,0x44,0xA0,0x08,0x00,0x00,0x00,0x04,0x28,0x4A,0x20,0x08,0x00,0x00,0x00,0x08,0x38,0x84,0x60,0x04,0x00,0x00,0x00,0x30,0x30,0x80,0xC0,0x03,0x00,0x00,0x00,0xC0,0xFD,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x04,0x82,0x02,0x00,0x00,0x00,0x38,0x00,0x0A,0x84,0x05,0x00,0x00,0x00,0xC8,0x01,0x06,0x28,0x0B,0x00,0x00,0x00,0x38,0x06,0x0B,0x50,0x15,0x00,0x00,0x00,0xC0,0x09,0x17,0xB0,0x13,0x00,0x00,0x00,0x00,0x12,0x0B,0x60,0x25,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x4B,0x00,0x00,0x00,0x00,0x14,0x0E,0x40,0x47,0x00,0x00,0x00,0x00,0x14,0x16,0x80,0x8B,0x00,0x00,0x00,0x7E,0x14,0x2E,0x00,0x17,0x01,0x00,0x80,0x81,0x0B,0x5C,0x00,0x0B,0x01,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x16,0x02,0x00,0xC0,0x00,0x35,0x58,0x00,0x2E,0x04,0x00,0x40,0x81,0x42,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x86,0x83,0x70,0x01,0xBC,0x08,0x00,0xC0,0x19,0x00,0xB1,0x00,0x58,0x09,0x00,0x40,0x67,0x00,0x72,0x01,0xB8,0x10,0x00,0xC0,0x9A,0x07,0xE2,0x02,0x70,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0xF0,0x22,0x00,0xA0,0x82,0x07,0xC2,0x0A,0xA0,0x25,0x00,0x60,0x01,0xF8,0xC1,0x15,0x60,0x4B,0x00,0xA0,0x02,0xE8,0x80,0x0B,0xC0,0x46,0x00,0x60,0x01,0x74,0x80,0x15,0x40,0x58,0x00,0xA0,0x00,0x7A,0x00,0x2B,0x80,0x60,0x00,0x60,0x01,0x3D,0x00,0x56,0x80,0x80,0x00,0xB0,0x80,0x1A,0x00,0xAE,0x00,0x21,0x01,0x50,0x41,0x1D,0x00,0x5C,0x01,0x51,0x01,0xB0,0x80,0x0E,0x00,0xB8,0x02,0x21,0x02,0x50,0x40,0x07,0x00,0x70,0x05,0x01,0x02,0xB0,0xA0,0x07,0x00,0xE0,0x8A,0x01,0x02,0x58,0xD0,0x03,0x00,0xC0,0xF5,0x01,0x01,0x28,0xA8,0x01,0x00,0x00,0xFF,0xC7,0x00,0x58,0xD4,0x01,0x07,0x00,0x00,0x38,0x00,0xB0,0xEA,0xF0,0x18,0x06,0x00,0x00,0x00,0x50,0x75,0x0C,0x60,0x09,0x00,0x00,0x00,0xA0,0x7A,0x42,0xC0,0x08,0x00,0x00,0x00,0xC0,0xB5,0x05,0x40,0x10,0x00,0x00,0x00,0x00,0x5F,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xA0,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food8_61x98[] = {_I_food8_61x98_0}; - -const uint8_t _I_food5_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x08,0x00,0xC0,0x00,0x00,0x00,0x00,0x0A,0x08,0x0F,0xA0,0x00,0x00,0x00,0x00,0x82,0x89,0x10,0xBC,0x03,0x00,0x00,0x00,0x84,0x49,0x20,0x02,0x02,0x00,0x00,0x00,0x04,0x28,0x44,0x31,0x01,0x00,0x00,0x00,0x08,0x38,0x4A,0xA1,0x00,0x00,0x00,0x00,0x30,0x30,0x84,0x45,0x00,0x00,0x00,0x00,0xC0,0x2D,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0xF6,0x80,0x23,0x00,0x00,0x00,0x00,0x00,0x08,0x81,0x1F,0x00,0x00,0x00,0x38,0x00,0x04,0x82,0x02,0x00,0x00,0x00,0xC8,0x01,0x0A,0x84,0x05,0x00,0x00,0x00,0x38,0x06,0x06,0x28,0x0B,0x00,0x00,0x00,0xC0,0x09,0x0B,0x50,0x15,0x00,0x00,0x00,0x00,0x12,0x17,0xB0,0x13,0x00,0x00,0x00,0x00,0x14,0x0B,0x60,0x25,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x4B,0x00,0x00,0x00,0x00,0x14,0x0E,0x40,0x47,0x00,0x00,0x00,0x7E,0x14,0x16,0x80,0x8B,0x00,0x00,0x80,0x81,0x0B,0x2E,0x00,0x17,0x01,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x0B,0x01,0x00,0xC0,0x00,0x35,0x2C,0x00,0x16,0x02,0x00,0x40,0x81,0x42,0x58,0x00,0x2E,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x19,0x00,0x71,0x01,0xBC,0x08,0x00,0x40,0x67,0x00,0xB2,0x00,0x58,0x09,0x00,0xC0,0x9A,0x07,0x72,0x01,0xB8,0x10,0x00,0x40,0x65,0xF8,0xE3,0x02,0x70,0x11,0x00,0xA0,0x82,0x07,0x62,0x05,0xF0,0x22,0x00,0x60,0x01,0xF8,0xC1,0x0A,0xA0,0x25,0x00,0xA0,0x02,0xE8,0xC0,0x15,0x60,0x4B,0x00,0x60,0x01,0x74,0x80,0x0B,0xC0,0x46,0x00,0xA0,0x00,0x7A,0x80,0x15,0x40,0x58,0x00,0x60,0x01,0x3D,0x00,0x2B,0x80,0x60,0x00,0xB0,0x80,0x1A,0x00,0x56,0x80,0x80,0x00,0x50,0x41,0x1D,0x00,0xAE,0x00,0x21,0x01,0xB0,0x80,0x0E,0x00,0x5C,0x01,0x51,0x01,0x50,0x40,0x07,0x00,0xB8,0x02,0x21,0x02,0xB0,0xA0,0x07,0x00,0x70,0x05,0x01,0x02,0x58,0xD0,0x03,0x00,0xE0,0x8A,0x01,0x02,0x28,0xA8,0x01,0x00,0xC0,0xF5,0x01,0x01,0x58,0xD4,0x01,0x00,0x00,0xFF,0xC7,0x00,0xB0,0xEA,0x00,0x07,0x00,0x00,0x38,0x00,0x50,0x75,0xF0,0x18,0x06,0x00,0x00,0x00,0xA0,0x7A,0x0C,0x60,0x09,0x00,0x00,0x00,0xC0,0x35,0x42,0xC0,0x08,0x00,0x00,0x00,0x00,0x9F,0x05,0x40,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xA0,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food5_61x98[] = {_I_food5_61x98_0}; - -const uint8_t _I_food3_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x84,0x07,0x00,0x06,0x00,0x00,0x00,0xC1,0x44,0x08,0x00,0x05,0x00,0x00,0x00,0xC2,0x24,0x10,0xE0,0x1D,0x00,0x00,0x00,0x02,0x14,0x22,0x10,0x10,0x00,0x00,0x00,0x04,0x1C,0x25,0x88,0x09,0x00,0x00,0x00,0x18,0x18,0x42,0x08,0x05,0x00,0x00,0x00,0xE0,0x16,0x40,0x28,0x02,0x00,0x00,0x00,0x00,0x7B,0x40,0x08,0x02,0x00,0x00,0x00,0x00,0x84,0xC0,0x18,0x01,0x00,0x00,0x00,0x00,0x02,0x41,0xF1,0x00,0x00,0x00,0x00,0x00,0x05,0xC2,0x02,0x00,0x00,0x00,0x38,0x00,0x03,0x94,0x05,0x00,0x00,0x00,0xC8,0x81,0x05,0xA8,0x0A,0x00,0x00,0x00,0x38,0x86,0x0B,0xD8,0x09,0x00,0x00,0x00,0xC0,0x89,0x05,0xB0,0x12,0x00,0x00,0x00,0x00,0x92,0x0B,0xE0,0x25,0x00,0x00,0x00,0x00,0x14,0x07,0xA0,0x23,0x00,0x00,0x00,0x00,0x14,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0x80,0x8B,0x00,0x00,0x00,0x7E,0x14,0x2E,0x80,0x85,0x00,0x00,0x80,0x81,0x0B,0x16,0x00,0x0B,0x01,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x17,0x02,0x00,0xC0,0x00,0x35,0x5C,0x00,0x2E,0x02,0x00,0x40,0x81,0x42,0xB8,0x00,0x5E,0x04,0x00,0xC0,0x86,0x83,0x58,0x00,0xAC,0x04,0x00,0xC0,0x19,0x00,0xB9,0x00,0x5C,0x08,0x00,0x40,0x67,0x00,0x72,0x01,0xB8,0x08,0x00,0xC0,0x9A,0x07,0xB2,0x02,0x78,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0xD0,0x12,0x00,0xA0,0x82,0x07,0xE2,0x0A,0xB0,0x25,0x00,0x60,0x01,0xF8,0xC1,0x05,0x60,0x23,0x00,0xA0,0x02,0xE8,0xC0,0x0A,0x20,0x2C,0x00,0x60,0x01,0x74,0x80,0x15,0x40,0x30,0x00,0xA0,0x00,0x7A,0x00,0x2B,0x40,0x40,0x00,0x60,0x01,0x3D,0x00,0x57,0x80,0x90,0x00,0xB0,0x80,0x1A,0x00,0xAE,0x80,0xA8,0x00,0x50,0x41,0x1D,0x00,0x5C,0x81,0x10,0x01,0xB0,0x80,0x0E,0x00,0xB8,0x82,0x00,0x01,0x50,0x40,0x07,0x00,0x70,0xC5,0x00,0x01,0xB0,0xA0,0x07,0x00,0xE0,0xFA,0x80,0x00,0x58,0xD0,0x03,0x00,0x80,0xFF,0x63,0x00,0x28,0xA8,0x01,0x07,0x00,0x00,0x1C,0x00,0x58,0xD4,0xF1,0x18,0x06,0x00,0x00,0x00,0xB0,0xEA,0x0C,0x60,0x09,0x00,0x00,0x00,0x50,0x75,0x42,0xC0,0x08,0x00,0x00,0x00,0xA0,0xBA,0x05,0x40,0x10,0x00,0x00,0x00,0xC0,0x55,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xAF,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food3_61x98[] = {_I_food3_61x98_0}; - -const uint8_t _I_food9_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x02,0x00,0x00,0x18,0x00,0x00,0x80,0x02,0x82,0x07,0x00,0x14,0x00,0x00,0x80,0x60,0x42,0x08,0x80,0x77,0x00,0x00,0x00,0x61,0x22,0x10,0x40,0x40,0x00,0x00,0x00,0x01,0x12,0x22,0x20,0x26,0x00,0x00,0x00,0x02,0x16,0x25,0x20,0x14,0x00,0x00,0x00,0x0C,0x14,0x42,0xA0,0x08,0x00,0x00,0x00,0x70,0x13,0x40,0x20,0x08,0x00,0x00,0x00,0x80,0x79,0x40,0x60,0x04,0x00,0x00,0x00,0x00,0x84,0xC0,0xC0,0x03,0x00,0x00,0x00,0x00,0x02,0x41,0x01,0x00,0x00,0x00,0x00,0x00,0x05,0xC2,0x02,0x00,0x00,0x00,0x00,0x00,0x03,0x94,0x05,0x00,0x00,0x00,0x38,0x80,0x05,0xA8,0x0A,0x00,0x00,0x00,0xC8,0x81,0x0B,0xD8,0x09,0x00,0x00,0x00,0x38,0x86,0x05,0xB0,0x12,0x00,0x00,0x00,0xC0,0x89,0x0B,0xE0,0x25,0x00,0x00,0x00,0x00,0x12,0x07,0xA0,0x23,0x00,0x00,0x00,0x00,0x14,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0x80,0x8B,0x00,0x00,0x00,0x00,0x14,0x2E,0x80,0x85,0x00,0x00,0x00,0x7E,0x14,0x16,0x00,0x0B,0x01,0x00,0x80,0x81,0x0B,0x2C,0x00,0x17,0x02,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x2E,0x02,0x00,0xC0,0x00,0x35,0xB8,0x00,0x5E,0x04,0x00,0x40,0x81,0x42,0x58,0x00,0xAC,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x08,0x00,0xC0,0x19,0x00,0x71,0x01,0xB8,0x08,0x00,0x40,0x67,0x00,0xB2,0x02,0x78,0x11,0x00,0xC0,0x9A,0x07,0x62,0x05,0xD0,0x12,0x00,0x40,0x65,0xF8,0xE3,0x0A,0xB0,0x25,0x00,0xA0,0x82,0x07,0xC2,0x05,0x60,0x23,0x00,0x60,0x01,0xF8,0xC1,0x0A,0x20,0x2C,0x00,0xA0,0x02,0xE8,0x80,0x15,0x40,0x30,0x00,0x60,0x01,0x74,0x00,0x2B,0x40,0x40,0x00,0xA0,0x00,0x7A,0x00,0x57,0x80,0x90,0x00,0x60,0x01,0x3D,0x00,0xAE,0x80,0xA8,0x00,0xB0,0x80,0x1A,0x00,0x5C,0x81,0x10,0x01,0x50,0x41,0x1D,0x00,0xB8,0x82,0x00,0x01,0xB0,0x80,0x0E,0x00,0x70,0xC5,0x00,0x01,0x50,0x40,0x07,0x00,0xE0,0xFA,0x80,0x00,0xB0,0xA0,0x07,0x00,0x80,0xFF,0x63,0x00,0x58,0xD0,0x03,0x07,0x00,0x00,0x1C,0x00,0x28,0xA8,0xF1,0x18,0x06,0x00,0x00,0x00,0x58,0xD4,0x0D,0x60,0x09,0x00,0x00,0x00,0xB0,0x6A,0x42,0xC0,0x08,0x00,0x00,0x00,0x50,0xB5,0x05,0x40,0x10,0x00,0x00,0x00,0xA0,0x5A,0x00,0x60,0x10,0x00,0x00,0x00,0xC0,0xA5,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x17,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food9_61x98[] = {_I_food9_61x98_0}; - -const uint8_t _I_food12_61x98_0[] = {0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xC2,0x03,0x00,0x00,0x00,0x00,0x00,0xB8,0x21,0x04,0x00,0x00,0x00,0x00,0x00,0xC0,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x11,0x80,0x01,0x00,0x00,0x00,0x00,0x88,0x12,0x40,0x01,0x00,0x00,0x00,0x00,0x08,0x21,0x78,0x07,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x04,0x00,0x00,0x00,0x00,0x3C,0x20,0x62,0x02,0x00,0x00,0x00,0x00,0x42,0x60,0x42,0x01,0x00,0x00,0x00,0x00,0x81,0xA0,0x8A,0x00,0x00,0x00,0x00,0x80,0x02,0x61,0x83,0x00,0x00,0x00,0x00,0x80,0x01,0xCA,0x46,0x00,0x00,0x00,0x00,0xC0,0x02,0x54,0x3D,0x00,0x00,0x00,0x00,0xC0,0x05,0xEC,0x04,0x00,0x00,0x00,0x38,0xC0,0x02,0x58,0x09,0x00,0x00,0x00,0xC8,0xC1,0x05,0xF0,0x12,0x00,0x00,0x00,0x38,0x86,0x03,0xD0,0x11,0x00,0x00,0x00,0xC0,0x89,0x05,0xE0,0x22,0x00,0x00,0x00,0x00,0x92,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x42,0x00,0x00,0x00,0x00,0x14,0x0B,0x80,0x85,0x00,0x00,0x00,0x00,0x14,0x16,0x80,0x0B,0x01,0x00,0x00,0x7E,0x14,0x2E,0x00,0x17,0x01,0x00,0x80,0x81,0x0B,0x5C,0x00,0x2F,0x02,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x56,0x02,0x00,0xC0,0x00,0x35,0x5C,0x00,0x2E,0x04,0x00,0x40,0x81,0x42,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x86,0x83,0x58,0x01,0xBC,0x08,0x00,0xC0,0x19,0x00,0xB1,0x02,0x68,0x09,0x00,0x40,0x67,0x00,0x72,0x05,0xD8,0x12,0x00,0xC0,0x9A,0x07,0xE2,0x02,0xB0,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0x10,0x16,0x00,0xA0,0x82,0x07,0xC2,0x0A,0x20,0x18,0x00,0x60,0x01,0xF8,0x81,0x15,0x20,0x20,0x00,0xA0,0x02,0xE8,0x80,0x2B,0x40,0x48,0x00,0x60,0x01,0x74,0x00,0x57,0x40,0x54,0x00,0xA0,0x00,0x7A,0x00,0xAE,0x40,0x88,0x00,0x60,0x01,0x3D,0x00,0x5C,0x41,0x80,0x00,0xB0,0x80,0x1A,0x00,0xB8,0x62,0x80,0x00,0x50,0x41,0x1D,0x00,0x70,0x7D,0x40,0x00,0xB0,0x80,0x0E,0x00,0xC0,0xFF,0x31,0x00,0x50,0x40,0x07,0x07,0x00,0x00,0x0E,0x00,0xB0,0xA0,0xF3,0x18,0x06,0x00,0x00,0x00,0x58,0xD0,0x0D,0x60,0x09,0x00,0x00,0x00,0x28,0x28,0x42,0xC0,0x08,0x00,0x00,0x00,0x58,0x94,0x05,0x40,0x10,0x00,0x00,0x00,0xB0,0x4A,0x00,0x60,0x10,0x00,0x00,0x00,0x50,0xA5,0x80,0x30,0xDC,0x00,0x00,0x00,0xA0,0x12,0x00,0x18,0x7E,0x01,0x00,0x00,0xC0,0x09,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x25,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food12_61x98[] = {_I_food12_61x98_0}; - -const uint8_t _I_food4_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x18,0x00,0x00,0x00,0x06,0x88,0x07,0x00,0x14,0x00,0x00,0x00,0x0A,0x48,0x08,0x80,0x77,0x00,0x00,0x00,0x82,0x29,0x10,0x40,0x40,0x00,0x00,0x00,0x84,0x19,0x22,0x20,0x26,0x00,0x00,0x00,0x04,0x18,0x25,0x20,0x14,0x00,0x00,0x00,0x08,0x18,0x42,0xA0,0x08,0x00,0x00,0x00,0x30,0x10,0x40,0x20,0x08,0x00,0x00,0x00,0xC0,0x7D,0x40,0x60,0x04,0x00,0x00,0x00,0x00,0x86,0xC0,0xC0,0x03,0x00,0x00,0x00,0x00,0x02,0x41,0x01,0x00,0x00,0x00,0x00,0x00,0x05,0xC2,0x02,0x00,0x00,0x00,0x38,0x00,0x03,0x94,0x05,0x00,0x00,0x00,0xC8,0x81,0x05,0xA8,0x0A,0x00,0x00,0x00,0x38,0x86,0x0B,0xD8,0x09,0x00,0x00,0x00,0xC0,0x89,0x05,0xB0,0x12,0x00,0x00,0x00,0x00,0x92,0x0B,0xE0,0x25,0x00,0x00,0x00,0x00,0x14,0x07,0xA0,0x23,0x00,0x00,0x00,0x00,0x14,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0x80,0x8B,0x00,0x00,0x00,0x7E,0x14,0x2E,0x80,0x85,0x00,0x00,0x80,0x81,0x0B,0x16,0x00,0x0B,0x01,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x17,0x02,0x00,0xC0,0x00,0x35,0x5C,0x00,0x2E,0x02,0x00,0x40,0x81,0x42,0xB8,0x00,0x5E,0x04,0x00,0xC0,0x86,0x83,0x58,0x00,0xAC,0x04,0x00,0xC0,0x19,0x00,0xB9,0x00,0x5C,0x08,0x00,0x40,0x67,0x00,0x72,0x01,0xB8,0x08,0x00,0xC0,0x9A,0x07,0xB2,0x02,0x78,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0xD0,0x12,0x00,0xA0,0x82,0x07,0xE2,0x0A,0xB0,0x25,0x00,0x60,0x01,0xF8,0xC1,0x05,0x60,0x23,0x00,0xA0,0x02,0xE8,0xC0,0x0A,0x20,0x2C,0x00,0x60,0x01,0x74,0x80,0x15,0x40,0x30,0x00,0xA0,0x00,0x7A,0x00,0x2B,0x40,0x40,0x00,0x60,0x01,0x3D,0x00,0x57,0x80,0x90,0x00,0xB0,0x80,0x1A,0x00,0xAE,0x80,0xA8,0x00,0x50,0x41,0x1D,0x00,0x5C,0x81,0x10,0x01,0xB0,0x80,0x0E,0x00,0xB8,0x82,0x00,0x01,0x50,0x40,0x07,0x00,0x70,0xC5,0x00,0x01,0xB0,0xA0,0x07,0x00,0xE0,0xFA,0x80,0x00,0x58,0xD0,0x03,0x00,0x80,0xFF,0x63,0x00,0x28,0xA8,0x01,0x07,0x00,0x00,0x1C,0x00,0x58,0xD4,0xF1,0x18,0x06,0x00,0x00,0x00,0xB0,0xEA,0x0C,0x60,0x09,0x00,0x00,0x00,0x50,0x75,0x42,0xC0,0x08,0x00,0x00,0x00,0xA0,0xBA,0x05,0x40,0x10,0x00,0x00,0x00,0xC0,0x55,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xAF,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food4_61x98[] = {_I_food4_61x98_0}; - -const uint8_t _I_food2_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xC1,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x23,0x04,0x00,0x00,0x00,0x00,0x00,0x06,0x12,0x08,0x80,0x01,0x00,0x00,0x00,0xB8,0x09,0x11,0x40,0x01,0x00,0x00,0x00,0xC0,0x88,0x12,0x78,0x07,0x00,0x00,0x00,0x00,0x08,0x21,0x04,0x04,0x00,0x00,0x00,0x00,0x08,0x20,0x62,0x02,0x00,0x00,0x00,0x00,0x3C,0x20,0x42,0x01,0x00,0x00,0x00,0x00,0x42,0x60,0x8A,0x00,0x00,0x00,0x00,0x00,0x81,0xA0,0x82,0x00,0x00,0x00,0x00,0x80,0x02,0x61,0x47,0x00,0x00,0x00,0x00,0x80,0x01,0xCA,0x3E,0x00,0x00,0x00,0x00,0xC0,0x02,0x54,0x05,0x00,0x00,0x00,0x38,0xC0,0x05,0xEC,0x04,0x00,0x00,0x00,0xC8,0xC1,0x02,0x58,0x09,0x00,0x00,0x00,0x38,0xC6,0x05,0xF0,0x12,0x00,0x00,0x00,0xC0,0x89,0x03,0xD0,0x11,0x00,0x00,0x00,0x00,0x92,0x05,0xE0,0x22,0x00,0x00,0x00,0x00,0x94,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x42,0x00,0x00,0x00,0x00,0x14,0x0B,0x80,0x85,0x00,0x00,0x00,0x7E,0x14,0x16,0x80,0x0B,0x01,0x00,0x80,0x81,0x0B,0x2E,0x00,0x17,0x01,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x2F,0x02,0x00,0xC0,0x00,0x35,0x2C,0x00,0x56,0x02,0x00,0x40,0x81,0x42,0x5C,0x00,0x2E,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x19,0x00,0x59,0x01,0xBC,0x08,0x00,0x40,0x67,0x00,0xB2,0x02,0x68,0x09,0x00,0xC0,0x9A,0x07,0x72,0x05,0xD8,0x12,0x00,0x40,0x65,0xF8,0xE3,0x02,0xB0,0x11,0x00,0xA0,0x82,0x07,0x62,0x05,0x10,0x16,0x00,0x60,0x01,0xF8,0xC1,0x0A,0x20,0x18,0x00,0xA0,0x02,0xE8,0x80,0x15,0x20,0x20,0x00,0x60,0x01,0x74,0x80,0x2B,0x40,0x48,0x00,0xA0,0x00,0x7A,0x00,0x57,0x40,0x54,0x00,0x60,0x01,0x3D,0x00,0xAE,0x40,0x88,0x00,0xB0,0x80,0x1A,0x00,0x5C,0x41,0x80,0x00,0x50,0x41,0x1D,0x00,0xB8,0x62,0x80,0x00,0xB0,0x80,0x0E,0x00,0x70,0x7D,0x40,0x00,0x50,0x40,0x07,0x00,0xC0,0xFF,0x31,0x00,0xB0,0xA0,0x07,0x07,0x00,0x00,0x0E,0x00,0x58,0xD0,0xF3,0x18,0x06,0x00,0x00,0x00,0x28,0xA8,0x0D,0x60,0x09,0x00,0x00,0x00,0x58,0x54,0x42,0xC0,0x08,0x00,0x00,0x00,0xB0,0xAA,0x05,0x40,0x10,0x00,0x00,0x00,0x50,0x55,0x00,0x60,0x10,0x00,0x00,0x00,0xA0,0xAA,0x80,0x30,0xDC,0x00,0x00,0x00,0xC0,0x15,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x0B,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food2_61x98[] = {_I_food2_61x98_0}; - -const uint8_t _I_food7_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x4E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x08,0x00,0x00,0x06,0x00,0x00,0x00,0x0A,0x08,0x0F,0x00,0x05,0x00,0x00,0x00,0x82,0x89,0x10,0xE0,0x1D,0x00,0x00,0x00,0x84,0x49,0x20,0x10,0x10,0x00,0x00,0x00,0x04,0x28,0x44,0x88,0x09,0x00,0x00,0x00,0x08,0x38,0x4A,0x08,0x05,0x00,0x00,0x00,0x30,0x30,0x84,0x28,0x02,0x00,0x00,0x00,0xC0,0x2D,0x80,0x08,0x02,0x00,0x00,0x00,0x00,0xF6,0x80,0x18,0x01,0x00,0x00,0x00,0x00,0x08,0x81,0xF1,0x00,0x00,0x00,0x00,0x00,0x04,0x82,0x02,0x00,0x00,0x00,0x38,0x00,0x0A,0x84,0x05,0x00,0x00,0x00,0xC8,0x01,0x06,0x28,0x0B,0x00,0x00,0x00,0x38,0x06,0x0B,0x50,0x15,0x00,0x00,0x00,0xC0,0x09,0x17,0xB0,0x13,0x00,0x00,0x00,0x00,0x12,0x0B,0x60,0x25,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x4B,0x00,0x00,0x00,0x00,0x14,0x0E,0x40,0x47,0x00,0x00,0x00,0x00,0x14,0x16,0x80,0x8B,0x00,0x00,0x00,0x7E,0x14,0x2E,0x00,0x17,0x01,0x00,0x80,0x81,0x0B,0x5C,0x00,0x0B,0x01,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x16,0x02,0x00,0xC0,0x00,0x35,0x58,0x00,0x2E,0x04,0x00,0x40,0x81,0x42,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x86,0x83,0x70,0x01,0xBC,0x08,0x00,0xC0,0x19,0x00,0xB1,0x00,0x58,0x09,0x00,0x40,0x67,0x00,0x72,0x01,0xB8,0x10,0x00,0xC0,0x9A,0x07,0xE2,0x02,0x70,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0xF0,0x22,0x00,0xA0,0x82,0x07,0xC2,0x0A,0xA0,0x25,0x00,0x60,0x01,0xF8,0xC1,0x15,0x60,0x4B,0x00,0xA0,0x02,0xE8,0x80,0x0B,0xC0,0x46,0x00,0x60,0x01,0x74,0x80,0x15,0x40,0x58,0x00,0xA0,0x00,0x7A,0x00,0x2B,0x80,0x60,0x00,0x60,0x01,0x3D,0x00,0x56,0x80,0x80,0x00,0xB0,0x80,0x1A,0x00,0xAE,0x00,0x21,0x01,0x50,0x41,0x1D,0x00,0x5C,0x01,0x51,0x01,0xB0,0x80,0x0E,0x00,0xB8,0x02,0x21,0x02,0x50,0x40,0x07,0x00,0x70,0x05,0x01,0x02,0xB0,0xA0,0x07,0x00,0xE0,0x8A,0x01,0x02,0x58,0xD0,0x03,0x00,0xC0,0xF5,0x01,0x01,0x28,0xA8,0x01,0x00,0x00,0xFF,0xC7,0x00,0x58,0xD4,0x01,0x07,0x00,0x00,0x38,0x00,0xB0,0xEA,0xF0,0x18,0x06,0x00,0x00,0x00,0x50,0x75,0x0C,0x60,0x09,0x00,0x00,0x00,0xA0,0x7A,0x42,0xC0,0x08,0x00,0x00,0x00,0xC0,0xB5,0x05,0x40,0x10,0x00,0x00,0x00,0x00,0x5F,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xA0,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food7_61x98[] = {_I_food7_61x98_0}; - -const uint8_t _I_food11_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0xC1,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x23,0x04,0x00,0x00,0x00,0x00,0x00,0x06,0x12,0x08,0x00,0x00,0x00,0x00,0x00,0xB8,0x09,0x11,0x80,0x01,0x00,0x00,0x00,0xC0,0x88,0x12,0x40,0x01,0x00,0x00,0x00,0x00,0x08,0x21,0x78,0x07,0x00,0x00,0x00,0x00,0x08,0x20,0x04,0x04,0x00,0x00,0x00,0x00,0x3C,0x20,0x62,0x02,0x00,0x00,0x00,0x00,0x42,0x60,0x42,0x01,0x00,0x00,0x00,0x00,0x81,0xA0,0x8A,0x00,0x00,0x00,0x00,0x80,0x02,0x61,0x83,0x00,0x00,0x00,0x00,0x80,0x01,0xCA,0x46,0x00,0x00,0x00,0x00,0xC0,0x02,0x54,0x3D,0x00,0x00,0x00,0x00,0xC0,0x05,0xEC,0x04,0x00,0x00,0x00,0x38,0xC0,0x02,0x58,0x09,0x00,0x00,0x00,0xC8,0xC1,0x05,0xF0,0x12,0x00,0x00,0x00,0x38,0x86,0x03,0xD0,0x11,0x00,0x00,0x00,0xC0,0x89,0x05,0xE0,0x22,0x00,0x00,0x00,0x00,0x92,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x42,0x00,0x00,0x00,0x00,0x14,0x0B,0x80,0x85,0x00,0x00,0x00,0x00,0x14,0x16,0x80,0x0B,0x01,0x00,0x00,0x7E,0x14,0x2E,0x00,0x17,0x01,0x00,0x80,0x81,0x0B,0x5C,0x00,0x2F,0x02,0x00,0xC0,0x00,0x0D,0x2C,0x00,0x56,0x02,0x00,0xC0,0x00,0x35,0x5C,0x00,0x2E,0x04,0x00,0x40,0x81,0x42,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x86,0x83,0x58,0x01,0xBC,0x08,0x00,0xC0,0x19,0x00,0xB1,0x02,0x68,0x09,0x00,0x40,0x67,0x00,0x72,0x05,0xD8,0x12,0x00,0xC0,0x9A,0x07,0xE2,0x02,0xB0,0x11,0x00,0x40,0x65,0xF8,0x63,0x05,0x10,0x16,0x00,0xA0,0x82,0x07,0xC2,0x0A,0x20,0x18,0x00,0x60,0x01,0xF8,0x81,0x15,0x20,0x20,0x00,0xA0,0x02,0xE8,0x80,0x2B,0x40,0x48,0x00,0x60,0x01,0x74,0x00,0x57,0x40,0x54,0x00,0xA0,0x00,0x7A,0x00,0xAE,0x40,0x88,0x00,0x60,0x01,0x3D,0x00,0x5C,0x41,0x80,0x00,0xB0,0x80,0x1A,0x00,0xB8,0x62,0x80,0x00,0x50,0x41,0x1D,0x00,0x70,0x7D,0x40,0x00,0xB0,0x80,0x0E,0x00,0xC0,0xFF,0x31,0x00,0x50,0x40,0x07,0x07,0x00,0x00,0x0E,0x00,0xB0,0xA0,0xF3,0x18,0x06,0x00,0x00,0x00,0x58,0xD0,0x0D,0x60,0x09,0x00,0x00,0x00,0x28,0x28,0x42,0xC0,0x08,0x00,0x00,0x00,0x58,0x94,0x05,0x40,0x10,0x00,0x00,0x00,0xB0,0x4A,0x00,0x60,0x10,0x00,0x00,0x00,0x50,0xA5,0x80,0x30,0xDC,0x00,0x00,0x00,0xA0,0x12,0x00,0x18,0x7E,0x01,0x00,0x00,0xC0,0x09,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x25,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food11_61x98[] = {_I_food11_61x98_0}; - -const uint8_t _I_food1_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xC2,0x03,0x00,0x00,0x00,0x00,0x00,0xB8,0x21,0x04,0xC0,0x00,0x00,0x00,0x00,0xC0,0x10,0x08,0xA0,0x00,0x00,0x00,0x00,0x00,0x08,0x11,0xBC,0x03,0x00,0x00,0x00,0x00,0x88,0x12,0x02,0x02,0x00,0x00,0x00,0x00,0x08,0x21,0x31,0x01,0x00,0x00,0x00,0x00,0x08,0x20,0xA1,0x00,0x00,0x00,0x00,0x00,0x3C,0x20,0x45,0x00,0x00,0x00,0x00,0x00,0x42,0x60,0x41,0x00,0x00,0x00,0x00,0x00,0x81,0xA0,0x23,0x00,0x00,0x00,0x00,0x80,0x02,0x61,0x1F,0x00,0x00,0x00,0x00,0x80,0x01,0xCA,0x02,0x00,0x00,0x00,0x00,0xC0,0x02,0x54,0x05,0x00,0x00,0x00,0x38,0xC0,0x05,0xEC,0x04,0x00,0x00,0x00,0xC8,0xC1,0x02,0x58,0x09,0x00,0x00,0x00,0x38,0xC6,0x05,0xF0,0x12,0x00,0x00,0x00,0xC0,0x89,0x03,0xD0,0x11,0x00,0x00,0x00,0x00,0x92,0x05,0xE0,0x22,0x00,0x00,0x00,0x00,0x94,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x42,0x00,0x00,0x00,0x00,0x14,0x0B,0x80,0x85,0x00,0x00,0x00,0x7E,0x14,0x16,0x80,0x0B,0x01,0x00,0x80,0x81,0x0B,0x2E,0x00,0x17,0x01,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x2F,0x02,0x00,0xC0,0x00,0x35,0x2C,0x00,0x56,0x02,0x00,0x40,0x81,0x42,0x5C,0x00,0x2E,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x19,0x00,0x59,0x01,0xBC,0x08,0x00,0x40,0x67,0x00,0xB2,0x02,0x68,0x09,0x00,0xC0,0x9A,0x07,0x72,0x05,0xD8,0x12,0x00,0x40,0x65,0xF8,0xE3,0x02,0xB0,0x11,0x00,0xA0,0x82,0x07,0x62,0x05,0x10,0x16,0x00,0x60,0x01,0xF8,0xC1,0x0A,0x20,0x18,0x00,0xA0,0x02,0xE8,0x80,0x15,0x20,0x20,0x00,0x60,0x01,0x74,0x80,0x2B,0x40,0x48,0x00,0xA0,0x00,0x7A,0x00,0x57,0x40,0x54,0x00,0x60,0x01,0x3D,0x00,0xAE,0x40,0x88,0x00,0xB0,0x80,0x1A,0x00,0x5C,0x41,0x80,0x00,0x50,0x41,0x1D,0x00,0xB8,0x62,0x80,0x00,0xB0,0x80,0x0E,0x00,0x70,0x7D,0x40,0x00,0x50,0x40,0x07,0x00,0xC0,0xFF,0x31,0x00,0xB0,0xA0,0x07,0x07,0x00,0x00,0x0E,0x00,0x58,0xD0,0xF3,0x18,0x06,0x00,0x00,0x00,0x28,0xA8,0x0D,0x60,0x09,0x00,0x00,0x00,0x58,0x54,0x42,0xC0,0x08,0x00,0x00,0x00,0xB0,0xAA,0x05,0x40,0x10,0x00,0x00,0x00,0x50,0x55,0x00,0x60,0x10,0x00,0x00,0x00,0xA0,0xAA,0x80,0x30,0xDC,0x00,0x00,0x00,0xC0,0x15,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x0B,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food1_61x98[] = {_I_food1_61x98_0}; - -const uint8_t _I_food6_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0xC0,0x00,0x00,0x00,0x00,0x01,0x02,0x0F,0xA0,0x00,0x00,0x00,0x00,0x03,0x84,0x10,0xBC,0x03,0x00,0x00,0x00,0x05,0x44,0x20,0x02,0x02,0x00,0x00,0x00,0xC1,0x24,0x44,0x31,0x01,0x00,0x00,0x00,0xC2,0x24,0x4A,0xA1,0x00,0x00,0x00,0x00,0x02,0x24,0x84,0x45,0x00,0x00,0x00,0x00,0x04,0x2C,0x80,0x41,0x00,0x00,0x00,0x00,0x18,0xF8,0x80,0x23,0x00,0x00,0x00,0x00,0xE0,0x0E,0x81,0x1F,0x00,0x00,0x00,0x38,0x00,0x07,0x82,0x02,0x00,0x00,0x00,0xC8,0x01,0x0A,0x84,0x05,0x00,0x00,0x00,0x38,0x06,0x06,0x28,0x0B,0x00,0x00,0x00,0xC0,0x09,0x0B,0x50,0x15,0x00,0x00,0x00,0x00,0x12,0x17,0xB0,0x13,0x00,0x00,0x00,0x00,0x14,0x0B,0x60,0x25,0x00,0x00,0x00,0x00,0x14,0x17,0xC0,0x4B,0x00,0x00,0x00,0x00,0x14,0x0E,0x40,0x47,0x00,0x00,0x00,0x7E,0x14,0x16,0x80,0x8B,0x00,0x00,0x80,0x81,0x0B,0x2E,0x00,0x17,0x01,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x0B,0x01,0x00,0xC0,0x00,0x35,0x2C,0x00,0x16,0x02,0x00,0x40,0x81,0x42,0x58,0x00,0x2E,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x04,0x00,0xC0,0x19,0x00,0x71,0x01,0xBC,0x08,0x00,0x40,0x67,0x00,0xB2,0x00,0x58,0x09,0x00,0xC0,0x9A,0x07,0x72,0x01,0xB8,0x10,0x00,0x40,0x65,0xF8,0xE3,0x02,0x70,0x11,0x00,0xA0,0x82,0x07,0x62,0x05,0xF0,0x22,0x00,0x60,0x01,0xF8,0xC1,0x0A,0xA0,0x25,0x00,0xA0,0x02,0xE8,0xC0,0x15,0x60,0x4B,0x00,0x60,0x01,0x74,0x80,0x0B,0xC0,0x46,0x00,0xA0,0x00,0x7A,0x80,0x15,0x40,0x58,0x00,0x60,0x01,0x3D,0x00,0x2B,0x80,0x60,0x00,0xB0,0x80,0x1A,0x00,0x56,0x80,0x80,0x00,0x50,0x41,0x1D,0x00,0xAE,0x00,0x21,0x01,0xB0,0x80,0x0E,0x00,0x5C,0x01,0x51,0x01,0x50,0x40,0x07,0x00,0xB8,0x02,0x21,0x02,0xB0,0xA0,0x07,0x00,0x70,0x05,0x01,0x02,0x58,0xD0,0x03,0x00,0xE0,0x8A,0x01,0x02,0x28,0xA8,0x01,0x00,0xC0,0xF5,0x01,0x01,0x58,0xD4,0x01,0x00,0x00,0xFF,0xC7,0x00,0xB0,0xEA,0x00,0x07,0x00,0x00,0x38,0x00,0x50,0x75,0xF0,0x18,0x06,0x00,0x00,0x00,0xA0,0x7A,0x0C,0x60,0x09,0x00,0x00,0x00,0xC0,0x35,0x42,0xC0,0x08,0x00,0x00,0x00,0x00,0x9F,0x05,0x40,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0xA0,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x10,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food6_61x98[] = {_I_food6_61x98_0}; - -const uint8_t _I_food10_61x98_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x4C,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x82,0x07,0x00,0x00,0x00,0x00,0x00,0x61,0x42,0x08,0x00,0x18,0x00,0x00,0x00,0x01,0x22,0x10,0x00,0x14,0x00,0x00,0x00,0x02,0x16,0x22,0x80,0x77,0x00,0x00,0x00,0x0C,0x14,0x25,0x40,0x40,0x00,0x00,0x00,0x70,0x13,0x42,0x20,0x26,0x00,0x00,0x00,0x80,0x11,0x40,0x20,0x14,0x00,0x00,0x00,0x00,0x78,0x40,0xA0,0x08,0x00,0x00,0x00,0x00,0x84,0xC0,0x20,0x08,0x00,0x00,0x00,0x00,0x02,0x41,0x61,0x04,0x00,0x00,0x00,0x00,0x05,0xC2,0xC2,0x03,0x00,0x00,0x00,0x00,0x03,0x94,0x05,0x00,0x00,0x00,0x38,0x80,0x05,0xA8,0x0A,0x00,0x00,0x00,0xC8,0x81,0x0B,0xD8,0x09,0x00,0x00,0x00,0x38,0x86,0x05,0xB0,0x12,0x00,0x00,0x00,0xC0,0x89,0x0B,0xE0,0x25,0x00,0x00,0x00,0x00,0x12,0x07,0xA0,0x23,0x00,0x00,0x00,0x00,0x14,0x0B,0xC0,0x45,0x00,0x00,0x00,0x00,0x14,0x17,0x80,0x8B,0x00,0x00,0x00,0x00,0x14,0x2E,0x80,0x85,0x00,0x00,0x00,0x7E,0x14,0x16,0x00,0x0B,0x01,0x00,0x80,0x81,0x0B,0x2C,0x00,0x17,0x02,0x00,0xC0,0x00,0x0D,0x5C,0x00,0x2E,0x02,0x00,0xC0,0x00,0x35,0xB8,0x00,0x5E,0x04,0x00,0x40,0x81,0x42,0x58,0x00,0xAC,0x04,0x00,0xC0,0x86,0x83,0xB8,0x00,0x5C,0x08,0x00,0xC0,0x19,0x00,0x71,0x01,0xB8,0x08,0x00,0x40,0x67,0x00,0xB2,0x02,0x78,0x11,0x00,0xC0,0x9A,0x07,0x62,0x05,0xD0,0x12,0x00,0x40,0x65,0xF8,0xE3,0x0A,0xB0,0x25,0x00,0xA0,0x82,0x07,0xC2,0x05,0x60,0x23,0x00,0x60,0x01,0xF8,0xC1,0x0A,0x20,0x2C,0x00,0xA0,0x02,0xE8,0x80,0x15,0x40,0x30,0x00,0x60,0x01,0x74,0x00,0x2B,0x40,0x40,0x00,0xA0,0x00,0x7A,0x00,0x57,0x80,0x90,0x00,0x60,0x01,0x3D,0x00,0xAE,0x80,0xA8,0x00,0xB0,0x80,0x1A,0x00,0x5C,0x81,0x10,0x01,0x50,0x41,0x1D,0x00,0xB8,0x82,0x00,0x01,0xB0,0x80,0x0E,0x00,0x70,0xC5,0x00,0x01,0x50,0x40,0x07,0x00,0xE0,0xFA,0x80,0x00,0xB0,0xA0,0x07,0x00,0x80,0xFF,0x63,0x00,0x58,0xD0,0x03,0x07,0x00,0x00,0x1C,0x00,0x28,0xA8,0xF1,0x18,0x06,0x00,0x00,0x00,0x58,0xD4,0x0D,0x60,0x09,0x00,0x00,0x00,0xB0,0x6A,0x42,0xC0,0x08,0x00,0x00,0x00,0x50,0xB5,0x05,0x40,0x10,0x00,0x00,0x00,0xA0,0x5A,0x00,0x60,0x10,0x00,0x00,0x00,0xC0,0xA5,0x80,0x30,0xDC,0x00,0x00,0x00,0x00,0x17,0x00,0x18,0x7E,0x01,0x00,0x00,0x00,0x08,0x04,0x8C,0x1F,0x01,0x00,0x00,0x00,0x24,0x00,0x46,0x07,0x01,0x00,0x00,0x00,0x02,0x00,0x07,0x83,0x00,0x00,0x00,0x00,0x21,0x80,0x03,0x61,0x00,0x00,0x00,0x80,0x00,0xC0,0xC3,0x11,0x00,0x00,0x00,0x40,0x02,0xE0,0xF1,0xEF,0x01,0x00,0x00,0x40,0x00,0xF0,0x38,0xF9,0x1F,0x00,0x00,0xA0,0x10,0x18,0x1C,0xBF,0x27,0x00,0x00,0x20,0x00,0x0E,0x88,0x5F,0x47,0x00,0x00,0x20,0x00,0x03,0xC8,0xAF,0x4B,0x00,0x00,0x20,0xC0,0x03,0xE6,0x57,0x47,0x00,0x00,0x40,0xF0,0xF1,0xF1,0xAB,0x47,0x00,0x00,0x40,0x7C,0xF8,0xF8,0xD5,0x21,0x00,0x00,0xE0,0x07,0xFC,0xFD,0xEA,0x20,0x00,0x00,0xE0,0x01,0xCC,0x5F,0x75,0x10,0x00,0x00,0xC0,0x00,0xCC,0xAF,0x1A,0x10,0x00,0x00,0x60,0x38,0xE4,0x57,0x0F,0x08,0x00,0x00,0x30,0x7C,0xE3,0xAA,0x03,0x04,0x00,0x00,0x30,0xF6,0x70,0xD5,0x00,0x03,0x00,0x00,0xE0,0x7B,0xA8,0x3A,0x80,0x00,0x00,0x00,0x00,0x18,0x54,0x0D,0x60,0x00,0x00,0x00,0x00,0x08,0xAA,0x03,0x10,0x00,0x00,0x00,0x00,0x90,0xF9,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_food10_61x98[] = {_I_food10_61x98_0}; - -const uint8_t _I_rightdown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x1F,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xA2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x21,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightdown2_73x61[] = {_I_rightdown2_73x61_0}; - -const uint8_t _I_black_upright2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFE,0xFF,0x1F,0xFC,0xF7,0x01,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0xF8,0xC7,0x00,0x00,0x00,0x00,0x80,0xFF,0x3F,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_upright2_73x61[] = {_I_black_upright2_73x61_0}; - -const uint8_t _I_black_leftup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xF9,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0xFF,0xFF,0x03,0x38,0x00,0x00,0x00,0x00,0x1E,0xF8,0xFF,0xFF,0x0F,0x7C,0x00,0x00,0x00,0x00,0x0C,0xE0,0xFF,0xFF,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_leftup1_73x61[] = {_I_black_leftup1_73x61_0}; - -const uint8_t _I_black_upleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFE,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xFC,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xDF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_upleft1_73x61[] = {_I_black_upleft1_73x61_0}; - -const uint8_t _I_black_down2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x8F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xDF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_down2_73x61[] = {_I_black_down2_73x61_0}; - -const uint8_t _I_downleft3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x88,0x01,0x00,0x00,0x00,0x00,0x60,0x08,0x00,0x00,0x08,0x06,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x07,0x38,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0xE0,0x00,0x40,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x1E,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x02,0xF0,0x01,0x30,0x3C,0x00,0x00,0xC0,0xFF,0x03,0xFE,0x0F,0x00,0xCE,0x03,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x80,0x30,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x40,0x30,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x38,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x06,0x0C,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x02,0x38,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0x00,0x82,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downleft3_73x61[] = {_I_downleft3_73x61_0}; - -const uint8_t _I_down2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xC7,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x44,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x44,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x38,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_down2_73x61[] = {_I_down2_73x61_0}; - -const uint8_t _I_black_downright2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xF9,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x3F,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xC1,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xC3,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xE7,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downright2_73x61[] = {_I_black_downright2_73x61_0}; - -const uint8_t _I_black_downleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x9F,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x1D,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xE1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downleft2_73x61[] = {_I_black_downleft2_73x61_0}; - -const uint8_t _I_up2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x38,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x44,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x44,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xC7,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_up2_73x61[] = {_I_up2_73x61_0}; - -const uint8_t _I_right1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x0C,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x0C,0x02,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x0C,0x1E,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x20,0x00,0x00,0xF0,0x03,0x40,0x00,0x00,0x38,0x00,0x10,0x00,0xFE,0x0F,0xFC,0x41,0x00,0xFC,0x07,0x00,0x10,0xE0,0x01,0x00,0x00,0x7E,0xC0,0x07,0x00,0x00,0x0C,0x1C,0x00,0x00,0x00,0x40,0xE0,0x03,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x20,0x98,0x03,0x00,0x00,0xE2,0x00,0x00,0x00,0x00,0x10,0xC6,0x01,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_right1_73x61[] = {_I_right1_73x61_0}; - -const uint8_t _I_black_up1_73x61_0[] = {0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFF,0x1F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xEF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xC7,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_up1_73x61[] = {_I_black_up1_73x61_0}; - -const uint8_t _I_upright1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x43,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x40,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x20,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_upright1_73x61[] = {_I_upright1_73x61_0}; - -const uint8_t _I_black_rightleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x07,0x40,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x7F,0xF8,0x01,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0xBE,0xFF,0xFF,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x0C,0xFC,0x3F,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightleft2_73x61[] = {_I_black_rightleft2_73x61_0}; - -const uint8_t _I_black_right3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0xE0,0xFF,0xC0,0x1F,0x00,0x00,0xE0,0xFF,0x03,0x00,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFE,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xFE,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x3C,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xE7,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_right3_73x61[] = {_I_black_right3_73x61_0}; - -const uint8_t _I_upleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x3F,0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x0C,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xFC,0xC1,0x1F,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x3C,0x41,0xE0,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x0C,0x41,0x00,0x0E,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x70,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x80,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_upleft2_73x61[] = {_I_upleft2_73x61_0}; - -const uint8_t _I_black_downup3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC7,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downup3_73x61[] = {_I_black_downup3_73x61_0}; - -const uint8_t _I_black_updown3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_updown3_73x61[] = {_I_black_updown3_73x61_0}; - -const uint8_t _I_leftup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x01,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x02,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x02,0x60,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xC0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_leftup2_73x61[] = {_I_leftup2_73x61_0}; - -const uint8_t _I_leftdown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8A,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_leftdown2_73x61[] = {_I_leftdown2_73x61_0}; - -const uint8_t _I_downup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF2,0xC3,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x24,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x18,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x10,0x00,0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x20,0x0F,0x00,0xE0,0x09,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downup1_73x61[] = {_I_downup1_73x61_0}; - -const uint8_t _I_updown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x28,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x0F,0x00,0xE0,0x09,0x00,0x00,0x00,0x00,0x00,0xC0,0x10,0x00,0x10,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x30,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x48,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF2,0x87,0x9F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_updown1_73x61[] = {_I_updown1_73x61_0}; - -const uint8_t _I_rightup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x19,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0x03,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x10,0xC0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x85,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x40,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x30,0x90,0x00,0x00,0x00,0x00,0x38,0x80,0x00,0x00,0x0C,0x60,0x00,0x00,0x00,0x00,0x44,0x60,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x84,0x18,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x07,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightup1_73x61[] = {_I_rightup1_73x61_0}; - -const uint8_t _I_black_rightdown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x01,0xF0,0x07,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xF0,0x07,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xE0,0x07,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF1,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightdown1_73x61[] = {_I_black_rightdown1_73x61_0}; - -const uint8_t _I_downleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC2,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x02,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x02,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x02,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x84,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x38,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0xF8,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xFF,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xC0,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downleft2_73x61[] = {_I_downleft2_73x61_0}; - -const uint8_t _I_downright1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x83,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x74,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downright1_73x61[] = {_I_downright1_73x61_0}; - -const uint8_t _I_black_downright3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0xF0,0x0F,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0xE0,0x3F,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x1F,0xC0,0xFF,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x80,0xE7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xE7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downright3_73x61[] = {_I_black_downright3_73x61_0}; - -const uint8_t _I_black_downleft3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0xC0,0x3F,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0xE0,0x3F,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0xFC,0x0F,0xE0,0xFF,0xFF,0xFF,0x01,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0x07,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downleft3_73x61[] = {_I_black_downleft3_73x61_0}; - -const uint8_t _I_rightleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0xC0,0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x1A,0x30,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x22,0x0C,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xC2,0x03,0x00,0x18,0x3C,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x18,0x43,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x18,0x40,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x88,0x07,0x00,0x10,0x21,0x00,0x00,0x00,0x00,0x00,0x44,0x38,0x00,0xE0,0x30,0x00,0x00,0x00,0x00,0x00,0x44,0xC0,0x01,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x1E,0x80,0x7B,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x10,0x7E,0x60,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightleft1_73x61[] = {_I_rightleft1_73x61_0}; - -const uint8_t _I_black_right2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xF8,0xFF,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0xFC,0x07,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xFC,0x03,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFE,0x01,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFE,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x01,0x7E,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x00,0x3C,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF3,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_right2_73x61[] = {_I_black_right2_73x61_0}; - -const uint8_t _I_black_rightup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x79,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightup2_73x61[] = {_I_black_rightup2_73x61_0}; - -const uint8_t _I_black_downup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,0xFF,0x1F,0x0E,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downup2_73x61[] = {_I_black_downup2_73x61_0}; - -const uint8_t _I_black_updown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xC0,0xE1,0xFF,0x3F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_updown2_73x61[] = {_I_black_updown2_73x61_0}; - -const uint8_t _I_black_left1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0xC0,0xFF,0xFF,0xFF,0x7F,0xE0,0xFF,0xFF,0x7F,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x80,0xFF,0x3F,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0xC7,0x1F,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_left1_73x61[] = {_I_black_left1_73x61_0}; - -const uint8_t _I_black_leftdown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_leftdown2_73x61[] = {_I_black_leftdown2_73x61_0}; - -const uint8_t _I_left1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x40,0x30,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x40,0x30,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x78,0x30,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x1C,0x00,0x00,0x02,0xC0,0x0F,0x00,0x00,0x04,0x00,0xE0,0x3F,0x00,0x82,0x3F,0xF0,0x7F,0x00,0x08,0x00,0x00,0xE0,0x03,0x7E,0x00,0x00,0x80,0x07,0x08,0x00,0x00,0xC0,0x07,0x02,0x00,0x00,0x00,0x38,0x30,0x00,0x00,0xC0,0x19,0x04,0x00,0x00,0x00,0xC0,0x40,0x00,0x00,0x80,0x63,0x08,0x00,0x00,0x00,0x00,0x47,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_left1_73x61[] = {_I_left1_73x61_0}; - -const uint8_t _I_rightup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x08,0x80,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x08,0x40,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x06,0x40,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x03,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightup2_73x61[] = {_I_rightup2_73x61_0}; - -const uint8_t _I_black_rightdown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightdown2_73x61[] = {_I_black_rightdown2_73x61_0}; - -const uint8_t _I_downup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x83,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x10,0x9F,0x44,0xF2,0x11,0x00,0x00,0x00,0x00,0x00,0x20,0x0C,0x38,0x60,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x0E,0x00,0xE0,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0xCF,0x82,0xE6,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x7C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x45,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downup2_73x61[] = {_I_downup2_73x61_0}; - -const uint8_t _I_updown2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x45,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCC,0x00,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCE,0x7C,0xE6,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xCF,0x82,0xE6,0x03,0x00,0x00,0x00,0x00,0x00,0x40,0x0E,0x00,0xE0,0x04,0x00,0x00,0x00,0x00,0x00,0x20,0x0C,0x38,0x60,0x08,0x00,0x00,0x00,0x00,0x00,0x10,0x9F,0x44,0xF2,0x11,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x83,0x11,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_updown2_73x61[] = {_I_updown2_73x61_0}; - -const uint8_t _I_right3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x20,0x06,0x00,0x00,0x40,0x40,0xE0,0x0F,0x00,0x00,0x20,0xF8,0x01,0x00,0x40,0x80,0x1F,0x70,0x00,0x00,0x10,0x00,0xFE,0xFF,0x3F,0x00,0x00,0x80,0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x33,0x00,0x00,0x00,0x00,0x00,0x18,0x04,0x00,0xE2,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x04,0x00,0x1E,0x00,0x03,0x00,0x00,0x00,0x00,0x18,0x3C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x10,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x18,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xF3,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_right3_73x61[] = {_I_right3_73x61_0}; - -const uint8_t _I_downright2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x89,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x81,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x42,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x38,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x3F,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downright2_73x61[] = {_I_downright2_73x61_0}; - -const uint8_t _I_downleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x83,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x5C,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x03,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x18,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downleft1_73x61[] = {_I_downleft1_73x61_0}; - -const uint8_t _I_black_rightup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF3,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0xFE,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFB,0x03,0x00,0x00,0x00,0x70,0x00,0xFF,0xFF,0xFF,0xF0,0x03,0x00,0x00,0x00,0xF8,0xC0,0xFF,0xFF,0x7F,0xE0,0x01,0x00,0x00,0x00,0xFC,0xF1,0xFF,0xFF,0x1F,0xC0,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightup1_73x61[] = {_I_black_rightup1_73x61_0}; - -const uint8_t _I_black_right1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xF8,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0xFF,0x0F,0x00,0xFC,0xFF,0x03,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0xFE,0x07,0x00,0x00,0x00,0xF0,0xFF,0x07,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0xE0,0x8F,0x03,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_right1_73x61[] = {_I_black_right1_73x61_0}; - -const uint8_t _I_rightleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x80,0x03,0x20,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x0C,0x58,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x30,0x44,0x00,0x00,0x00,0x00,0x00,0x3C,0x18,0x00,0xC0,0x43,0x00,0x00,0x00,0x00,0x00,0xC2,0x18,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x02,0x18,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x84,0x08,0x00,0xE0,0x11,0x00,0x00,0x00,0x00,0x00,0x0C,0x07,0x00,0x1C,0x22,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x80,0x03,0x22,0x00,0x00,0x00,0x00,0x00,0xDE,0x01,0x78,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x06,0x7E,0x08,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightleft2_73x61[] = {_I_rightleft2_73x61_0}; - -const uint8_t _I_left2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x20,0x00,0x40,0x30,0x00,0x00,0x00,0x80,0x07,0x3E,0x10,0x00,0x40,0x30,0x00,0x00,0x00,0x70,0x00,0x40,0x10,0x00,0x78,0x30,0x00,0x00,0x00,0x0E,0x00,0x80,0x20,0x00,0x04,0x00,0x00,0x10,0xE0,0x01,0x00,0x00,0x21,0x00,0x02,0x10,0x00,0x10,0x1F,0x00,0x00,0x00,0x42,0x00,0xFE,0x0F,0x00,0xF8,0x00,0x00,0x00,0x00,0x44,0x00,0x1C,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x78,0x00,0xE0,0xFF,0x3F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_left2_73x61[] = {_I_left2_73x61_0}; - -const uint8_t _I_black_left2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFC,0x7F,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x80,0xFF,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0xFF,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0xFE,0x01,0xFE,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0xFC,0x01,0xFC,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xF8,0x01,0xF8,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xF0,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_left2_73x61[] = {_I_black_left2_73x61_0}; - -const uint8_t _I_black_downup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xC3,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xE7,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xFF,0x1F,0x06,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downup1_73x61[] = {_I_black_downup1_73x61_0}; - -const uint8_t _I_black_updown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0xE1,0xFF,0x3F,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x9F,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_updown1_73x61[] = {_I_black_updown1_73x61_0}; - -const uint8_t _I_black_leftdown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x80,0x3F,0xFC,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x83,0x1F,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_leftdown1_73x61[] = {_I_black_leftdown1_73x61_0}; - -const uint8_t _I_downup3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x28,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x44,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xC0,0x1F,0x44,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x29,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xEF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC7,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downup3_73x61[] = {_I_downup3_73x61_0}; - -const uint8_t _I_updown3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC7,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xEF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x29,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x44,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x44,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x44,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x28,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x10,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x00,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_updown3_73x61[] = {_I_updown3_73x61_0}; - -const uint8_t _I_black_leftup2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_leftup2_73x61[] = {_I_black_leftup2_73x61_0}; - -const uint8_t _I_black_upright1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_upright1_73x61[] = {_I_black_upright1_73x61_0}; - -const uint8_t _I_rightdown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x19,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x03,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x60,0x00,0xFC,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x7F,0x08,0x02,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x80,0x07,0x02,0x00,0x00,0x00,0x00,0x08,0x7C,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0xF0,0x83,0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xC1,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xC7,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xC8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_rightdown1_73x61[] = {_I_rightdown1_73x61_0}; - -const uint8_t _I_right2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x04,0x80,0x1F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x7C,0xE0,0x01,0x00,0x00,0x00,0x0C,0x02,0x00,0x08,0x02,0x00,0x0E,0x00,0x00,0x00,0x0C,0x02,0x00,0x04,0x01,0x00,0x70,0x00,0x00,0x00,0x0C,0x1E,0x00,0x84,0x00,0x00,0x80,0x07,0x08,0x00,0x00,0x20,0x00,0x42,0x00,0x00,0x00,0xF8,0x08,0x00,0x08,0x40,0x00,0x22,0x00,0x00,0x00,0x00,0x1F,0x00,0xF0,0x7F,0x00,0x1E,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xFC,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_right2_73x61[] = {_I_right2_73x61_0}; - -const uint8_t _I_black_downleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x83,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xDF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xFC,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFE,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_downleft1_73x61[] = {_I_black_downleft1_73x61_0}; - -const uint8_t _I_down1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xC7,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x44,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x40,0x3F,0x44,0xF8,0x05,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x44,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x38,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_down1_73x61[] = {_I_down1_73x61_0}; - -const uint8_t _I_black_downright1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xEF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x3D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,}; -const uint8_t *_I_black_downright1_73x61[] = {_I_black_downright1_73x61_0}; - -const uint8_t _I_up1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x38,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x44,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x40,0x3F,0x44,0xF8,0x05,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x44,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x44,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x28,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x28,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xC7,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_up1_73x61[] = {_I_up1_73x61_0}; - -const uint8_t _I_downright3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x11,0x00,0x00,0xF0,0x01,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x10,0x06,0x00,0x00,0x00,0x00,0x1C,0xE0,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x02,0x00,0x78,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x3C,0x0C,0x80,0x0F,0x40,0x40,0x00,0x00,0x00,0x00,0xC0,0x73,0x00,0xF0,0x7F,0xC0,0xFF,0x03,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x0C,0x01,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x0C,0x02,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0C,0x1C,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x1C,0x40,0x00,0xC0,0x3F,0x00,0x00,0x00,0x00,0x00,0xE0,0x41,0x00,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_downright3_73x61[] = {_I_downright3_73x61_0}; - -const uint8_t _I_black_down1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x8F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xDF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0xFF,0x3F,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_down1_73x61[] = {_I_black_down1_73x61_0}; - -const uint8_t _I_black_upleft2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xBE,0xFF,0xE0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x8C,0x7F,0x00,0xFE,0xFF,0x03,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0xF0,0xFF,0x07,0x00,0x00,0x00,0x00,0x80,0x1F,0x00,0x80,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFC,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_upleft2_73x61[] = {_I_black_upleft2_73x61_0}; - -const uint8_t _I_upleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x02,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_upleft1_73x61[] = {_I_upleft1_73x61_0}; - -const uint8_t _I_black_rightleft1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x08,0x80,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x3C,0xE0,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x7E,0xF8,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFC,0xF1,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0xFC,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x7C,0x00,0xFC,0xFF,0xF7,0x01,0x00,0x00,0x00,0x00,0x3C,0x00,0xF0,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0xF8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_rightleft1_73x61[] = {_I_black_rightleft1_73x61_0}; - -const uint8_t _I_black_up2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xEF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0xC7,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_up2_73x61[] = {_I_black_up2_73x61_0}; - -const uint8_t _I_upright2_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x80,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x81,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x61,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0xF0,0x07,0x7F,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0F,0x04,0x79,0x00,0x00,0x00,0x00,0x00,0x02,0xE0,0x00,0x04,0x61,0x00,0x00,0x00,0x00,0x00,0x01,0x1C,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x80,0x80,0x03,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0xE0,0x01,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_upright2_73x61[] = {_I_upright2_73x61_0}; - -const uint8_t _I_leftdown1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0xC0,0x03,0x01,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x3F,0x00,0x06,0x00,0x00,0x00,0x00,0x40,0x10,0xFE,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x40,0xE0,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x3E,0x10,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x80,0xC1,0x0F,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x83,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xE3,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x13,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_leftdown1_73x61[] = {_I_leftdown1_73x61_0}; - -const uint8_t _I_left3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x0F,0x00,0x00,0xE0,0x0F,0x04,0x04,0x00,0x00,0xC0,0x08,0x00,0x00,0x1C,0xF0,0x03,0x04,0x00,0x00,0x3F,0x08,0x00,0x00,0x03,0x00,0x00,0xF8,0xFF,0xFF,0x00,0x10,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x00,0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x98,0x81,0x00,0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x06,0x8E,0x00,0x78,0x30,0x00,0x00,0x00,0x00,0x80,0x01,0xF0,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0xE0,0x07,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x30,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x9F,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_left3_73x61[] = {_I_left3_73x61_0}; - -const uint8_t _I_leftup1_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x98,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x01,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0x01,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xC0,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x03,0x08,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x07,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xA1,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x02,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x0C,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x00,0x00,0x01,0x1C,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x06,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x18,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_leftup1_73x61[] = {_I_leftup1_73x61_0}; - -const uint8_t _I_black_left3_73x61_0[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x1F,0x00,0x00,0x00,0x0F,0x00,0x00,0xE0,0x0F,0xFC,0x1F,0x00,0x00,0xC0,0x1F,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,0xFF,0x1F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x9F,0xFF,0x01,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFE,0x01,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x9F,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xFC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}; -const uint8_t *_I_black_left3_73x61[] = {_I_black_left3_73x61_0}; - const uint8_t _I_BadUsb_9x8_0[] = {0x01,0x01,0xBB,0x01,0xFE,0x00,0xFE,0x00,0xD6,0x00,0xD6,0x00,0x7C,0x00,0x38,0x00,}; const uint8_t *_I_BadUsb_9x8[] = {_I_BadUsb_9x8_0}; @@ -825,13 +429,6 @@ const uint8_t *_I_DolphinNice_96x59[] = {_I_DolphinNice_96x59_0}; const uint8_t _I_DolphinWait_61x59_0[] = {0x00,0x00,0x00,0xFE,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0x70,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x06,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x0C,0x03,0x00,0x00,0x01,0x00,0x40,0x00,0xF2,0x05,0x00,0x00,0x01,0x00,0x40,0x00,0xF9,0x0B,0x00,0x80,0x03,0x00,0x00,0x00,0x3D,0x0F,0x00,0x80,0x02,0x00,0x00,0x80,0x3C,0x17,0x00,0x80,0x07,0x00,0x10,0x80,0xFC,0x17,0x00,0x80,0x07,0x00,0x10,0x80,0xFC,0x17,0x00,0x80,0x07,0x00,0x08,0x80,0xFC,0x17,0x80,0xFF,0x7F,0x00,0x08,0x80,0xF8,0x0B,0x60,0x00,0x80,0x01,0x00,0x40,0xF3,0x09,0x1C,0x00,0x00,0x06,0x04,0xA8,0x02,0x04,0x03,0x00,0x00,0x08,0x04,0x54,0x0D,0x83,0x00,0x00,0x00,0x08,0x00,0xAA,0xFF,0x00,0x00,0x00,0x00,0x10,0x02,0xD5,0x38,0x00,0x00,0x00,0x00,0x10,0x82,0x2A,0x40,0x00,0x00,0x00,0x00,0x10,0x00,0x15,0x80,0x00,0x00,0x00,0x00,0x10,0x82,0x0A,0x00,0x00,0x00,0xF8,0x3F,0x10,0x03,0x0D,0x00,0x00,0x00,0x07,0xC0,0x17,0x81,0x0A,0x00,0x00,0xE0,0x00,0x00,0x08,0x03,0x0D,0x04,0x00,0x1C,0x00,0x00,0x08,0x81,0x1A,0x04,0x00,0x03,0x00,0x00,0x08,0x03,0x15,0x04,0xC0,0x00,0x00,0x00,0x08,0x01,0x0A,0x08,0x30,0x00,0x00,0x00,0x04,0x03,0x00,0x30,0x0C,0x00,0x00,0x00,0x02,0x01,0x00,0xC0,0x03,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x02,0x00,0x00,0x00,0x00,0x54,0x20,0x00,0x05,0x00,0x00,0x00,0x80,0xAA,0x1A,0x00,0x02,0x00,0x00,0x00,0x50,0x55,0x07,0x00,0x05,0x00,0x00,0x00,0xAA,0xAA,0x01,0x00,0x0A,0x00,0x00,0x40,0x7D,0xD5,0x01,0x00,0x15,0xFE,0xBF,0xEA,0x83,0xBF,0x01,0x00,0xEA,0x01,0xE0,0x3F,0x00,0x58,0x01,0x00,0x3D,0x00,0x80,0x63,0x00,0xA0,0x01,0x00,0x07,0x00,0xC0,0x80,0x00,0x40,0x01,0x00,0x00,0x00,0x40,0xBC,0x01,0x80,0x01,0x00,0x00,0x00,0x70,0x84,0x03,0x00,0x02,0x00,0x00,0x00,0x4E,0xC4,0x03,0x00,0x04,0x00,0x00,0x80,0xC1,0xF1,0x07,0x00,0x08,0x00,0x01,0x78,0x00,0xFF,0x0F,0x00,0x10,0x00,0x00,0x07,0x00,0xF0,0x0F,0x00,0x10,0x00,0x81,0x00,0x00,0xE0,0x1F,0x00,0x20,0x00,0x62,0x00,0x00,0xE0,0x1F,0x00,0x40,0x00,0x75,0x00,0x00,0xC0,0xFF,0x01,0x9F,0x00,0x6A,0x00,0x00,0xC0,0x03,0xFE,0xA0,0x00,0xF5,0x00,0x00,0x70,0x01,0x00,0x40,0x01,0xEA,0x1F,0x00,0xBE,0x02,0x00,0x40,0x02,0xD5,0xFF,0xFF,0x5F,0x05,0x00,0x20,0x02,}; const uint8_t *_I_DolphinWait_61x59[] = {_I_DolphinWait_61x59_0}; -const Icon A_FX_Sitting_40x27 = {.width=40,.height=27,.frame_count=2,.frame_rate=10,.frames=_A_FX_Sitting_40x27}; -const Icon A_MDIB_32x32 = {.width=32,.height=32,.frame_count=4,.frame_rate=10,.frames=_A_MDIB_32x32}; -const Icon A_MDI_32x32 = {.width=32,.height=32,.frame_count=4,.frame_rate=10,.frames=_A_MDI_32x32}; -const Icon A_MDWLB_32x32 = {.width=32,.height=32,.frame_count=3,.frame_rate=10,.frames=_A_MDWLB_32x32}; -const Icon A_MDWL_32x32 = {.width=32,.height=32,.frame_count=3,.frame_rate=10,.frames=_A_MDWL_32x32}; -const Icon A_MDWRB_32x32 = {.width=32,.height=32,.frame_count=3,.frame_rate=10,.frames=_A_MDWRB_32x32}; -const Icon A_MDWR_32x32 = {.width=32,.height=32,.frame_count=3,.frame_rate=10,.frames=_A_MDWR_32x32}; const Icon A_WatchingTV_128x64 = {.width=128,.height=64,.frame_count=5,.frame_rate=10,.frames=_A_WatchingTV_128x64}; const Icon A_Wink_128x64 = {.width=128,.height=64,.frame_count=9,.frame_rate=10,.frames=_A_Wink_128x64}; const Icon I_dir_10px = {.width=10,.height=10,.frame_count=1,.frame_rate=0,.frames=_I_dir_10px}; @@ -848,9 +445,6 @@ const Icon I_ButtonLeftSmall_3x5 = {.width=3,.height=5,.frame_count=1,.frame_rat const Icon I_Warning_30x23 = {.width=30,.height=23,.frame_count=1,.frame_rate=0,.frames=_I_Warning_30x23}; const Icon I_ButtonRight_4x7 = {.width=4,.height=7,.frame_count=1,.frame_rate=0,.frames=_I_ButtonRight_4x7}; const Icon I_ButtonCenter_7x7 = {.width=7,.height=7,.frame_count=1,.frame_rate=0,.frames=_I_ButtonCenter_7x7}; -const Icon I_FX_SittingB_40x27 = {.width=40,.height=27,.frame_count=1,.frame_rate=0,.frames=_I_FX_SittingB_40x27}; -const Icon I_BigGames_24x24 = {.width=24,.height=24,.frame_count=1,.frame_rate=0,.frames=_I_BigGames_24x24}; -const Icon I_BigProfile_24x24 = {.width=24,.height=24,.frame_count=1,.frame_rate=0,.frames=_I_BigProfile_24x24}; const Icon I_DolphinOkay_41x43 = {.width=41,.height=43,.frame_count=1,.frame_rate=0,.frames=_I_DolphinOkay_41x43}; const Icon I_DolphinFirstStart4_67x53 = {.width=67,.height=53,.frame_count=1,.frame_rate=0,.frames=_I_DolphinFirstStart4_67x53}; const Icon I_DolphinFirstStart2_59x51 = {.width=59,.height=51,.frame_count=1,.frame_rate=0,.frames=_I_DolphinFirstStart2_59x51}; @@ -861,22 +455,7 @@ const Icon I_DolphinFirstStart1_59x53 = {.width=59,.height=53,.frame_count=1,.fr const Icon I_DolphinFirstStart8_56x51 = {.width=56,.height=51,.frame_count=1,.frame_rate=0,.frames=_I_DolphinFirstStart8_56x51}; const Icon I_DolphinFirstStart7_61x51 = {.width=61,.height=51,.frame_count=1,.frame_rate=0,.frames=_I_DolphinFirstStart7_61x51}; const Icon I_Flipper_young_80x60 = {.width=80,.height=60,.frame_count=1,.frame_rate=0,.frames=_I_Flipper_young_80x60}; -const Icon I_BigBurger_24x24 = {.width=24,.height=24,.frame_count=1,.frame_rate=0,.frames=_I_BigBurger_24x24}; -const Icon I_FX_Bang_32x6 = {.width=32,.height=6,.frame_count=1,.frame_rate=0,.frames=_I_FX_Bang_32x6}; const Icon I_DolphinFirstStart3_57x48 = {.width=57,.height=48,.frame_count=1,.frame_rate=0,.frames=_I_DolphinFirstStart3_57x48}; -const Icon I_blackfish_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_blackfish_25x17}; -const Icon I_blacklid_36x27 = {.width=36,.height=27,.frame_count=1,.frame_rate=0,.frames=_I_blacklid_36x27}; -const Icon I_skeleton_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_skeleton_25x17}; -const Icon I_letterB_10x10 = {.width=10,.height=10,.frame_count=1,.frame_rate=0,.frames=_I_letterB_10x10}; -const Icon I_shit_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_shit_25x17}; -const Icon I_letterC_10x10 = {.width=10,.height=10,.frame_count=1,.frame_rate=0,.frames=_I_letterC_10x10}; -const Icon I_active_plate_48x18 = {.width=48,.height=18,.frame_count=1,.frame_rate=0,.frames=_I_active_plate_48x18}; -const Icon I_fish_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_fish_25x17}; -const Icon I_blackshit_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_blackshit_25x17}; -const Icon I_lid_36x27 = {.width=36,.height=27,.frame_count=1,.frame_rate=0,.frames=_I_lid_36x27}; -const Icon I_blackskeleton_25x17 = {.width=25,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_blackskeleton_25x17}; -const Icon I_letterA_10x10 = {.width=10,.height=10,.frame_count=1,.frame_rate=0,.frames=_I_letterA_10x10}; -const Icon I_plate_42x19 = {.width=42,.height=19,.frame_count=1,.frame_rate=0,.frames=_I_plate_42x19}; const Icon I_PassportBottom_128x17 = {.width=128,.height=17,.frame_count=1,.frame_rate=0,.frames=_I_PassportBottom_128x17}; const Icon I_DoorLeft_8x56 = {.width=8,.height=56,.frame_count=1,.frame_rate=0,.frames=_I_DoorLeft_8x56}; const Icon I_DoorLocked_10x56 = {.width=10,.height=56,.frame_count=1,.frame_rate=0,.frames=_I_DoorLocked_10x56}; @@ -926,15 +505,6 @@ const Icon A_U2F_14 = {.width=14,.height=14,.frame_count=4,.frame_rate=3,.frames const Icon A_iButton_14 = {.width=14,.height=14,.frame_count=7,.frame_rate=3,.frames=_A_iButton_14}; const Icon I_Medium_chip_22x21 = {.width=22,.height=21,.frame_count=1,.frame_rate=0,.frames=_I_Medium_chip_22x21}; const Icon I_EMV_Chip_14x11 = {.width=14,.height=11,.frame_count=1,.frame_rate=0,.frames=_I_EMV_Chip_14x11}; -const Icon I_passport_happy1_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_happy1_43x45}; -const Icon I_passport_bad3_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_bad3_43x45}; -const Icon I_passport_okay2_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_okay2_43x45}; -const Icon I_passport_bad2_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_bad2_43x45}; -const Icon I_passport_okay3_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_okay3_43x45}; -const Icon I_passport_bad1_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_bad1_43x45}; -const Icon I_passport_happy3_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_happy3_43x45}; -const Icon I_passport_happy2_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_happy2_43x45}; -const Icon I_passport_okay1_43x45 = {.width=43,.height=45,.frame_count=1,.frame_rate=0,.frames=_I_passport_okay1_43x45}; const Icon I_Health_16x16 = {.width=16,.height=16,.frame_count=1,.frame_rate=0,.frames=_I_Health_16x16}; const Icon I_FaceCharging_29x14 = {.width=29,.height=14,.frame_count=1,.frame_rate=0,.frames=_I_FaceCharging_29x14}; const Icon I_BatteryBody_52x28 = {.width=52,.height=28,.frame_count=1,.frame_rate=0,.frames=_I_BatteryBody_52x28}; @@ -950,99 +520,6 @@ const Icon I_RFIDDolphinSend_97x61 = {.width=97,.height=61,.frame_count=1,.frame const Icon I_RFIDDolphinReceive_97x61 = {.width=97,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_RFIDDolphinReceive_97x61}; const Icon I_SDQuestion_35x43 = {.width=35,.height=43,.frame_count=1,.frame_rate=0,.frames=_I_SDQuestion_35x43}; const Icon I_SDError_43x35 = {.width=43,.height=35,.frame_count=1,.frame_rate=0,.frames=_I_SDError_43x35}; -const Icon I_Console_74x67_4 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_4}; -const Icon I_Console_74x67_5 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_5}; -const Icon I_Console_74x67_7 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_7}; -const Icon I_Console_74x67_6 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_6}; -const Icon I_Console_74x67_2 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_2}; -const Icon I_Console_74x67_3 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_3}; -const Icon I_Console_74x67_1 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_1}; -const Icon I_Console_74x67_0 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_0}; -const Icon I_Console_74x67_8 = {.width=74,.height=67,.frame_count=1,.frame_rate=0,.frames=_I_Console_74x67_8}; -const Icon I_food8_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food8_61x98}; -const Icon I_food5_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food5_61x98}; -const Icon I_food3_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food3_61x98}; -const Icon I_food9_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food9_61x98}; -const Icon I_food12_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food12_61x98}; -const Icon I_food4_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food4_61x98}; -const Icon I_food2_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food2_61x98}; -const Icon I_food7_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food7_61x98}; -const Icon I_food11_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food11_61x98}; -const Icon I_food1_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food1_61x98}; -const Icon I_food6_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food6_61x98}; -const Icon I_food10_61x98 = {.width=61,.height=98,.frame_count=1,.frame_rate=0,.frames=_I_food10_61x98}; -const Icon I_rightdown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightdown2_73x61}; -const Icon I_black_upright2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_upright2_73x61}; -const Icon I_black_leftup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_leftup1_73x61}; -const Icon I_black_upleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_upleft1_73x61}; -const Icon I_black_down2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_down2_73x61}; -const Icon I_downleft3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downleft3_73x61}; -const Icon I_down2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_down2_73x61}; -const Icon I_black_downright2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downright2_73x61}; -const Icon I_black_downleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downleft2_73x61}; -const Icon I_up2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_up2_73x61}; -const Icon I_right1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_right1_73x61}; -const Icon I_black_up1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_up1_73x61}; -const Icon I_upright1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_upright1_73x61}; -const Icon I_black_rightleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightleft2_73x61}; -const Icon I_black_right3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_right3_73x61}; -const Icon I_upleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_upleft2_73x61}; -const Icon I_black_downup3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downup3_73x61}; -const Icon I_black_updown3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_updown3_73x61}; -const Icon I_leftup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_leftup2_73x61}; -const Icon I_leftdown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_leftdown2_73x61}; -const Icon I_downup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downup1_73x61}; -const Icon I_updown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_updown1_73x61}; -const Icon I_rightup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightup1_73x61}; -const Icon I_black_rightdown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightdown1_73x61}; -const Icon I_downleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downleft2_73x61}; -const Icon I_downright1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downright1_73x61}; -const Icon I_black_downright3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downright3_73x61}; -const Icon I_black_downleft3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downleft3_73x61}; -const Icon I_rightleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightleft1_73x61}; -const Icon I_black_right2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_right2_73x61}; -const Icon I_black_rightup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightup2_73x61}; -const Icon I_black_downup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downup2_73x61}; -const Icon I_black_updown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_updown2_73x61}; -const Icon I_black_left1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_left1_73x61}; -const Icon I_black_leftdown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_leftdown2_73x61}; -const Icon I_left1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_left1_73x61}; -const Icon I_rightup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightup2_73x61}; -const Icon I_black_rightdown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightdown2_73x61}; -const Icon I_downup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downup2_73x61}; -const Icon I_updown2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_updown2_73x61}; -const Icon I_right3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_right3_73x61}; -const Icon I_downright2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downright2_73x61}; -const Icon I_downleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downleft1_73x61}; -const Icon I_black_rightup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightup1_73x61}; -const Icon I_black_right1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_right1_73x61}; -const Icon I_rightleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightleft2_73x61}; -const Icon I_left2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_left2_73x61}; -const Icon I_black_left2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_left2_73x61}; -const Icon I_black_downup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downup1_73x61}; -const Icon I_black_updown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_updown1_73x61}; -const Icon I_black_leftdown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_leftdown1_73x61}; -const Icon I_downup3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downup3_73x61}; -const Icon I_updown3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_updown3_73x61}; -const Icon I_black_leftup2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_leftup2_73x61}; -const Icon I_black_upright1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_upright1_73x61}; -const Icon I_rightdown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_rightdown1_73x61}; -const Icon I_right2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_right2_73x61}; -const Icon I_black_downleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downleft1_73x61}; -const Icon I_down1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_down1_73x61}; -const Icon I_black_downright1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_downright1_73x61}; -const Icon I_up1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_up1_73x61}; -const Icon I_downright3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_downright3_73x61}; -const Icon I_black_down1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_down1_73x61}; -const Icon I_black_upleft2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_upleft2_73x61}; -const Icon I_upleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_upleft1_73x61}; -const Icon I_black_rightleft1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_rightleft1_73x61}; -const Icon I_black_up2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_up2_73x61}; -const Icon I_upright2_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_upright2_73x61}; -const Icon I_leftdown1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_leftdown1_73x61}; -const Icon I_left3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_left3_73x61}; -const Icon I_leftup1_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_leftup1_73x61}; -const Icon I_black_left3_73x61 = {.width=73,.height=61,.frame_count=1,.frame_rate=0,.frames=_I_black_left3_73x61}; const Icon I_BadUsb_9x8 = {.width=9,.height=8,.frame_count=1,.frame_rate=0,.frames=_I_BadUsb_9x8}; const Icon I_PlaceholderR_30x13 = {.width=30,.height=13,.frame_count=1,.frame_rate=0,.frames=_I_PlaceholderR_30x13}; const Icon I_Background_128x8 = {.width=128,.height=8,.frame_count=1,.frame_rate=0,.frames=_I_Background_128x8}; diff --git a/assets/compiled/assets_icons.h b/assets/compiled/assets_icons.h index 5534ca71..1ae1b19a 100644 --- a/assets/compiled/assets_icons.h +++ b/assets/compiled/assets_icons.h @@ -1,13 +1,6 @@ #pragma once #include -extern const Icon A_FX_Sitting_40x27; -extern const Icon A_MDIB_32x32; -extern const Icon A_MDI_32x32; -extern const Icon A_MDWLB_32x32; -extern const Icon A_MDWL_32x32; -extern const Icon A_MDWRB_32x32; -extern const Icon A_MDWR_32x32; extern const Icon A_WatchingTV_128x64; extern const Icon A_Wink_128x64; extern const Icon I_dir_10px; @@ -24,9 +17,6 @@ extern const Icon I_ButtonLeftSmall_3x5; extern const Icon I_Warning_30x23; extern const Icon I_ButtonRight_4x7; extern const Icon I_ButtonCenter_7x7; -extern const Icon I_FX_SittingB_40x27; -extern const Icon I_BigGames_24x24; -extern const Icon I_BigProfile_24x24; extern const Icon I_DolphinOkay_41x43; extern const Icon I_DolphinFirstStart4_67x53; extern const Icon I_DolphinFirstStart2_59x51; @@ -37,22 +27,7 @@ extern const Icon I_DolphinFirstStart1_59x53; extern const Icon I_DolphinFirstStart8_56x51; extern const Icon I_DolphinFirstStart7_61x51; extern const Icon I_Flipper_young_80x60; -extern const Icon I_BigBurger_24x24; -extern const Icon I_FX_Bang_32x6; extern const Icon I_DolphinFirstStart3_57x48; -extern const Icon I_blackfish_25x17; -extern const Icon I_blacklid_36x27; -extern const Icon I_skeleton_25x17; -extern const Icon I_letterB_10x10; -extern const Icon I_shit_25x17; -extern const Icon I_letterC_10x10; -extern const Icon I_active_plate_48x18; -extern const Icon I_fish_25x17; -extern const Icon I_blackshit_25x17; -extern const Icon I_lid_36x27; -extern const Icon I_blackskeleton_25x17; -extern const Icon I_letterA_10x10; -extern const Icon I_plate_42x19; extern const Icon I_PassportBottom_128x17; extern const Icon I_DoorLeft_8x56; extern const Icon I_DoorLocked_10x56; @@ -102,15 +77,6 @@ extern const Icon A_U2F_14; extern const Icon A_iButton_14; extern const Icon I_Medium_chip_22x21; extern const Icon I_EMV_Chip_14x11; -extern const Icon I_passport_happy1_43x45; -extern const Icon I_passport_bad3_43x45; -extern const Icon I_passport_okay2_43x45; -extern const Icon I_passport_bad2_43x45; -extern const Icon I_passport_okay3_43x45; -extern const Icon I_passport_bad1_43x45; -extern const Icon I_passport_happy3_43x45; -extern const Icon I_passport_happy2_43x45; -extern const Icon I_passport_okay1_43x45; extern const Icon I_Health_16x16; extern const Icon I_FaceCharging_29x14; extern const Icon I_BatteryBody_52x28; @@ -126,99 +92,6 @@ extern const Icon I_RFIDDolphinSend_97x61; extern const Icon I_RFIDDolphinReceive_97x61; extern const Icon I_SDQuestion_35x43; extern const Icon I_SDError_43x35; -extern const Icon I_Console_74x67_4; -extern const Icon I_Console_74x67_5; -extern const Icon I_Console_74x67_7; -extern const Icon I_Console_74x67_6; -extern const Icon I_Console_74x67_2; -extern const Icon I_Console_74x67_3; -extern const Icon I_Console_74x67_1; -extern const Icon I_Console_74x67_0; -extern const Icon I_Console_74x67_8; -extern const Icon I_food8_61x98; -extern const Icon I_food5_61x98; -extern const Icon I_food3_61x98; -extern const Icon I_food9_61x98; -extern const Icon I_food12_61x98; -extern const Icon I_food4_61x98; -extern const Icon I_food2_61x98; -extern const Icon I_food7_61x98; -extern const Icon I_food11_61x98; -extern const Icon I_food1_61x98; -extern const Icon I_food6_61x98; -extern const Icon I_food10_61x98; -extern const Icon I_rightdown2_73x61; -extern const Icon I_black_upright2_73x61; -extern const Icon I_black_leftup1_73x61; -extern const Icon I_black_upleft1_73x61; -extern const Icon I_black_down2_73x61; -extern const Icon I_downleft3_73x61; -extern const Icon I_down2_73x61; -extern const Icon I_black_downright2_73x61; -extern const Icon I_black_downleft2_73x61; -extern const Icon I_up2_73x61; -extern const Icon I_right1_73x61; -extern const Icon I_black_up1_73x61; -extern const Icon I_upright1_73x61; -extern const Icon I_black_rightleft2_73x61; -extern const Icon I_black_right3_73x61; -extern const Icon I_upleft2_73x61; -extern const Icon I_black_downup3_73x61; -extern const Icon I_black_updown3_73x61; -extern const Icon I_leftup2_73x61; -extern const Icon I_leftdown2_73x61; -extern const Icon I_downup1_73x61; -extern const Icon I_updown1_73x61; -extern const Icon I_rightup1_73x61; -extern const Icon I_black_rightdown1_73x61; -extern const Icon I_downleft2_73x61; -extern const Icon I_downright1_73x61; -extern const Icon I_black_downright3_73x61; -extern const Icon I_black_downleft3_73x61; -extern const Icon I_rightleft1_73x61; -extern const Icon I_black_right2_73x61; -extern const Icon I_black_rightup2_73x61; -extern const Icon I_black_downup2_73x61; -extern const Icon I_black_updown2_73x61; -extern const Icon I_black_left1_73x61; -extern const Icon I_black_leftdown2_73x61; -extern const Icon I_left1_73x61; -extern const Icon I_rightup2_73x61; -extern const Icon I_black_rightdown2_73x61; -extern const Icon I_downup2_73x61; -extern const Icon I_updown2_73x61; -extern const Icon I_right3_73x61; -extern const Icon I_downright2_73x61; -extern const Icon I_downleft1_73x61; -extern const Icon I_black_rightup1_73x61; -extern const Icon I_black_right1_73x61; -extern const Icon I_rightleft2_73x61; -extern const Icon I_left2_73x61; -extern const Icon I_black_left2_73x61; -extern const Icon I_black_downup1_73x61; -extern const Icon I_black_updown1_73x61; -extern const Icon I_black_leftdown1_73x61; -extern const Icon I_downup3_73x61; -extern const Icon I_updown3_73x61; -extern const Icon I_black_leftup2_73x61; -extern const Icon I_black_upright1_73x61; -extern const Icon I_rightdown1_73x61; -extern const Icon I_right2_73x61; -extern const Icon I_black_downleft1_73x61; -extern const Icon I_down1_73x61; -extern const Icon I_black_downright1_73x61; -extern const Icon I_up1_73x61; -extern const Icon I_downright3_73x61; -extern const Icon I_black_down1_73x61; -extern const Icon I_black_upleft2_73x61; -extern const Icon I_upleft1_73x61; -extern const Icon I_black_rightleft1_73x61; -extern const Icon I_black_up2_73x61; -extern const Icon I_upright2_73x61; -extern const Icon I_leftdown1_73x61; -extern const Icon I_left3_73x61; -extern const Icon I_leftup1_73x61; -extern const Icon I_black_left3_73x61; extern const Icon I_BadUsb_9x8; extern const Icon I_PlaceholderR_30x13; extern const Icon I_Background_128x8; diff --git a/assets/icons/Animations/FX_Sitting_40x27/frame_0.png b/assets/icons/Animations/FX_Sitting_40x27/frame_0.png deleted file mode 100644 index 22e3d38dbe98a03bea016e52bf04ab272d26ecad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~#0(^h>s0>&DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-zl@CkAK{~yR=0Fno9 zYkdN;7)yfuf*Bm1-ADs*lDyqr7&=&GJ%Akc5>H=O_NUCUd~7o6-pmJpLJ^)Wjv*44 z&z?KTdBA|9HL>-{x(RPCH!we0@O%BGCrh_!o3Q_!AkTBLUaoqTm3ph&rt{^er@V12 z6G>Zr%rBJt#Ppd{H+3G&XjMKWp3QS7XSYkknv>s`|9rrfbcI9R_)`GT2Mnqut`Q|E zi6yC4$wjF^iowXh$WYh7Sl7rh#L&dbz{JYXSlhtB%D_Nkm$o#DhTQy=%(O~O4F={A V4S`JCwSXEJJYD@<);T3K0RZuwarOWJ diff --git a/assets/icons/Animations/FX_Sitting_40x27/frame_1.png b/assets/icons/Animations/FX_Sitting_40x27/frame_1.png deleted file mode 100644 index 2438be9eefedd2b304ace7bcd3098e14acf9919b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~#0(^h>s0>&DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-zl@CkAK{~yR=`2YX^ zo0~`Lfh@+7AirP+hi5m^K%69RcNeBK?wS-JhrPtp*OmP#vn(H*jJh}T0iaO0r;B5V z#O1T+4ssqa;Al;3eX?%Co6AkiPZs=Mf9c86joK#cKPSlZT&$P-9aw57;`MFflRMuO zZgXvpOkTc<^~vcoUXe!?)FK#IZ0z{pV7z*yJFGQ`lt%D}|R&{*5Rz{NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPphjS*yd$K(_mNx;TbNTux2^ z0-n?chHDoB*bSUTj&ZmqHDn&Ua6v%gFk`5&b_l13xsm4Si9NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR(00uFf)+tuAVNAArhC9 z6C4<>32^92Nxfo7W?5hq;q0u~C6UN8LB`QdBd<;4O3H$ZFL>Nm7=JL75a3y%#}+tA zA|T$NBf)^hrGbS(@TEw`0jXL^pn<9-t`Q|Ei6yC4$wjF^iowXh$WYh7Sl7rR#K6?b v$O4G84GgRd3@j#h=%Z-J%}>cptHjh`Xb#a}$mu>4sDZ)L)z4*}Q$iB}yWm>s diff --git a/assets/icons/Animations/MDIB_32x32/frame_2.png b/assets/icons/Animations/MDIB_32x32/frame_2.png deleted file mode 100644 index 5ce5a67d19a898572ac46e6736964d62616ad74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR(00uFf)+tuAVNAArhC9 z6C4<>32^92Nxfo7W?5hq;q0u~C6UN8LB`QdBd<;4O3H$ZFL>Nm7=JL75a3y%#}+tA zA|T$NBf)^hrGbS(@TEw`0jXL^pn<9-t`Q|Ei6yC4$wjF^iowXh$WYh7Sl7rR#K6?b v$O4G84GgRd3@j#h=%Z-J%}>cptHjh`Xb#a}$mu>4sDZ)L)z4*}Q$iB}yWm>s diff --git a/assets/icons/Animations/MDIB_32x32/frame_3.png b/assets/icons/Animations/MDIB_32x32/frame_3.png deleted file mode 100644 index b5def708a48a12977841ed90fb264465cc4dcb1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR(00uFf)+t-kvUwArhC9 z6C9X&76!CsWUOGGA=q^;fyHP+mb3E#p0F807S1B8SPpU=JuAS=o6wNuo^IfD_VDop z2Lq;rKJ`vPrqqrE0~VJC7KTmfqDp(7s{kF!pjzS@QIe8al4_M)lnSI6j0}tnbq$Pl zjVwY8Os$M8fJocGz{ CieGL3 diff --git a/assets/icons/Animations/MDIB_32x32/frame_rate b/assets/icons/Animations/MDIB_32x32/frame_rate deleted file mode 100644 index 9a037142..00000000 --- a/assets/icons/Animations/MDIB_32x32/frame_rate +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/assets/icons/Animations/MDI_32x32/frame_0.png b/assets/icons/Animations/MDI_32x32/frame_0.png deleted file mode 100644 index b71622f688e1007a39cfc1692661ebf3ebb9c47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPpg2HF)-OOaKa{db&7Kv&p=yb1L`h0wNvc(HQ7VvPFfuSQ)HN{HHL?gXFtsu=w=y==HZZUNSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR#gq2{Tvg3LTR2Zjv*44 zr=IubI-tPAa)I-OUE>!!wp)9c>YW8@VDNPHb6Mw<&;$U9hj>r` diff --git a/assets/icons/Animations/MDI_32x32/frame_2.png b/assets/icons/Animations/MDI_32x32/frame_2.png deleted file mode 100644 index f58938a9475b50771958338c305c87d5758aa156..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR#gq2{Tvg3LTR2Zjv*44 zr=IubI-tPAa)I-OUE>!!wp)9c>YW8@VDNPHb6Mw<&;$U9hj>r` diff --git a/assets/icons/Animations/MDI_32x32/frame_3.png b/assets/icons/Animations/MDI_32x32/frame_3.png deleted file mode 100644 index 24fbf7774a08109f25990b18e4f97b95cdffe6ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aR#gq2{Tvg3LMfgujv*44 zr=IuaYH;9SeV~3L?%+FP=F9tzmi%8W@-Jjd_JoIz7d9PueQ~0J%vnRp#U^rX)bZq z;zP%Q_NkV*MwFx^mZVxG7o`Fz1|tI_LtO)7T_cMS15+y_b1P#*Z36=<1A_^xroBhe fkei>9nO2FZ!3e5BH&*W~Py>UftDnm{r-UW|kEC;) diff --git a/assets/icons/Animations/MDI_32x32/frame_rate b/assets/icons/Animations/MDI_32x32/frame_rate deleted file mode 100644 index 9a037142..00000000 --- a/assets/icons/Animations/MDI_32x32/frame_rate +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/assets/icons/Animations/MDWLB_32x32/frame_1.png b/assets/icons/Animations/MDWLB_32x32/frame_1.png deleted file mode 100644 index e26b3a53a3745499c82b15b6e3ba686c5b0f870c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRs~iQ@dXQjLf)P(jv*44 zlM@`67V;%@8Jd`|9OH0JHDHhwa9y;J<0_*>kAM@~#zT_p0!-Je33$s>z@~hK>kkjx z3_S_u77n&Hy&aZ4>ozNSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRs~iQ@dXQjLLr_mjv*44 zYtQZGJ)pqDa$&QGTY~(oFCzQ?hI2B>H!2+MjW7Ji;Jxun+7j+NjctObYA%0m(6&7& z`}&nd*>Q_W35Ad3FHCt5|Ae_J{m`lg6SH`S!^~05Vi|G=m`?)DS1oakC`m~yNwrEY zN(E93Mg~TPx(3F&MiwCkrdEa)R)&_^1_o9J2A!RcDp54#=BH$)Rbpx|Fo9?YU1>cV PsDZ)L)z4*}Q$iB}jSg-6 diff --git a/assets/icons/Animations/MDWLB_32x32/frame_3.png b/assets/icons/Animations/MDWLB_32x32/frame_3.png deleted file mode 100644 index ad269276343f638c0ed32b039f6fa0d1ed4f03cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPpfNSWUziEC31xdAc};NL-$J z#!#rifrI&gh4Nn3KhNhSF#iAFwc?52`XH{fZWRUr-sif4)(>4`9NLe1_?uQ9xNq={ zea(WP8%qvF?k+FdRm*Tg=@0uF=kyn|-ZLEX7qt*sw|hF!bk!2qh?11Vl2ohYqEsNo zU}RuqsB2)XYh)2(U}|M(VP$BkZD3$!V9?q5s1ij(ZhlH;S|z3i0~3gb(3RG+ff^V* MUHx3vIVCg!0DISJ{r~^~ diff --git a/assets/icons/Animations/MDWLB_32x32/frame_rate b/assets/icons/Animations/MDWLB_32x32/frame_rate deleted file mode 100644 index 9a037142..00000000 --- a/assets/icons/Animations/MDWLB_32x32/frame_rate +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/assets/icons/Animations/MDWL_32x32/frame_1.png b/assets/icons/Animations/MDWL_32x32/frame_1.png deleted file mode 100644 index 4b0bd151494798ee309c6d73753fda4c42195ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRyom()YUtILg}6^jv*44 zdoMV09Z=w5Ilz0Qy5+}wkvDtWzx|J2Y1%nu-YyP4?+FSYPNjZc#Qmzl#9eyc#!9za zk_)&BH?XcMFxl(AINFTwTw2c$AI&NSt$Ow)VlOy7Bb3CL^*``m(a%Uc|Gq+O599Yw zoZ{#A{I&&JsaoP1QIe8al4_M)lnSI6j0}tnbq$PljVwY8Osx#ftW3$QYvG%p;@QKn)C@u6{1-oD!M<>^pZ3 diff --git a/assets/icons/Animations/MDWL_32x32/frame_2.png b/assets/icons/Animations/MDWL_32x32/frame_2.png deleted file mode 100644 index fe8e32c335a408219f4ffa43c8225922538d8290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRyom()YUtILb;wUjv*44 zQ_o-II-tP88o>Jf-GYC|58N}4`2Sy9Y6EkfC q11kdq%@=FjQ8eV{r(~v8VrnolhG;nR$mlju1B0ilpUXO@geCxst$ZW^ diff --git a/assets/icons/Animations/MDWL_32x32/frame_3.png b/assets/icons/Animations/MDWL_32x32/frame_3.png deleted file mode 100644 index c63a48fe028d9393f27fb84e164433973ba238ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPphzL^D!X?*s~^db&7$>73sc9@cgo;rRG(^%1r?O0g^a{xBv;m2KhlYcMsuz`S8qY&N?>1b|I9_}a zv-tzGP_@K0q9i4;B-JXpC>2OC7#SED>KYj98d-!Gm|7W{S(%t=8yHv_7-+s&NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRt2SrvZAMfLOz}@jv*44 zlM@`6dKLz>Wn`>io*~$EE`h~pL6)=g0iLiKLKe;<&4OLMf()U;5)4=67}5{SdF(LZ zU_%1S0U3W5Ws%8@#_9sc3RnagB=<-#&Ht_=0W?>JNMC9x#cD!C{XNHG{07#Zps z80#8Ygcz7w85vj^m}wgTNdwEcEx%DTgTe~ HDWM4ftx#Xc diff --git a/assets/icons/Animations/MDWRB_32x32/frame_2.png b/assets/icons/Animations/MDWRB_32x32/frame_2.png deleted file mode 100644 index 3b70ca8914e5f2595097426e0410ea6ea3336f6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRt2SrvZAMfLP4G`jv*44 zThAHtH5l+PJEWgDcj^BZPS;ic|BD86DtfUS-A!<3yClin`-XeX2I+}UV+vg3wy><& zySQcUas!j)|C!|5j=i5DI&0#C^UBg34D1Dr6)Ix?{+(xY1DdW{;u=wsl30>zm0Xkx zq!^40j0|-RjCGAHLJUl;j0~&{%(M-Fq=9AJmft8Ea`RI%(<;$47+PAHnnN@kPIid_ PYGCkm^>bP0l+XkKpebuM diff --git a/assets/icons/Animations/MDWRB_32x32/frame_3.png b/assets/icons/Animations/MDWRB_32x32/frame_3.png deleted file mode 100644 index 444dceae586b8d1f1bdcb46fbba3bf872fb84636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPpfNlqSlGo(2kqdb&7V@B~4I%e}`qT32OC z7#SED>KYj98d-!Gm|7VbSQ(gU8vscI%eXDSQ8eV{r(~v8qG>R+v@$h^XgHkg5(Cu0 N;OXk;vd$@?2>|{iV`TsU diff --git a/assets/icons/Animations/MDWRB_32x32/frame_rate b/assets/icons/Animations/MDWRB_32x32/frame_rate deleted file mode 100644 index 9a037142..00000000 --- a/assets/icons/Animations/MDWRB_32x32/frame_rate +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/assets/icons/Animations/MDWR_32x32/frame_1.png b/assets/icons/Animations/MDWR_32x32/frame_1.png deleted file mode 100644 index d2e355a1fb8f873a4ea8c499612b07b725bd0310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRz;5By>DZHLdl*kjv*44 zd(Sv>9Z=wLxyZTXH^(@ifG# z%fAO&r&{6~QIe8al4_M)lnSI6j0}tnbq$PljVwY8Osxzptqcvd4GgRd3__P2S3uE_ fo1c=IR*9*>z!aiEMkZPisDZ)L)z4*}Q$iB}EKhRR diff --git a/assets/icons/Animations/MDWR_32x32/frame_2.png b/assets/icons/Animations/MDWR_32x32/frame_2.png deleted file mode 100644 index 522f12179761ab90fb7d0bebedda80e65aa0b9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTkj3!-|Nl2P zkJbZOj3q&S!3+-1Zlr-YN#5=*OljOTDL@W;iKnkC`%`8aRz;5By>DZHLOGr;jv*44 zQ_lx-H7E$MT!_5!FLuLkjVtwycmHdhe3udU=(uw^8*7}mp3-BjzGWODChb4U)|_2< zBgsXTb<(tknXd6?r&jnq^WoF^nbNOn*KRH#eSuLiKy8N8FX#O$jDplR>IbT@*WXdE z`p0H>f&0tecjh2>sg}4#l%ynwV0|P4q ngU}_%6;L$f=BH$)Rbpx|FokH4k%<-rYGCkm^>bP0l+XkKTzqz> diff --git a/assets/icons/Animations/MDWR_32x32/frame_3.png b/assets/icons/Animations/MDWR_32x32/frame_3.png deleted file mode 100644 index b01e463eb9d35f323580cdded1934c16f8a694d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@mUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!5QEa;`;wTki`Hb58l@L z1Y|Lm1o;IsI6S+N2I3@nySp%Su*!M>IqW5#zOL*~nPpfNIfD1TjR6X!dAc};NL-$J z?jYv@2M(44qB;%-zZ5fa?>N5nf0$5-e*d3G#~lU58J;*zeFVdQ&MBb@0RK92ng9R* diff --git a/assets/icons/Animations/MDWR_32x32/frame_rate b/assets/icons/Animations/MDWR_32x32/frame_rate deleted file mode 100644 index 9a037142..00000000 --- a/assets/icons/Animations/MDWR_32x32/frame_rate +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/assets/icons/Dolphin/BigBurger_24x24.png b/assets/icons/Dolphin/BigBurger_24x24.png deleted file mode 100644 index 5533147ced1b94e4aaeb6bdd1ba5df51a8872b0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY7Bp6QcFoXgrmUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5yxS$b1jyqo z@Q5sCVBi)4Va7{$>;3=**-JcqUD=;93vvl+S}q9@1PX%*q1XMk4n1#}(3p4;FkVFh2bE|NeuI6e`)i zvGc4BD>L%po>z z40R2Rbq&o!3=OOd&8$pKv<(cb3=H&pFKeS{$jwj5OsmALA?`xNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5yxS$b1jyqo z@Q5sCVBi)4Va7{$>;3=**-JcqUD=;93vvl6I8?mZ3KVknba4#fxSssu{-5~|>)+P5 z)&Dmz^pMf1mu-~i*kHV8|G&8p=N-szvu3)=Q!SAt`OWxW>WcsW`x#lBoSh}Mgso+| z?7+aFbkfj2_*S$x&_LA^*NBpo#FA921Gb mWnkdXe+T48gofPwl+3hB+#2kHQg#A0FnGH9xvXNS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5yxS$b1jyqo z@Q5sCVBi)4Va7{$>;3=**-JcqUD=;93vvmHik;S&1{8Alba4#fxSssu{~!Cq|8G0& z5$~Ap^f8VjFCigi#sB~P3mH0uxn@WRy%H=rsBYcnwV>i@yK}UftDnm{r-UW|^?_ml diff --git a/assets/icons/Dolphin/FX_Bang_32x6.png b/assets/icons/Dolphin/FX_Bang_32x6.png deleted file mode 100644 index d842e48f2abfa4569d52e1bf68266ae06b975d15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-p#0(_wKP>S9QY`6?zK#qG8~eHcB(ehe3dtTp zz6=aiY77hwEes65fIC7!;n>`$3xxvhD^?$7)P6w>i@aSY+O zo-B~Sk&u$W>Lkb}=*F(VnA9Y}$kW5OhKG-_hmS`=mB)ckhJhiejX6V3%%}*cPqoA~ zq9i4;B-JXpC>2OC7#SED>KYj98d-)I8d{lJS{WK?8yHv_7^r)1@k7y&o1c=IR*9*> Xzzm`x@3TfdPy>UftDnm{r-UW|jlNFt diff --git a/assets/icons/Dolphin/FX_SittingB_40x27.png b/assets/icons/Dolphin/FX_SittingB_40x27.png deleted file mode 100644 index e95651119a4c64603830ea92cf4657c9409006ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<~#0(^h>s0>&DVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-zl@CkAK{~yR=0Fno9 zYkdN;7)yfuf*Bm1-ADs*lDyqr7&=&GJ%Akc5>H=O_NUCUe5^cz7ah`pLXMs;jv*44 zlM^It8Vp&ECGqmM8oF*Yl6>g1Kp`YrLxAPLkp(_(0^ExlL=Uo@Zf|KgdVonuVX8oK zgu^FB4)cRE7+$Ot(3+#41avNgYKdz^NlIc#s#S7PDv)9@GB7gKH89pSvJ5dau`)2R uGBMURFt9Q(2#8XxN70a*pOTqYiK)TZ45Fd(*X~-N1_n=8KbLh*2~7ZU^j!}C diff --git a/assets/icons/FoodMinigame/active_plate_48x18.png b/assets/icons/FoodMinigame/active_plate_48x18.png deleted file mode 100644 index f1e2b84c4dd981bdc2dbfb2d101dc308f3134e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 zcmaJ=Pe>F|93E6EBqa<2J3U6hqIPC>c4L{rQFdqiv(}icTN-q5cIK^4>&%;Gp6#v@ zlmsDksqj(|7+nN0S+WiVf>2aQn1=$ZgAiRTf(Rl#)EjlRL)*Zc_lNKMe&6r+es8R+ zv#qM~U?oLSRq=KuL1vDOnmuLYf3xD%S2ES&mR{VA(m1QRkct{81wq`>`e6cUM*hM} z*ho?3^=7gc_o^pE9a)U#W0;)f5H>|MHs>5o&p-@Pu-~*L`rDH^8kmMe_Z(9>)sf+V z**@&T?%~d)KAh17gKlmDjX9ABSP*L&J!A~1%Q()3j7DBw9h$Z}ye7!Gip7!t&A7;Jqs3FjJVF`=|>1tU9&9>CZU zSvH%^GT9J=+S65U}pr^a0gH2=uUr|e;AuQ3v>Shj> zvn^|TTXiB8V{@9r1{u!JsR&fn|3fWn8|~o)-0}NQVK13?Ae(?58gg}VbLl!ilq1S6 z)G%_B2n`m?*foGK@&=Ftc%BJ^Lp`Q#psaUzgP^Kn-1e|$>oBfJG?8FT(-0$(5GQlI z+!_*uV6Y_?jd8LNi^TYFR91q#QsgQ~AF`m0i(F%etCZyW&0sksvI1T6A~afEWPy#G zMYFV*Xi2>-u2I@ctR$BuW?27b|GMeo5osTPx!t&Av)%g8CjIV`#$N9DX_H5BE3QP7 zx#flNmFml2&sFL9`dnf5{KCw{!?IuS_0yA`6|-;M3aWN@+YyyNosg;arovL)Qp2wC zXJwV4kNl6xmNm5OJNLW8zBaLPkGq{ITq>Xc68g0GsCs>6ZA^}TSbMiP zl{KcV8zYnJa^cOH(NlM?q-OT6=087v@FG18Mk3$m^Q(RP`zUn1=fEAOs>Xk`@s>_y II@UM(2T(3wNdN!< diff --git a/assets/icons/FoodMinigame/blackfish_25x17.png b/assets/icons/FoodMinigame/blackfish_25x17.png deleted file mode 100644 index f8cc252292d6fb4b512d330b5fa5b8ce9b126cf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 zcmaJ=PiWIn7!MnRG1$qK;E^47*Jc`^0%Wq(m zqM8pH*&NO(XGIN}jOyhuWz!~Tii-A@ZB-kC802BWuq681%VioEx zoKNF84nzb-SM#ct&z}H1$NO0>$ohjmjuQid7z~2yLz8ljJ}PG9WVIOCNpuloTV&Z% zsl=253~~yrUl0VA<5`~fkqnGug3wVrb9!+40CQ`S1Fzq_6 zsc_lMXULrDxG- ztR>ixuZqPvP2B)P4=%z*FwZT-m-37vZ-4iTEy=TG4@dM=^=6{+?3pxEq{79 z*w^tIv_99jw)nSS&flCpwlXW-PG35+Yw=tc^{8e2=ltW-;U;$DB7V_+V9&yn bS1o&~>tDnBKP+@4yi1u%49L%7BUk>3`tyC1HSQQLWe1MzGW}gXNB~3Q%s$1)JrS)Q)O{Q&VlZnaH&Gz7- zNKr)bRYgS)B8UhcJXmZ6t2aRqMDTS~L25w}LD7qocDMCV8<@<@&-eZR_dn)jTWfP& z?fP1ZqUtg&N{;MX$l6e|l>D!?j*pS80jE20JLn(e!?Z=>qIE?G*EM;xR*;MvCc(WkJ@FVV~JD zF3bYXvVz2B&>qggc^M0$y?n`mTn>6@(A7ypdNxB64{Np#D_nD) z3l`;yvI{kg+&n@9mG-suA&k5}FI_j*~}mF{4O%|K0SZy(=f_8fC?mKV5IxedFKcjjJxi;q51-@5`k< zJ6_*E+2YBm*EQzRhfC@cOXJVijjC;3cVET^*N%+DK9$aV$^ZKOv^iZJ`H?vLX84dY zb@+VfX2Y#37q^}p8NS*)1!JSHPHeh<`o^6P%dVfE9{c&WcjCZ{>W%`36Kp_iH7sn8e>&ZX<|F360{QthfBlV6Sj7oM_m^;}OnixI) zBu`)${KLyr?{I{ltt{mce+R>9ryeFDhVtJUuVi%ld4Oi9mbgZgq$HN4S|t~y0x1R~ z10zFS0}EXP(-1>LD-%mALqlx?11kdqz9TDvu0+z1o1c=IR*9*>zzCwD={9#iPy>Uf LtDnm{r-UW|9PCnK diff --git a/assets/icons/FoodMinigame/blackskeleton_25x17.png b/assets/icons/FoodMinigame/blackskeleton_25x17.png deleted file mode 100644 index c55ee79e7c75c7b7bb95ae8b126c9ad40885182d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoT2qYL74q7b+k}Tbk+y+>m4QK)%oA=D4Y~O#nQ4`n8VpS!8otTp4 zP>2x}1?@u`gb;=#6!;_*BuEjJ^k6Sa7zGjaP+-<$FLg)VwTHHWnYs6HzVCeJp6^~u zCXQ6Q8{Gs!RL6S66#gH;Z>?(={?5KFo^k>xnniuE9~C4M5FrKT02$My0gwWcGID+i zbP&YuW;LBf+4ylmh8it7Ikc@A7)=lzUA7^~g8-2^Frex|>id&Lid2;#l{p+|<3F9MAI%>t(!N56ZHRc<=`+1QdsI% z51LV?)vfJw!Y9VqlEH8^>-1DgjK}|O9wm#6Y-%V`nH?_rOd?_Yk zVkm8|&7?zn$5>b0v)_w1t~ZQdUYVYntUkKuL~2E@6_u)DU4$q`p8H%M)b_EdPY-^$ zUVLp``slrPwsEkf_e||%o4S8va^g$>&7bRI$9|oB{dsj`=JvwB zLtlKj{BA*8z0*6t?$58?9Zg&f+zMWKpFI7v>v5*OA^)vwIx}Byx>=&ied%C#=e}m= N+Qy;@aV~sr{0~wATk`+_ diff --git a/assets/icons/FoodMinigame/letterA_10x10.png b/assets/icons/FoodMinigame/letterA_10x10.png deleted file mode 100644 index ccf79edbbe36a659c2f3f9631572b7f2cc6e2d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4IeWS|hDc1EJK-W5g8>ioWkSUXfk`(vs|a2V{MzCi6)qc>)xJ9B)!rMccK>Nye(7sIKf3{= XVt}~N#k2-npm7YIu6{1-oD!Mf4d3m}xhDc29oe;>ypupjrUh-dC znypP&nEm&}@cfCR4oP1tDfr9NHvJTf2nTQJ2;g%@|$9=}>l>oNl2@PE5{hI(^Wg zh?fb1Hx#cp9~AXL#oML~oS+B_DuRdzq7N!eLHFk6WUkW(YvANu_`dJ|{{Q@ES7XD9 zit;(-6h&1e>*W-gtH_vJHlF;CHQc&Rrr9{&jGIsv=Yb8Wn1(WtP8y&MrXbJ?8y~<3 zMNO#E)6KY9StY5+V1b8WUBe=5ii*^_7Ep5#(;3*Nn^9)y_Fab7wJ5VDr0|MW2ix`f zE*my=HKf(9oGNNe?J_#zN<_eb7|^cKVLFlyQoU zFw6T?p6BVX$Z8-1)J$dxE%1V$uoULW0l$;n1Ms`uA9b-%4 zxO_g(<^wFU+c>`{iX1O+g5VBFLal9A${r-#Hl8 zn5^lH)`?V%bAiSAS>DU32vn5+Lk(jL?cfyr`mgX-5_<2yBpEv_>~Ily|B}2#O*lO$P&0g-JQe5D8Y-H7OL9gTm54 zI1vyzkmKu#rKJ zy@X2YjdHcpUY3^Ra>NYh-RxgCT|6S~<1NP;mu$vbADX1!ZPM5WudW+M9>ri% zj-}m~eTP~m4bo-uV(_zN`1SUCv*uMFsorw!tS$6)eC)3Uxr@FN&o(Oiho3wt2!(Rr z=}(tWu|1Vn=QkZWc68uH&FZ&%*UtRfm+If}@Z865n|oWkXFPus84Oia&3ZW48I#_r zlNT(R`sr}*wjJ@^pSRab6_4EaL-%iHTcU$>dw5zaRSr&ujH;Do P-ZM|e8{|vNTf2V&`F(jU diff --git a/assets/icons/FoodMinigame/plate_42x19.png b/assets/icons/FoodMinigame/plate_42x19.png deleted file mode 100644 index 3de05e1bb14972a29dbb43d0f8c2939ecbd02248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmaJ=O-$2J9BxvJctFG2t}Bc+8)Q&mGj@_O174J_eQXW1ue5KjZ~;k- z7~^M%i6=w6;Kc(*F2;|miFz``NHj4TxcGI@Xhfo~V;dfvO=P3B~)2WIuy zlnn=`5-D|RObuytS0@O&A`vhkR)A}an~vy4=z^|D*4{Bog8~GPMd&S4!}0*=K{ffI`lq zUfD}qMZF?dtL&w{B9|p*Snp>4y6MspX&-M{Zd|e{w>~sUzuTm-&kaUmgn~>`Wa9qoqhXz`o>gxd3=61_vZCodQbfLYU|wMgWAhW?qbuzy?6DAkEp9|zUkLh z@!Of7vmdN4w`zAyH13mMI+lN9ZDw^PcDrplV?Nw8!z;?f+Oe;-*G}D}#&Vzfqm3Ip zeil7>;L>R4^Y>RSuAf*~T5f6hzWKQS2U@Qip~8l~f9?oUy~i5wO-OgTM`r&3V}n{6 diff --git a/assets/icons/FoodMinigame/shit_25x17.png b/assets/icons/FoodMinigame/shit_25x17.png deleted file mode 100644 index 2323a8181582ee4bb02ac8b8ecc4d7154360fb57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoT2qYL74q7b+k}Ts)7Qg=R|U1RdP`(kYX@0Ff!CNu+TLy4KXydGO@5SHPbdQure@M@cL5~iiX_$l+3hB YObsSb4YD#`5kL(Lp00i_>zopr0PhrDg8%>k diff --git a/assets/icons/FoodMinigame/skeleton_25x17.png b/assets/icons/FoodMinigame/skeleton_25x17.png deleted file mode 100644 index 9dcf45bf7627adbdb0fefb1c142182975877ab6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoT2qYL74q7b+k}TmIRp{E+**yzyaeUMTb7(_3## zN#w1&%cUX}(U_$0?)O%Q&i6MRRPEpW&u3uJXEI?=NoZ;Unxb0b8c~vxSdwa$T$Bo= z7>o>z40R1GbPY^H42`S|jjap}v<(b^U4 diff --git a/assets/icons/Passport/passport_bad1_43x45.png b/assets/icons/Passport/passport_bad1_43x45.png deleted file mode 100644 index 743012046821d48f9defc9359fcd3ae0dc89a762..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmaJ=Nodqi7!C?5wUy$bxLiUMtlG)ev29{gZ6`Bz)RbWyZ9%MNk~f{$CNCy$I%yAe zL5o@utaxz41ua;lq6Iy8aKjBRE{GciQ7=_Q4|-6M@uhaE2gg9(``_dHzJGmtVoi-D zMRSS>f+&fukmGn?jQ_y2$#^ARCO_eIHVU_(H86#;sso669VP)8HPto{2ddt+##)V1Q-CN zFxhOD&Q{XUX=6A+5Ezzccs_s;0k_LSsu!@_d3gmHxSC_w$bc5GDK@x>S{hfnp zPsm#Cc%5*?7*Dksj%NLw@<2uTKh!iQ&@PIDKk@!k*iCfVfQbVaW*iN7E;Y}0Ws4yP zs0ca<2s`p+jHMxhZW`Jo&(lG&yxFjHm~|J95fnv?S}sy84Mb&$!VU!Uj7P|KLWLV2$Khszh_`omz_*s}~AqZ8;62b$zq z&Z1E;7A{gyZ=9Q zI_Got+{0+|!PKhP{BC1t*Pi{2Qv6Lj@2#8Jdg99FlHuyTk01ZApIufq9GyO6U(cP^ aNyWs8BI3uk!FL)?hKPonTWHi+7>-+A2B8nK)YbZ6Oa<3on&+trwr54j&D6lPN$(wPMVxL z(|J%>kfl-|7OaT7`?6P9L<$AjwSrnvyr6^nR1q%}ueDYL74)H=)K2xmF_3fqbNIgR zza~TJ_N}$c>z7j$Rh!(VWXQgWyum;XS*e@aELm4$HHSM;H!c7dQmqEkAf2>89%djg z2Kz6@vc|J@>qO1WlpljN9w8)DB$A>r}6y$lSF)D>Z^uogscdpSbWt7B%Gjfud z9*iA{;|hfWTWDmFo9BdRG|KTJCyGIW2zrAy2F0N5HB=N7=;^NMU=!K2uLv|WfMte+ z`aTECS(LTCg*uUnaYf*80?Ye3Re-6~=b@Ihi1u&>eu(#z!d`aJfm{Z9Xu#D;=eiqw zSB?~SA;8GZBGgwYW4Z@nn zRE)GXwKc^>AuI@LTU1SiTU9lp2w^o8k2h7g3epEGXyXdk_`nTU<@&>5ImEL9U2``y z5-zgn`J5%QdMu4q^%l5B^;kkxxf}_G^E>-drz=-ve0+0paLHkD^r21W-6exPb$fJ% zd=y`%w`bM4xjAC)n7FZrYy>_zi0G(U~IU*-xAJWP|Iibt(m=d zAO3pm$cihQB7xix_lg^zYPoVpdfL5lOPwl%$rDG<9UOW3Wc1s*@@59@k4@$;yKi^K zzj(y%SY=M6Pd?jycv8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)CuGfo`&aftiB2rCv&6 zQetval8%CrfsvuUfr-AMiLQZxm9eFjiHQOfC;_c2N=dT{a&d!N2ISc)Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i^#1FXzaAWg|q2UA!G5w0f0)0b01CXC!3VnU?E6vS?t1d1HN=3LAtHH$~ zl?AE#L8-<0rA5iWm`hUzSyf==T$Gwvl3x^(pPvH@#(<3clKkR~`~n3dBRvxZjquF8 zl>G8yO|S-EUn|eN;*!L?5YP8Mzk2F?a1 zrmhywmX0ni#xT7u`N^fZsd*(Zy(tL2#yItY5<_kQ&}Ns^qRg_?6t|-MTm`V7tuk@D z#Q>*yP`xR*-C~GSuRhQ*`k|Jz9x%NZ0TcFbg9*04Ou-i5 z6XN>+|9>De^w8xxAobSM#WAGf)|#n~VuuwtTz-DvUn0)Sniz09d~@b2{s$V1ZyI$Z z{@%zCGkIID&+oh?f%-MUT1Hw{tg9NL#iVbt8DBXO73~ug@yBsAB1?3x@MV`7d$FHA8dj72^JdwRQU)fmX=-O}?b}x;$cIaOWpn#s@wxTO{Q7t% a9)@0C#?lLJFS>yqXYh3Ob6Mw<&;$S%!isDF diff --git a/assets/icons/Passport/passport_happy1_43x45.png b/assets/icons/Passport/passport_happy1_43x45.png deleted file mode 100644 index 9f02523fc89306d1d4fec82c321a9fdc629baa1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1163 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$!!3-oBZY8}3l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)CuGfo`&aftiB2rCv&6 zQetval8%CrfsvuUfr-AMiLQZxm9eFjiHQOfC;_c2N=dT{a&d!N2ISc)Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i^#1FXzaAWg|q2UA!G5w0f0)0b01CXC!3VnU?E6vS?t1d1HN=3LAtHH$~ zl?AE#L8-<0rA5iWm`hUzSyf==T$Gwvl3x^(pPvH@#(<3clKkR~`~n3dBRvxZjquF8 zl>G8yO|S-EUn|eN;*!L?*yP`xR*-C~GSuRhQ*`k|Jz9x%NZ0TXumoa05nOu-i5 z6XN>+|9>De^w8xxAobeQ#WAGf)|9D%e9Vd*E|uT+mt0=Ej)OVM-mJG$R#3tux_j%I zSnCUyp8Stnd^B!nZ&&}jE%Fwbv!Zoe{d7J~;4XPK$Jo+d^FxjgbHV diff --git a/assets/icons/Passport/passport_happy2_43x45.png b/assets/icons/Passport/passport_happy2_43x45.png deleted file mode 100644 index 28ea8d956a736f1883cf7760900de33ac06c7e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1197 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$!!3-oBZY8}3l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)CuGfo`&aftiB2rCv&6 zQetval8%CrfsvuUfr-AMiLQZxm9eFjiHQOfC;_c2N=dT{a&d!N2ISc)Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i^#1FXzaAWg|q2UA!G5w0f0)0b01CXC!3VnU?E6vS?t1d1HN=3LAtHH$~ zl?AE#L8-<0rA5iWm`hUzSyf==T$Gwvl3x^(pPvH@#(<3clKkR~`~n3dBRvxZjquF8 zl>G8yO|S-EUn|eN;*!L?S#7KVndPL>uXP8OC< zhK9zLMh0f4rZBxO`N^fZsd*(Zy(tL2&N%gg5<_kQ&}Ns^qRg_?6t|-MTm`V7tuk@D z#S*7^P`xR*-QtK-uRhQ*`k|Jz9x%NZ0TZ_QasKtdOu-i5 z6XN>+|9>De^w8xx1_nl6PZ!6Kid%E0M)w_2;9-gVzWCxyfa0 z={HI>3YM<)R+pPw^Usj=KvaQ*nauVNJHOr*`2UN$#7gf_-xn?&?s+xSHr4mMY<+QN z`yp3luX8FoffofrZ)_6g?Rwr&!E~+V|Qyc zmrIPiI+uJ-a9o`KB0#75%&NBe2^;^!`LDH|bx44FXLy`f==1#-cZ${s|G#3Qa@4#m zLosgsp3SRO5?&}At=%G~mBzSH`q95EEluY&QRzv^=d&*I{X602-MfZ?=Y{?n!%bTi zuP8~cd#|Lkp0P|gZ(UW3=-Y1#Y86keSNGliChOCK^V{ti*%+qtG2Y~wTFVA1Ks;Uj KT-G@yGywp+u9)Wl diff --git a/assets/icons/Passport/passport_happy3_43x45.png b/assets/icons/Passport/passport_happy3_43x45.png deleted file mode 100644 index 724535eca4b8eb9d0b1642345e773e01b78734a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1210 zcmeAS@N?(olHy`uVBq!ia0vp^+CZ$!!3-oBZY8}3l9DB^5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)CuGfo`&aftiB2rCv&6 zQetval8%CrfsvuUfr-AMiLQZxm9eFjiHQOfC;_c2N=dT{a&d!N2ISc)Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i^#1FXzaAWg|q2UA!G5w0f0)0b01CXC!3VnU?E6vS?t1d1HN=3LAtHH$~ zl?AE#L8-<0rA5iWm`hUzSyf==T$Gwvl3x^(pPvH@#(<3clKkR~`~n3dBRvxZjquF8 zl>G8yO|S-EUn|eN;*!L?S#7KVndPEKw{hOWkr zu4XQ#rWQuV&M>_$`N^fZsd*(Zy(tL2&N%gg5<_kQ&}Ns^qRg_?6t|-MTm`V7tuk@D z#S*7^P`xR*-QtK-uRhQ*`k|Jz9x%NZ0TcEw9-ZI7Ou-i5 z6XN>+|9>De^w8xx1_nkcPZ!6Kid%E01oAm6aq0JSBXY_UKm!gU2na}u6X<7+;@*=M-(iRobWjQ zLFR#i)NEd_{YA6Q-+W8Z+IpsAk0IBj?03sc3a*}N(Z^ahBDO-FL++5f0Uz}W* z__}2FY=O<)Ti@hgv)ELtaO32?m`KqhCUcG-xm6=vG~@GQNuL#_^9_7XuT*FLp0Cfy Z#_))N@nibbNlQVciKnZd%Q~loCIIhnsI&k8 diff --git a/assets/icons/Passport/passport_okay1_43x45.png b/assets/icons/Passport/passport_okay1_43x45.png deleted file mode 100644 index 176d104e41fad38818754405c891469964cb7414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1105 zcmaJ=TWHfz7>;g;3`OzspuQY36-Aq*Y1f&!Dr?ia>N0EB(V{P=$>|!lua1&8cnNK<#ii$oAuc(uGV_pV6C=(HczKIArPv$y(um*C@e-8im{oj8%2jWfZ zW>zh%q9|%+tU*eUeFgbF(<{hIjbw^sU4SEL+>Ej~uh@{P*H8w6n4z@71XQ%nZI56b zMO7@;lWClm8$}fvjN0rfFVN43rgo4p^O$>2@uRavu z!o1h#^+rOgq(C5AQ|lA>fInKh%2&clNbNA7iAz}R57t{2>kflqk;oFX_3coL+QU8OfjE`$h4lX%Njy^QWyxU~3S6-;RN*=|u zcw;g$Ha14gmOC$ZlC3``)h7!hSBE#u*~Lw-csBa8d;5a{1AGo0|M+&(!Flo9E4F@+ zyVfk(;F-I*d&_828+rQh^RXXU`CaPE>f+HWSJd$3v(?$=Fa5*o2i4fu-fM@A;o_;@ z>z@`qxzT>})C>Pmi~n2qjZ|gd>VY?@R}Ggc&);p_owk*YKl%ARvrhIrp33h#6WuX% z?{(nB_Zh{#J41tKj@n_ix-iw`yJOlxbAop(#tVL#JmG@l-6* KB=v>1?)e4Wbaapa diff --git a/assets/icons/Passport/passport_okay2_43x45.png b/assets/icons/Passport/passport_okay2_43x45.png deleted file mode 100644 index 11ca378020412e4b358576f26f5cfd3ee12576eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmaJ=S!mQi7>-p$ML~QhDxx9!;L*+1n3}Y!bT_+pwOf|$maY#TIi_u>$;4#pZfo%< zRy;rjD}q;rilB%n79Uhp)OsO4c+{hU7rqpwAc)7yI;q|2gKHo&{|w*v{pajT)GVJe zY33w?Ag08slqB94;Xg28EMAFM+7Mo6phz0k!UmL4T|iVCPy=MlQX4@Ms7C9C`=Ej# z#?CWSX_Ssv%R01Z)yL3T%kf2sie*_x)tdn#HPC3ZEXfmtX zTu|FqlhWIob;+QXEhQ_mG8V7^Qpv2f-uC2dkQ&yNvF%?o6gdn*%|YsSQ0aJr3_}-? zBFzSLmKDh|i8fSC)itezMmsVpyKx`2a=)yjB~j*?{fM%_}It(_Pa+CbUUkQPp4z3Q{=K-#J*$ zsI2Xc)CpIN$*K;+(X5|S9vF}RA8J{nXb&a9pLqW%?4?>Az$AeOTU;G?u3@h4%8|n^ zP!V)f5U$UcG0_AO^qQbU@;oh&^XpC9fEjPWFd-h7W44D>TL&>ENMQ-uGz~c{$V>xe*vq7h2?S z&azoJmc<42Mz}`dSj2){1_#6Vo&BrR`71m=zBxL$_%J&9z{d0L;=$gc9vQ%oVtk@H z70Kmt*sQzxWHa8L#+1rb_SMycv1wb$$>W~na=mpOhmRdSd3E~0hI<{Hg)W`2KBwW#4hNQyYAJVe_7epITntocLv9@yZ|9 zW*u!eKdgK+Vbc*<|K&y1iX9jCO|PvjUc2+&?#F%o^R{)r?kp-V?!I$l@b-zbhd$33 ztP_Tw(_Od3^76~)K=q?j*Dw8K9=s@d_&9mI=gri?qHot8=yRgGs>bh~eR81Ja?f;k ut&(Q0*8U}fi7AzZCsS=07?@QuLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)CuGfo`&aftiB2rCv&6 zQetval8%CrfsvuUfr-AMiLQZxm9eFjiHQOfC;_c2N=dT{a&d!N2ISc)Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i^#1FXzaAWg|q2UA!G5w0f0)0b01CXC!3VnU?E6vS?t1d1HN=3LAtHH$~ zl?AE#L8-<0rA5iWm`hUzSyf==T$Gwvl3x^(pPvH@#(<3clKkR~`~n3dBRvxZjquF8 zl>G8yO|S-EUn|eN;*!L?|Jz9x%NZ0TXsww+ASPu?6^q zxc>kDAIJl{q=Nl45_%)Gc{7E)qsQLbmw$li@Nh-^YZj#-Tk)m0fA51xBt3%RAqJ*!|DASHh7kE|32cKJ8$0A z#bUvWBmEPdf2(bmTzfP7+@khX`Wn2+H}jWP&pjBXUR5YDOUl(Rjxp&7!VAeu6{1-oD!Mv diff --git a/assets/icons/Scenes/Console_74x67/Console_74x67_0.png b/assets/icons/Scenes/Console_74x67/Console_74x67_0.png deleted file mode 100644 index 0ba82f443f8980f71c93d35f3dbbc7f120aee7c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmbVMZA=qq9Iqoo6fiRJgAU_yY>qnGyI!xQchH%(*Fv3T6)G=XT)5sneMxDrUJqJW zl&w<TkV(WvNDJ}`0YDNwf$#t*yX?)g8@ z^ZWhZ|JQ6UDN3Kac&mqk#})%VdQsq9K;^0|{{fk1wc4Z}*)> z5g)HdD>OFT7BT^^ued=3Wep_`uEEbyJi6i~q%cZD1py$jNHkCr4AW6PI;EF}a{L%W zktvAe*Q3);Rod)`Ne}^|RpJT`$F)d4rQ}%`%eh>62!RtS3@0%aslahsP0=KY%sePG zC-QE(l(EbhgF8Lym81}jVUb8g8Br?*(SxZdio$RLBM1dVD8ltYiH$0P;hcm92821$ z7m|EJ5Q%GKT|%v-N1?0JF$6+3+atxn@Jyy)&afyO!c)#9+dgP}nrpN?kxQFIz)FJX5QLgU8`!;qB!s;}2q6e1iR4!Jg1it3 z%i}eg4w(U>uMY4QQ3xPYNv3^|ae(9jM-Vu!P^)mag6HGGt8g{!EE4BQw-)d^0-fRW z|2KIUbP9`i%6~d1aRl2jEA`>436lfZz^8i(T}7Z9c{c`l{v9+b4T9ppEA7*vM+y?oY8k@WNeW%I+7mHVD)Svw%w7xnwk=$H53#M;{rF3Ze)e|}?uYOD8r z)$8TV)5)6hjSc=A-Jda<*qw~tvI58K7kY=9`^SunDSIE&)bi~~=UWkbZ-eI8bNeQe zh7KDt9(G(C`ekWr+XuO=w?j+Mytn0E=Fq_da$+z?TXACj`9-_iw&d(c@|cMJ)l0~< zn#w@;y(5P=2oL_O>8`V-O2ROGwAtLeQ+cgYclPX$^))FM&b6;@Tr;;gy+5`_r`x`y z$7!%`82xoE=#=-ZIXN=0|KjAHLs@&TWL(^H_r&aoa3R~^98fw=?o5+s=5;ou+s}=& zBkbzYvGgyv!G+{a^%604Q@gXVy}FYt-&%C_c+5GzJaB1&vdLLAUp~_D&XprQn0rlV$mR`$SCk?Jgyxc9FG)v~M4rlh)tH^<_CT&uZ+ JIb^Jk{R5OMAz1(b diff --git a/assets/icons/Scenes/Console_74x67/Console_74x67_1.png b/assets/icons/Scenes/Console_74x67/Console_74x67_1.png deleted file mode 100644 index 19b113c8c8453b8cbb966ea5bd77991340628f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1502 zcmbVMeM}Q)7_Wm&0wQc8V>ry^jM)fl?|Qv{+>HvQEu(}&g(75R)9c;aazgLQ^?-^x zH;B$pbeYSXn+ZlD(RK_qxC}O&xQRrx>11`_Y)^fQ-bj$UO1QaGtbOFTX zWjvr5FxT*s%mkEze_2F>1^8Ks z_sP5{AYqM+ORSZRD0Fo;2CvU zzsbX(Q&_lD{?j>;BiN2%@zEf_&7)BQ0-PTS4oYG|s}T;_(~bhCb-FnNiiTYBTZLlY z9h=4E3|t;4yHNKH60>Z2`r`V^jOfO$AKtlgqP?qAogGcyiyLY8=Pdwj?IW9CJIFjF zH}1dnOHpm7huSyYlbjejtVUN27Iqx}d>ap9N}`euhmg|Yj-1h=6X&NsYPqr{J)>J3 z8c=ogeSbHrpryB>=5Px){8`J{it%H?@`a`N(zd46o$KFDaIAQlm&OZLa!`g>8G))+l>ZGOkp(WE^~W8>bqk?1^m z`e@Vf$?HAc`G@%6>tFshD&3!K4Zh_uMBgv`<8o6F8*?JH#||Cs>v!aw*3jDQz4!Q$ zgXzED+%a@)EH?j|s5+3Al-GGT`=I+uC@Eol*i_q-Z(rYg$+0o|-S5)IpSha6>I3U3 z@UZF9=$fA{ygym6yw!J(p(eWA&o2LZ`%wJFT@A^D+gG01P(c-snHw~raUT0**L$t! zO2#gHc;Ko2$wcd7N%)x9-CQ7_+?V=d-jT1oDQ$Zi+oqyZ6gU5hiBt8)bcg@AHfy1! IJ!ehhKS&cT9RL6T diff --git a/assets/icons/Scenes/Console_74x67/Console_74x67_2.png b/assets/icons/Scenes/Console_74x67/Console_74x67_2.png deleted file mode 100644 index 80624045c72b12e55700d8a99b695a54e5293824..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1505 zcmeAS@N?(olHy`uVBq!ia0vp^UO?>3!3-pM7?Zn!lw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#2Ii8?kcg59UmvUF{9L_6kQ%*;+ybC(1_m4Zih{)C?9>v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn^Gtf;oFfdavx715X zOiD~nO43m-2z}FXUa9%Mqq<~?jUy)d#Z>VRWpPLKv7+7_2Nl+@n8CX>phg24% z>IbD3=a&{G10y6&8KxN+c=#;>DFnL4%D*TR7%Pc6F8Rr&xv6<2o-VdZKpDN1%oHn= zBun!|3o~O~10z#oT~iYiQ{AK_OAB2ybK^8iQ*%?(REs2-IoR|&0fCXBn~AH1qqCu* ztCOX(v4NYBo0Em9xrM8%xd}|KXI^nhVqS78%|UUo?>$}CGwaVyHtRR9OFRVEe(n53j8 z8yOiG=o%Xur0J%lfIM$#U<^!ICI%@cX=bS@7Dh@?{VC)Io<7h~`k<78lyYD~z~l&G z!ZQMp1J6pSdBFTr1k5Pb%cWleGZ|ZePl)UPK5Zb=!p-D70|VnnPZ!6Kid$#Gy{8>E z;BfxF|BKGCr`j84S6tk4(jqf9vVkY!h~A#v?-X4%c9#CtyTZr&>hhP%f8y*`t*)Kc zeB=LrR*uz%ZjDnnDz8Z~GhEA)w5s{g39gVN@34`Eup+bhZ8E@JjDIx-LmGg=UA4ZV4slM7kuOX5T>tPsFG-32vStRC&zo%b z72D1B%~Dw<81k!_MSZJt>4xi}e$u~0%=qR=MQv5zX}$7$^#{o*@8Wp%PO8T{{IuQi zr3BJc?;G+MU(q!_;|r@tuE>#ytL7eap0^J<=>zHMceLuFfsB z`*!vHR{85uTaRyXsGfasrn8RM5tE-s5AFPy6MejqVXd9QtMy)tnF$daxY(C(Vh)p? z@}%-Jvxf9^V&c@KoH7(XrMe^=)i&lx1XJK$@Q(UO1-J#tbDCVW1; z&pG(r!|Fsq;eFA!%r6z3P!?&*`rFvFS9WufjnZ+xRi8t%ZVBtPzf$g)^3K5hLqtTZ zSnc$O`eEJOsqNvPtfv~ZG}}%4ye?BMuxUNV-Q-h{Uu>T4L O6}q0TelF{r5}E*%wkiAo diff --git a/assets/icons/Scenes/Console_74x67/Console_74x67_3.png b/assets/icons/Scenes/Console_74x67/Console_74x67_3.png deleted file mode 100644 index 8eb5ce14cb340389123dfc2855a0f5d0a1202e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1506 zcmbVMeM}Q)7_UQ^e2uAyOl96m6cF3HUa!zrD(M$eXYnY-Hv2GMdvDvb++DpMwrHH2 z0~5z2kf>vWndzK!_`PL;jp-EQL}uKa;!qjNW|+e%iw5?U$ld~V`@{IhF1dT3_kDlA z=li)WWXY1`gjop^i6q%lY_h?1DSVAnV&FGvlDifz&xmHHSjKzA5G4SKp5|Quv9OdE z*Z@UWtvL${B$61Bu{%Ylb(z-9vvMkek%!p;WJ@Fkh2a3@_5%@d0WZVpq(kjrN)d+E zNgXOHW(^pDk11X!fUEmXh)kwU_31sBwYb<#1tS|~@3Q7JM8 z5&b&pxKmCmi5PhSAbE03=Ekr*Bwr(^DHr8-xfUWghAU8vKox`x!?a3`mLQOcM+(ge zv`1?*6-^j}JDt=giUBQ(hC(5ENGaz9FRIXJG$@9nI4*+-S+I%|sj!R-W=1ubK+r8P z0g>T3B%+aW@s*-Z3SAwKfel!#4;6F4iA=$qpx~M9*`P7&aWg>}^35tj zgDI3zu7wMV6z2v}+YGcl!PP&Ot2GLM5_!SS^A*uHAbq^Z2Yq}1!Erf(WIGs+=0m}p zNR7rrHUWWI3+N(&XOXcaYnewlK+wRA;}|AWDlm_XrX#^CFeU6P0;35}9-!5@bb?R+ z-{hgtDKye4|LL6Q5p2hZ_;3*5=HVy-4$hAN2gRPQXo5o)M=rCQN9%H-s4gPDkw_-p zvzYYu@YQpUYiS)wlK;WzhZ`FGP16#%g0`RN?8IZ$spo#|XumyYn(@jR!u;rp#| zhr_?|52pFf&Zp9@e?PgSC2t8`?#w#yao=fNS-n3#;b3|F!e(cszI#_1+4_9i@m)s; zkMpm#duR6CX&J4}vCoPb%*lRxM3y}lG_+66jZ03yJ3r;v-VL#_tzGZdlMDK;uT(cG zFFEHqZye)$`Y&|M-}c@<@3)y3JV(Hy<|q9tw-5ia{D8i=;#N<|$r6`g{(?`=g*YsAiL|UmiW|3r|u`+wKu;{_V;8r)I8T)@ZHGzlGQuybKctTtHvw3 zPo6l@(E=*_>bghS!aBD5*{0afTAA0c+;nv|*3O-Iekkj*D*uVj8ws0UQYFqHXVui~ z3luNBc4T!NsO){EZS&T>2UiRWGaY+IGY(JN+5hw<<-qMJhx+PYevSA#qgq=8P@Zw_w@vFLsc~<$;)*LH5NDeqA-&OMc?qZe4$}o4lX2yEEgj zByPHY@9v@02dh3+JJ*Wy3d`biGVZNW55;-kuyoF#Mx5N6-u|xiVJAPkE_Jwman+n3 zE|$KqC~NEP;!@M1!dP4LnKr}7`JCTxb(*}jmo?P3rM;Vj2|4D$%oCEESyK}4oSyn~ P?eph>Z~Po?8(5ZV1wO4*_G@*FD(Gyy%nFb* z$W#g*f#K_G&I#E%-8@b7`ZS-bnBwH1o{3=e;h+N8I$d^dSYfy-L4#PKQk1Ol)UnTC zNaU?>IqAY&id_hZg$=4u+EC)<8mc%859j7U*Hc3q=sn>;nUH zD(|N}v}4v7*jeF#rYRJP*45SN>x_C?tweE)#e!l6)L=jW0twYi8WTpOP-;{IErd8# zR5VeRpom6>m1{LC3|xH>Lr`(K9x9eXvzY=pL&J=M;(81X1|xyZphKER_}7g`qC?(# zML<15NUl{mP!NA=lnj#hcta5&@P=Beil8b?H7#?sK|#`-v=s(7dS2uyg0+|!bEXl& z45Seu34%me)?!97O-8?kG?AoWW}|u@#dpxS!%o=f0<+DI;|2L<++hGIBrJBDi8R_x zQLa-8X^g}PQQIQ0JZhbjl5nIu!q;P+9mI%EH|Lg< zwt2%pTqs|6=nNEp_>b3rH{D)#d^m5xiZ6)fkLhrGGJWIpvFp!yw(O|*ZYux4SKXPe z!HM5)mHrs4jy*Uv5<~Cb*VgDwOKC5f$mrc;^VYg|6+JP0+OeM*EVRaw-i6;LobXNu zN|IjPkvQrun|8#GcU((Hl4|cS-dVBtWS?&YZo&V|TbF_MbbAugFPwAtqrKghSJD=7 zr@HT9Sr^xjHnB-%i80e%2UCWd$U!zd8IS)xHi|LFj7N9f-oA#68R;e(kgk_=?#>0*il^p9to04PG33xjA|NhT@i_xQ?&w^ODrp z-pnG#H(XIt)(mtHU}6~QdD?e9G3ka_k&(7~=fS4Q>UTTuY&qZ4kO=S1x?nx(>ep{O zdH!Z{-_X#ZGb``zDOz&b_Tl*PsxBvds(g#oDP26Q_~Um^R1CMnE56w+mbF!g2bM3& z@MZY4-sf!#v*_kHOL^aNDlfAW&Eaw78AbrzJ+ J1Nj>p{{aynAvFL1 diff --git a/assets/icons/Scenes/Console_74x67/Console_74x67_5.png b/assets/icons/Scenes/Console_74x67/Console_74x67_5.png deleted file mode 100644 index 1032717f34d42ab53c6f3301203df83b26befc3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1504 zcmbVMd2ka|7!QJ_990>o94(b~3yQYM9@)*YO@JgDARSUenl=UOz-IS_EbV5O-G!up zBXX6(XhmlLhhqYAjSdJ@83YE83Mir=h$H11tRNs%1j_&__);454~9S7ncerj_kO?c z{$1uDsnYc8@l#~?6HW(bklM2Vz03C^d$zt4z{3mRVP8Fg| zkR91+4DOt0OxG0#!xD*vDPcCr>STqOy=Ne~5wirB53&0;p;SXhs*+1 zoDPJMsw^QLNoK@{I6w)2CrKPPnh88=6oho}1a5|%Md1P!wE)3JqMdx<|0WNEPGRXz z`A_F$j$k{c#Rr1`HxEV$#Nqs?a8UN`e0LcfvaG&8rfumm^I|*FLE_!Fh^2#jYxQjd3Gc-S^XyMexrH(-JVB+MF?RO?N6WdB| z&(0}tPf&rj9tG>`*K%j)sHf=ZxkbBHA>*^9in<<;13HE0dVb$)>)QTZL1o3$-(C&K zT(3o?p~CE`!))axq3-#+uGgiSR;H9G7mv3M+|tzN=5yT-r>L3!ogb~9)#bc)ZAo~- zfMB&pX}p1K7S4K=jjb=wCyz~O7?an~JXRW1v*6si*4W3}UkfeRJS^6~YU}vvzep4R zK6A6RrSj_Xz8B9#FCX$1mwxf#t$q7%?od z_GjCR`TlXBUG2B5^j=A|-SOFwP3H63lUwe(MPP!pTFNiB}k28t$0Wbi?uIhhO5 zK1bo8F}Sm$VO5oA42wpix~M@X%4L|Iq9_a}FoMuRgjT5%R3@esl<5f#4xj|(h@?hD z0f}p5Sg}&IqR`a`G4PVd^H8y%3}y=E42v-mrq|&Z&&LBBKr5;b{OiUe(TcxH0+q2&@WI;ShtBJP=fu!-~Qi9T(wflBLXy#bnUpgwdci zlB7|~vXn(@G8;ma(QGsV3!BjMC_Y|jGTRDl7N^DL(CeKA7QLM+Fz5?xX2OV5PFsTO z5)_pYf*@f#0&Nd+&5z~Mb{R0LDEmdRBGCrku&9bkSdaD}qSBLhjMBad)^)52H067&XFM#;4B0>$mjlV@-XNW z7Vnh*bWY+3wqsm;I0$g_aFl=m=SPNvvhyhFhC?>Y>-IbEzmf|@OCfneqe=SR<*@l< zXTK_4+SrMtec1ovmA86_<%6bmn?q*{=-LB-nLMWbdVkx-am^Rc+-&#ek~zDt^sIjF z-kz3*OUR#h7QYlQHY_;s#oppH{J@?1< z^U=Q+7rD+1#}#i@;}0oo-(mXJ5R+!D%FI1kJo;GJth<=KwR`xu5Sw$YzP`!Y#$(U!t zSiXrG10eVt+2&Ct()s}O1m#CTTk>oU*|?^I~NF3%Qu|gbs^k#@MUhpJ~})h z5ID5=__<|wm)}{rZ{cjy$kxN#8>w1n?Y8VAUd!8?`Cl!gn|6=dbi2hjXVQcx_a5zd zzoK(b#=INK9re}1l11&+y~o}?eZROgW4@Gf)qQJ6N6+LxUPCHB7`YIeX-`f5@^W)h zDwTh2HhF1zpETv!{Y}j$)Xz(DhW6YZlH7joqq^QP{Iw=}zwgveiSkdi?NT>Z4L!WR z2Yel!c#l2wabQ&}`$$QO-Ez5gN7Q5Jn(=qtNzbYAH)rk0?0oN5?xmtFqpozfwtcpE z$?UlesqW;$vYN3oqG=hKa(|YBWoZW0aY({WK8QYl2g382f&gn#h)2Y#HvbRXx{xJTrOYVK2_r2fm z`F^gJD$GxsFl~ZHqe*ftba=qN2)y>hIIvC{!`6WT$A%TJbuhLK?P%bKD#0rn-C4n5hMqp?J zqOP{WkDc|NS{6l(kjbLsXohAPCI`Y%979k7!3Zsil6nhC5YXrY19LLx zCq0h5QDfj_g-ca6NFqo$9M*;PI!P`;FpI^4pg4l#T7b|hm7+>Vw4yRIroq80tSkgo zK@y>;Mw*dAsuc#VK8_&}bi1D@7M0OVft(=`I*4F86bS^PfsLRQ)x-bm##7OXw=&2h z9$t|`G7AdgpBW>A%2$dCrW(qkQiFCJzBl zA<<6xPv^w0Ks!doCxZYEPezFs!TiWzPzoRMwP47`Q3YP-aQ!?Wn)8V7HJUNET@IT! za-pYqMMD>wXup5_&+pX9AC2v(&E0;!to%tHLR?Mfyql&2eeFn7)3S?H`bp~C)EOsInl~OT`4#pzo)Mqx2L0T_li4b zrc%|(uiY-g?cHVd*Lt$Q`ry~A_kN%IZp;3PyPwr9-Z$LXwpMp4dv8hi)k$pwP3`gf>R#Pjg=KhV`|^^L zsM8PVOU-lcKdc$_$q7kWjrQryDc-^4DL2Iax&Hhkhc{gRVv+mx&MVZq_$_C%eoGW5 zwtll~2>ANv#R?3YMYm{sz~rwB{Wx$=8>g=he9Hr7 zNJag$v~3eM7gndv3h#O@O|GavHnqOs=W>k9-^{$xAFR)|v^iHQ;r902UAP1O zQX#)e&5yqjvJb~0zZ(r5hC!&58Y&$?%gGoEXUsIqMw^%cdk;A4563^+nceq!-}m`F z&+qx#Ek%X7^L0yf2!hOa=Q)evnh)RXIWyrmZU(;%E=gLBPb-oAT9{P;Vi#l%pl*q+ z0>yw88rFRYRw2ktP4xOSpQnJ~Wy!!sbqoyT3^X7CjYT6;AgD4C8#ZZ|fpYX1$IwX? zt=5K3k@9(p&}>-&sM$d1d4e#bnO1|qaxBkr87M_iBu>ycN$UxMFE!{ zQ|xq2JA*qLR;_6v2FJtUupw+T$VwGXTCG-`pm2)PLk+#!5Y*U+KB%U|EI5J6D`H3! zX2T%WsTib?$Meu|P@T>c%o!eGLpW(5a7l^=HmR*@#o%8WkJMJZ4IzLR z168h5cvujBN(>B>_jpH9MaYI(qlmC7Y``h=brJ|_Zl?`{HwHlz7@D(YvKF&ZPf#YK z-bB+TJ;zxsdUK}HZ#89_Ou)j$>^urjIxMuyl1b!P>`s!*aagT(3Q9&JMY>44-4w&R zgQ~^`c@Xn0Lf=zZv+J=~CR+ilCM#Z94#e7^s9M%!wOS6L6lI{%v{ErB$YC`-TBE6u zoj?)mf#6bP37t$bBR+xvEdZXP2tscp3BO(tqQR4d5q1_$2(;e}1Pg^tB<{T3qzE2r}cA+iCYk zt_+l3{PZ()PRfG^gH7M*W^HUd9RF)~dF_sE3$XoV6_N1OY%Z;!0Njm^8*kqvjt7N2)_&$_{$ORu-tupC_b+1bQl4UbyBctha=8ae6)kpug?wmsBQODX1{{VT) B983TJ diff --git a/assets/icons/Scenes/Food/food10_61x98.png b/assets/icons/Scenes/Food/food10_61x98.png deleted file mode 100644 index 8ed4c760ffed1be9a4d6c56e9ba2d102eb3c335a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1420 zcmV;71#|j|P)b&x)wKx-PNxeQB7Sy!uhTQ&;rs}mpC+vdkh2p{7cz<9nTeO=v{bFnN_?91BUbH> zl0v58jFa<}>vV|>z(W+imWeX5+rh&REbR3VL9EO zkvtsjuMvTSHa%J&WjU>dmPVvcLNv6sXlcf(Qof&-yk-d)q~E1B{2m{}n!qyB)L_XN zPn+2>we;awy0zp5jT%<5wxg)>OklaECCn^Q*8SNCIph#wc8RhIpl1w(<)mqKM(|d4 z3R>AI7kLVjcfF?1a)DE_)XnBJ^0cIsS}-qB;o`ZT@qX&Kh#w51eC&uCy7Dzq*}-7t zv5{2FX8J-n>0wYgX5noQ)GTz%qWr(|$EKN;C5H+5z3^Q9$k&jlrEj1OX&a>*u zGe(rS7~UTFh}KdI)ww-`(wx?WN|o^yMNK7bb%t_{uiaX|k=#aYmsD@sxp!a7jkEfV z!YXPWh=oj&nJrkgtE8!?t+y{TynAPKlM&foN*>6DX(qQ_;oZQRd3}G|?XRQNn1`vS zJ++1R5rHaBxKUP^M+Zm5y}K|;xOn=3Iqfp$a%nHW|L!hn!bF>(+1%zkJZ(G*(bMMa zzrMOXZ3&#Hr<)M!)>wDby~cRK2bGM-<~BNLNEfn9o>41b#pqh~?;tjh7>I#*<#oDLPQ%jN&?udy?W*|4^R%Ffdzgel4Gc_LM} zP0A-Y`QC!+;)d|{5*~E#&G12wccSFpjy%!upVx!YK<)NoAT1R!HNUvwl3}-d z^x5rqdObtji(T*1K2`Ma``gZNM1Nm=*^WZsRo>cZbt+V z3FRXQH}^-M**W!K2za&yLfJcZ)oyD%BLklrYJe~@SR*)7m3Nc6^o)!ZG6b!vW$ zd6xo*HyY?B?xTcTP(rTq?rx0G_p*coLak~?$hL*vrHE}fh%RrG(CzJGn^@OjUyBjn zWzn2Z82A-r?_-yKl~_4U6f6IMWIJmAJpc=TieVzYfNV$o|3r|Mye}llvF0B^oQU9n a*4jURLuFgOt7+o^00004%8wL7LAnTBWG zoUb^Y0YB6Kb!mC#b6rw!P<&LbwBTy%dDm64-+MKAymyz}&V#<;)XpZcV z;;<${7b=sypmR^>h?@E#q%$E(yFc5ATuwS0qNK(nzn^htOG#VaS-XeER%LAu({u+V zrp5KjcJngQlz_MHMw;cs`)fw)%R?3=V+qQMqZnR+kf!NQd*LOFOqyqQRk?ZCylKes zY(ON{KKhkgc*%C_$N1OT<(w9?x#XbhF=Me$i?Q5tPc- z3`#lqOKs*_IL^4^-0DWJn09GcpstDncKH zN}4X975kE)*1bw^9+}HDZ`$ADtg+z*xiV$d;cV9pwZ_Qz)rV-(JQz27@ zxy-vUCv_$N>-(;}oIRi3xXtCt#BDV>;hNy}E?;aWug-)qOCAX@IYFj3OnAApm!E&2 zFw%VdT9&xvnhWGXG+oUSx1O=?i)T6;R`_BO&3V_;oTGNXLrp_7CWk_lCcLy> z)IUVVxinq5AX*2_ld&)qZ4g|V)*w9>2_u!nJs3zwoS0SsL=hoAlXo{s)1IB4J%iG^ z+We6uNK@Dlva*^+f?sjD{QLXWU&&_8+7qi`Mm9y5lH8sn3CxzdUct%tG30vWh(sbr z%W4`Dz7ZO-v`&=V+mR=k-Sv9F8nW1FdWP^o2!L-)A4jhrL3}W8FJWrRRPg(=;M#qS z8(Hm{m4G2j3KN_#60HU?p9GZ0~o>`JIr*4=|M!bsQ*VdTh; z@aCq?@L1Z4oE9RC#;%Cl`fP$pyS%TIf&xfRZB?QocSDsk?9p__vo~b+oA)jzj!AUh6{)KJS(fuW zQ=zpYgWq>0CCdFQ@o5jiwHqDBK?z%DJ&XJ=+5`mPR^TN}iB^`OBk9*y)x4~1EOWmZ zgsb7!v?ujkMObW5Bt7^@n)Iw9jR7m!s3Kee*H%TG6na+LybR%r^mH6~JJZ_2Gmwb# z=Hkj~OEqszV_FQ)dS_`~x_(6wvLEdvOy65w&4?)!?_kCUS-iUKOx{F$llj3{Q+d9nJ9Yx1Ic#O zeyf(5KgF;S40Yx&;K4 zHUc?O3%i+j7br6>)f6H)Qi5`nge>iyR!6ps9Lc;S>{f6@h37{G_0+Q3o=(~l-h*o5F7K`7&RO9- zW04oHFm=^?TOEl=)swA|B<+rPbJ4s#Ef|zJS;(I4#>O7*y}3}DKvid3N`yR6Nn4X4 zA$aVjb7hHFggy$DG+jU|_9a2BdzIciGM8!Iw7U?kui4-FhA<#7MzJNyF zn!`#>Bf|5hLZ%9HnRjDO>Oub3_f>g0dOp2zo6D7n+iG&cHNop$zSu}!oe5)>JQ84X zf=q8S;r-s;e*S^NNb~V)S>n=jUh*PoE|3S&bTv!ddd9jhp6P5@;fqBy=Uq>8j@tbW zH4V*}912mI@X~rw{}37H(sbp5XdN_9#==mvL2zkWgY;Y^j8qc$U_(0M#Iyn+iU{$M zyt_%7_U!cN8I;!5=8q&nn!+|AE30WF_yhO*zu#~EN;YfOo>&btvLV8hqN=D6?u}`J+23=A&Zr!M+k2S0q~9K zOPHE675w!qxb|A(NmhGiCSb^t!UQKw1=q}40)OT;5AzGvSdo^BbBXXGWEVW5F}^_% z3-L+hU2$3>YzdF0HU?p9GZ0~o>`bUt z*2{x4!bsQ*VdTj6@aCq?@L1Z4oE9RC#?FY_`fP$pyS%TIf&xfRZC0WpcSDsk?9p__ zvo~b+i}x-jj!AUh6{)KJF3WkIsnA-H!SB1066JoD_^^lI+KrCmpoFcno<;tZb za0{l8v$VTfBlKw*FP)3JyIk^`P20Q1zOvZ_(Y077ruPFzkZbe4A*SB zm!H4yKSxF?>4oga`|F_zFZdB1NVRzeq7-4$g^;Zqa2E1Iq$?=dGnjbzOfST^!#c~E z9&%)e_!*EMvc5cNZq8@Xe2BD`fSiH&kRy`_9-a8`nU=iuk%@;$pVezu3_CInN8Oz7 zI2{2$(_gx@JoC9uDL5#;bMFU^W)Z`hro@q!rH$d&wzQDcdYX4rq|HDjsJAQ~XoMFlb?vG z@7_7_3Y^h|+>CV9PBcwLks<2LHaXLg5QWS>3)3|n4N>%dcB^?RY3iL3w0n{R%jm7| zrs)c#Q5uS946i?M)V0Bd-WOxj~H zR=EECLV72S^51A&MI|R4o1uMIoYqKjfkw=9wuukF;joyX$228p7MV*ziudjb;`P8N zzs@8+HBR@0x6YAm;+qv5Ug5c)kQ`hDCek!Kd1G}?c)GHZBHLdm4dQeHzMKlr!$PA;z zvyMka*SzZ@h-w(JwVIF>)ie@5B#`5^ zjzu%6~xAoZo;bQf^QVI$nIkj1dirfMg2p6NKBc8n=vtPV- zGI30r5%zj)Oa3iAZ%T9qH^KBTRWk^q4dt;~opXSAJCbPGA^^Hqy>O2(y=O^dX|6w# zwCFGJjOUpOEm=jqZjIC0ks2jF>>;>zz2i8fG}n^$S`q(tkwXA(1y;h8Xl5DOlD=M5 z^Xg?|k^7}XI2&e7TT;(igwZ-99=s(@dRCssKrh+IBAfx!R(YHhdRE%J2;q$Mv>o|4 z)7ru#kcjf;;>>DGHE&I0S`3eRXK7x#ent_p9&IE{|6Wx@03K7`f^e~VZ@Lk@kJYmV ziz!>z&Z@TB9vRU#g{At@2u8f}YE!57$e1HT(7fuXX3He)Qeg8&3q6v1FX7@$A!liK zwTA1nxS+XEI$qmDwoKG6g|FZsd3m9P9&aB@Ag;r?Cc|H4(KA0F;2vb3Yo~toS!pJU zo_|BK6}g`WVCGNJY{U*^EAqdIAcedgNpj5j5X6B9HYlb11@1dh`E$NSxBvhE07*qo IM6N<$g2mRQ!vFvP diff --git a/assets/icons/Scenes/Food/food2_61x98.png b/assets/icons/Scenes/Food/food2_61x98.png deleted file mode 100644 index 5f44d97f803126672dd227fd0db3531531fb2c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmV;11$p|3P)#{EaiaQ+N^*J2OfAV&}!qz&^aaKEJguhR3f) zxP6l@!o$zs??3m9QqmjQx7X*pCcNQCwjuTA8HiG(NjE~aPrzBoPm%7RWX}-d={3C( zGw~GZv#NH-w2*1I z*U9A%y%1~dt@A1{fSGPZP0^TPywjiVdxB_K^m^yH>o$T~a*Ai~llXv?BG5+#b8 z*VA4P^C+SuqoIBnX}->9FncC<2(%CHv-LFbumXfCGjG*1)Z7WY+ zm%gg?ZY5~zqHU$qnJkuh+A^9GKvBUbf@;DHLZo@dIbg#CI_l{plTvcx?jf`$f(UTIS z;uWDTdfJmWqwPt1t}XC*rmxa9ZJms^iM7q!E>rKwR>X?}Z^;;e6ynkTRMK=1>m-r` zg<+O>)$-^t!R$=*onzFZvwJr7O=|fFJGqW%4&EB>iqorrO zg68sc#OMg5q$AT;q@BytnZYu-^$c;84omF^(h(6;)jfbp;vPUxdj_o(Aa1bL_v~21 zmX-B1GCpOHa4;d|@Rn`x9wJ>z_;UID{n1~(XT#dFSGzJY?fw8ta(njIpHJgnp8oy9 z$@ezodL&|^k+$=+C$vSiz7nD&>2-QGeP~WHET!OL$k^Y!w$L1i&Yzx1-mO zAP%=INil~!`Q>S6IPxmOK=NShNK199M0hj08?J@5MV@|s?}zC^HK358$_EjqMn^oR zMZpJvxK&~3F+$if9^IGLevg{r^8&AnFXds906ZKTOd*W08?Vsg;&BmO-yXu&WFW#C z*_AM-@8b}VZ7mT)CBjI^j!<(uX0FLYwP+#2sO^eq&dP$bX|vzyKZv zUc!`UWf?k>etcBJ%gV+w_nSeu8g5T}QqNU{(Ks^-K9VM9R*{1NE7_-Z?IcV;?q`mI9zCkYDdVnh2Euz6&xflZ#(oIh*w#3%}*G3 z3$h<$m;NiUa+oM8|AAyXYQO!0g+IkG5jP;)QU8@6(w28ak{oNk=j4tE4rs0Y1s%sz U$usUig8%>k07*qoM6N<$f+-lfYybcN diff --git a/assets/icons/Scenes/Food/food3_61x98.png b/assets/icons/Scenes/Food/food3_61x98.png deleted file mode 100644 index 9e582f4635a9b7ce26fac2c2a64e824a2459186f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1389 zcmV-z1(N!SP)FN6UacwV#^Q#eV zZ_+P>H|bZwn{*{kzrJo?D`E=ijqLUFV@bjreq<+r-dvd|M4EI1WcvoJPQHY62PC_4 zh^KRUBZdWQ^_(sdGK%=hc%Rcz;Ba2u^C{9&0kSgj5+UOVu1dTtr#ZD=k$8&q|EAg< zWkM!lwaqCjLn8$V-iT;H<1K&7%22$ZW(c)O(T(#)(v&h(14qs}S3fGL^4BuHwBdk= zdRR*pX~UX9U)s^NH}xJ*cw)lXv)1$|J*Tw_O&S*|W23F?lztlDra)2SDmM>2=|Evh zPGb)=L^ylHlI_)}30Vj9zW0c-jENj`hxF6YBMLu<8`!@hUZ4I^EmUXkG1d~*o&=Yt zxuU=_PBL1`_ejO1!5!YPf7UiYQ*AsiMUeY>25upvl-F8kTf!6*oN==n&S_3yq~pqB zJT(T6t=NPTA>)kV!qhS!L^biLwRh$`o%w0WVfWr1A>za=G8cuzNP88S@^lq(lX`nQ zC;T3)#F0?13~^D&EJu;WuuOHOjV-OcEu9c<@3i-2iVSXSWWLgz)-Dp-gxromB&{t# z<>;09n5WA43Q-eD!v(lWC6UvfS#y!PO3HYg6*8{O#73wK6jW%|vDW$2@a~iK2`zbx z=ir)@XXUmjyc-g!8~Hy!ckQLufNYp%a$77;q)w+1VQyIvZ=R=M!S9b2J7i9q47yy} z>G$8kC~^^|<)nyM`t3%fji(D^NmG+)@RX|+qNeEu2R5gpIfobXhOBp;h`5SnsJHQ_ zghex&N+k_k@naot@^pl-1sUR!-P#-`PfL&*0S~;yx%W`{u9EhM7?%Pb!d%f2@wjyy z>1oTt)gf6iFV*}|<4MvM5#tQ=hBY-VOI(BMX%3Zysqq@|Ok}B^jy%smBknnmImhiP zGK+}0)%tSzetq^`)I`IY>kT@FhQmsjD*<;Tw=tkT-#W7!F!??P{oK_=IMQq&&54*Q zE_cI+CZrPu&vxWN<8u4CGa4T2WV$RW#3jPF#jxSpqTs#T>ptf3I!N3K(>cu&-VD4G z-d+LwGZ~8!m;lMjp?Jb)g!fryF<83&OG+?(vuu1rKb*Cy^JsEZ7D0 ze<5MbcN_cfI2N~i{YhJW0B`g zAzTf!r!A%DEW*?}83i9ngR39U#ei09R1vO#X{$UUMZK5Xya?fn@^l<|&uMAl3^<~Y z@a%3&3~$L}(it9AXKr4&enk_qA8jNIzu$F41U#X91mR}>eQ$J6Js3i~w>d)Dx^`8! zHQtdCzbe%T!j!=h!H6pFHg)P984@xIlB#As+a`Gzf(~zLp?h)fCET1P3)a4Blx_|oE0_Qq8*JSv+ESU2N1D`?mv3BX-PYaictnwd7wxjmH v2SDKuF>J&W$ad8Kp9tKM_e7FAwATIszSeK!o{zsp00000NkvXXu0mjfbjXoO diff --git a/assets/icons/Scenes/Food/food4_61x98.png b/assets/icons/Scenes/Food/food4_61x98.png deleted file mode 100644 index 2f3658615af3b170bfeae2976bb38b2c4ba4c2e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1377 zcmV-n1)lneP)}Jw~;+t9qNHnkb|m^Zdn3MoONvYBmhu2lm4z*?wHVeq7s&;q%o9 zw>Rk*!khG~;7$5fu$1)2&p)@Hvtb$OjqLU7$LR=f_*O9p-OaNSr6?iY2-&^>XC_}p zx`UEEtBaS!^hS&e)|q3vOvn)Nv*LYD&w#u0nRkAgw3dLJm3WzuNd(VGyfmgIwLTm1 zY0_sRkptyFQ97lYB7gces4{z^?EMWOgOUN8iTKkNbEU%|6b=KM{lpP^NI-4?D@kWVp zw_ZU!ywkLdv=)F8@aE?HS?T>5gku^Bj7N05=O`z*;({@)-splK9V0E6IG{eXZ^a^% z99fc4*^CJtN0r2v792Ad|0_QW(W~%jN0spv zqNb9j6KItXf~T_b#v-~(n%Qwt$fPur8(~gRkfC||mfVq1WBY)fxaDI=Mar{c+vVPk ziPVk!@9(?vGHSrAo6f|xnw)5rP6KZ4nUF7DBw^vtXOkTm(=LN9m-g}N?_d<1L?}5C z5l_9{K-fg8Fp)GG%t9nxtq?U!FC>UDosBs@S=42t^JK(TO+%xFKN1$pXcS5oq~yoj z-?h^j!XC^J*X*{&aP71Ptq_PHN?dvd#k)y5B4SbqL#9j^x&d^*zMMNOX2GWv} zPYRdY`$2Db%rjGEAs5#O-zMXRTa%J!x7WST<8_j_7p`+!B)l1TC%nBzy9&qWBoD?w zIzo6ex*M*!wMCwf$#tO`>P|Q5nwPj`H$1Xqnio8<5nn`Jt+Hqp)c>V~E#pzU6#Lz4 zhTj(uk9{al;x{#!LKtBubcN#P|IUd)*jfxkSR=ak)Dn{?=h`SJOha+CA_-YQr%nIG3^Y` zsF+rOPuR)ti^~|Sv2M+415OJ$K0iVDX&~6ipqZ=*^b)3lxOZwF)YLr$ad8K j_W;t7_e7FAwATIsky>1r&A@X@00000NkvXXu0mjfD#xGI diff --git a/assets/icons/Scenes/Food/food5_61x98.png b/assets/icons/Scenes/Food/food5_61x98.png deleted file mode 100644 index bab5324bd7b91a34a3556a7d47ea6fe3acd002aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmV-g1*Q6lP)k}o4RMNe?zrDVX2h-)z zfX5U1f%Jra6g{CIMN^?)e*FIUcQ#FfUSQwfUQY+S=vzl4)S71nrD}m51a_T(GsCw* zucEMLUE(c!dI94O>&$z)&5=pqXVvqZu81$^Gh4n4Z3Q4_1#fd?8sHhhTlci)t%fuv9a&uaIqgMgRy`|>l~zL5nN7>5 zwdHC>Zb-WwI^+X93)q6uuAxqKWND(-M~^73&U?5Jbfx3S5fyo#QP`2uj0%mSJnwA1 zi+FZap*?NwG5$=d=UIyaO1GY{DA%X@8XZ4lYF(%`h`(Y?*6Zc5C zD)kX@YEl9sWoVLAN0xOKyfY6%^BbNdNHhyG!_dm?d%)V+i|*~AfFpt|odJ%hx~if_ zDP-vkaK>U0aIH_I{ti0g#7yrFssgUbgBLB0bly40Y@1pc&!LIXh-1+P7d>lvo$6#F z^;}Cw8qWYrbt~XnutMcpI`clOPH;;bXvB$CymfTI9(Z=rca}zhv)&q!2acY{LkU_o zvA1PuYt~KZ>-FpBOZ-YMyR5ZLa7YPeT{`~;XKA9|A0 zl7OYUGd#K7nzE!J@2iENf;6W#>*&(=w6TW~OJ_X$ke2=8y_>;hXkiammbB-*_=>RV zf2cSKkoTSeEKMjstIakG;QN|R@L?@m>ZPq%+zU*kGPK=l&|-fm5AJ6=Xl+%j&(U+* z+EP{U`kxXr>qhHwQDAScXO;eQhR6W;DnNlLXlEL_hrV3Q<>f_VnfJp1?iOrmB=npG zEcH|I;CpCtIe>UnIuPx-Wwj`9hoGs7I4P;DHhCG~j_`C}^R}n0jw{kYDe&xU%Us@; z#jGz%cBY5yHb$hI~JOn={GM1mqq`3T?vf3u(6dhP}ylpTSkjP~7?ZSC*Kh_$JZ z?8gGkc;(HcPQ4>zj!cr}RjZaAldMZ6FK?-%TW}u*9>EZDmUTCMRIY%Lm^uPGCR&#& zmT-``d{Cgm~eX9;Yt$AipsxtH-uyX^> z4&MSjMPbkE;^mm$z<9zsdrY?^G70?5dY;o+ad$qux<5(0PGr{Q;hr zNwosT8;`d;#gR27WmE12$gw4<^9@Z18l9M1#p>h5XElB$g=3o5+DH{O7i-16^;smd zqYA~e6=VFF)X%dP1(e>qby+;*-k#f9MF+BI+J?5(o@bRlvZk9;*Xwdq-uBC5S`q?- zT1oO6bYoH7?HyUB)Z~`#0$&bYDJoXIM~4!bb<{)@Nkmdnqb0Yf%p)sOR$7awTo$~( ztyfFrY()wWK1R0K=sc%eW13cKUYp3Za~PYI*+3K88&E4Gw8dGAN7MywLeojS7js;l z^>jyg?B>@JnO0`r#+9xHt(CUxOq-zM~OKd&#cT;>cKHBFkRfBju_z zMs*d7WvBFNGi;E1YT6+KEJ zOJ{&H7K?yub0Yl@(2*o&W_M5(a7`Y(XlZ2f&P8U&)Y^CnO@u}gi?+DvSB3=M1R!7vxsCVh?`PZJ-~WHX;b))3rbufS*F_{= zEmOd^g;U5uLCI%3`0a{HpBKQ-SvA;d1 z?LWR}r$L8ezdR>cI3f#J(k^ToEsp=9jRWj$h6HTEt`xR?3|Lxh2AKEZC%`KC(2J6m z1T6Jkk;(1R6qkmwuU3Kz(vsS$qf3uzBZd)6XEOVc+qnC|6OW0}u~1Kcgx(n#sK3Rs$_ zlEIJA;L7OSUAL{{J2GNzD&+QK z0cNuDZc~@OBV&n7l9g4fmK}?%OC`IvG|{cNj{=Wi3AxI;yE!VafRUOy0y`F3mnwGQ zAa(hmK)0Vhj>Nexj-Z~9iz3AN@~L8(fh8-eW$aAx>2=q?I- zRu?ac=?#o0tTV@SSt3K=XVq(;o)LHFGh2QdS}Q=#3SO4TB)~I*m&UY|t9rfKEkL=QF(->3V8vnR4l5mZ`+^1-b-98K5*AuW!#?k|DvR*tN=^nR-^tzC13 zSzBF^^{tFcvM_CjCePdPknk@2;W4ejL}NO8qATC0tqM(R=PhHAS42W<*?C%WSFLi3 zj*(S4G@2L!&fc(~xDNMm}l~{4IYN>pdH@YrmU<@MO|6imMXwQF)bw&ZV@CpX-{pWA>IK z0a&ghpo&y2Ou9l*cw+fVuwGTT_S5#M3;3~A$8FE#= zcSk0#%_G|uNrk2Zcy2NHM73jJwZ$WSneI*NYz|MWGNg(MjlLhX%`BSf-VGcwB3qU; zu_{Y@@71VW?%i0Dy21bap4zu(T)Zkg)P0(}5wD5S)lWoH|6WOn)anb~k@3!8C)aCx z`}jR95*$Ri+|PhZ2N2H@SA|BMc_xE|+Dp}(_q^R$3`fAln9gQMK9H8#DMVy}5m>}H zY8g7?a!mo|nqA=NuHv$^rEDferKz_csrd1%X5b@!P4aTWfP0PFWJTd&Mc_){Y!Xw&Unc9KN>! zixTl5Z+;mL9NOteOU|d5RX=Ze^h&$Fvf|9!pybBRwC+-1h8Z za10G%c*doz7*sE=&yVCX)UB?!RP;!m{~X4j*9|Yv7S}>oBfdqa4+xzQ_#v|=m>qesP1J| zW0~j80IrtX(w@?D6)+lSCWDXARU za|P_FsUxs$p>?TZ2M$t~HwtwB^sy!Ob=cQp#ZOr@<|iij2-v@4m;R-^a+xS*{sUpV xYX4H6xj)sg5D$Rus{ii+q%H4(kUO>3{s3u&Zd=?KLCydG002ovPDHLkV1oG8va$dG diff --git a/assets/icons/Scenes/Food/food8_61x98.png b/assets/icons/Scenes/Food/food8_61x98.png deleted file mode 100644 index c75bf61704f435f42c14b05fd30783bfe638ea4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1390 zcmV-!1(EuRP)t42G4^%apxc=`qUQuJkt9G9hj?vfh#>1IZ7CZ6SO7i)&h%W zsp$TXmcGl%P)(Mbd;884ysd#` zqdu%WPg{Gmdf8B^3)-QFxRe4ygx3I86h4O>EytuYDQZOt8-gBrH#!L`I&06ekzG^R z()dIbSpaXD3QC351s;YTpaUK+fb@QFx+zXwQsL179tvbuaI#X2w`!t*-N7s!$f%{k zu%;K7TR`s^UL96@N8FRfQZ?s2Zv)xG5pZ!&XCovXNQ>+kBC^07Sj0GL z8Cr2UP=Kkb3mnZVE=ya=MpCXc_4XqbKc4n3OKZ~VVUH@{k}UWMIugXRA|azFxK{XR z&sj@*2JW^@SHGTiEVL(xNfXOjxeHt>RvX+E>9fnU>BxuP6eZ9e-DQdxBUs zT6={1@7m+L*KiqX?PX~KD)8<0|L1G`b}H-E+T5m7mIUrzaSXY&Lx+;>IC>X_A8nXL ziFlAVzDx%W?ewDtugAovlh*)6&vx+Ww03_z;SEu-=jjaa1jP0Gc!uA*{fu8f0(|P- z3w+mR-3RbCS z6Jd&i$ek^4?zsd^J!NHZi+y7d0jCCY0uSvLwh`R_of8AtV|5Tx7}e_F=371j%uO}} z%muO|qPY#tSU55U)lyae zeA>C6@uVfM7_WQtw6>+H;Pv0CCDx6$qr$+}Ue7B1>kN?zP%rQTW6;iH=nQ?ms_tb~ zW0~h*0C&r6X;1073YZ(G62WI^boCRt7_f?sF5nKimMRjYxc5qnmjUi5Pv@48J*^E~ zkpzl?SD&_2_tq??!+-(iCaeKwqVjH0m)?<)K*mXns#VLvBI{!D?#&JKDDI=c5G)~AS$8)^ z?rh2M$!10|t70`Ur`<&i1uf@lzJw^MwgM1NPt8t$!0ixl9xz|ADYW wy?-8nxIfmk5Kn*|>i?SvQp$TGagaV>z+zhxpZJ%PzI=ZC{A^E#*JmT# zzDYk3zDYj|mXLn=_2=u~Sy4`UBm4RB^R$FF{KyQZ+B`c^iWKQa$o36*1oCOp9hB_Z zO+4k(8!;ZR9>J&6feaBpJHGSu47fQzg65}5YX!*JiKhdZMDWbSOMF_2)@LO?P5Kd| zc1KAd({SYGcpII&=IJhEMOPLnib~2*zL=*DM?yxcIccM;^;4v~mZN2-G$t~iHb*nu zZb?PfQyGG!VLH|_bv_4o4{PHN^J&c#v%xOf;g#iSt3tEJ&XlsqLOiZf-cL)WY7x(@ z8ATasBnT(mKUbWxAiws`ci6kEXo|8nhMRw61IsmyFq@*Z`xz@)eu!X2XYF1^WJfsU z)Y2r>kM}?wanUrd61vI%`9ri~f zFw%6i1(mRzv?aWEj!F}ErL38jQF=ZiJk1PR3mQJT(V};x=(hym!OqeE`GQYCyvP*X`;lObQ@xm%kz;@fEKlITq**V;cx&=oDC71UgFNP$c$ zGg~lfSCyuovEI2%^X`+;CL_{bN*c(TX~wr*=G{Qf{Ct1g_1Dp8%+1s@p31`Kh(Ik) zxKNgvM;AxLy@xybzYHqd^!}oE|>rRe~q14%$l`TsO&UdLYR`=o+qX1)}(xalka2L z^@!y}EN(DwFX5r?y$U|m71pQlBbn`2B4sIMS*`UfZNYNOz#l2NB+c?t*J(ErCCCn}@}PYN$SK5vD>%G^Sa> z4MK3MfU4;ROq&w6gh%%!-|tp4d|se+^QHVQ6#xx~7E=f#?A9yPxcLH)=3kAlwHb)8 zMs_89+s6naVP^=VKz2klw@CvHR|G9Y7>!+#xAoZslXgX4sRRX(g4(J=MfPdMhdr8} ziR=xT{T988iDS~hhchN^1ut$9W}%bZ1lQLuRuD!T%5$|kXM*@Rl4#i@0J_(sutk{O z^OUi)*3T3z`ddq1KE!HKMx?KygQQQSo1d#PDF4(YwaII7+s-A S3fOx90000q9`aHJc&^7=1td0yIVa}1Ic?cdEa~A`#YZ>*x%mT z(MnNNyM90|5UGv(EyqA^)N#q5Y7iCruln78{nQlA`3FliCrJ!aT!N@7ejAHC5JYTI= zxoU(%{s=Du0C+*-C5a^#Y%t|wqsF>HSJQ(E1Jk!XY$KNrJsM>+iIWVWx}1aK<#H>I z-Jnq^QZv40c)Z97yyJw4Em;S+0RPZf)jB9nd5|x_08RQPX-K832`0t+f1uEiuu%^A zHtC8nt|D{NfiBk7Bt!mimTf6Q+_FqDnqVU!X0c{PHdq6QaaOEY5~xICGAx@-Kda$m zu}n0T%}8omPK%MTEwi zV~`(37zLxqqa}%x>D@!NYoTheC+yL3$}05j6VS@~$f1{ttk|m%0CGgrG6_|UiqVif zh^3+$0HP32r3D!Prh&CqDO>}q{S(U*GJH58e@#sDii}~Xt}FmKtgH}p$=>*6L9W}2 z!(_SE=KG6UyP%`0kc%vNlStx@`B8ZGAjsbR8eJ_u0IS3=UZhpuXojhk(0)ZVC<j3BBUm7b~2Zad_@_87bao;2jDQ|6nN%2+>R5c`Q)C0av zx&p>@WR5$~#W`JL$REzKEmcTZmMO-PY*dL`tXY-;3luTIie*bu%F(zCOJ>8*O88h; zOin6_uBYX+C}z`XDK6=vm`FskdMYlZ8`zv1VBngt5!)uQ>)6byST*BAfRSH7Xsj^? zeIp2?U<7%zBylpmZP0ctR0+0Md$g3Y4t@I=w7Puc(6u6~_6h_NT}o0GR-+ z6eW2m>3BAsN+txRj%~_d4-@$_Qod*@~t#9 zMV2el*Hg$YE-n)F;H$SMi8!0nQ-yHu`-lB4FNNl8|Cis1PpMY+Zu9i5p~sireBHBg zA@-}-?SG8Uwq-gl|L8HVoVo<Q}X*BJB@6L!5QQ>vxP-=N{ghc{gC6KQhfapHCc_ zJMJI4{&j7{=)XPlbHlZDr?<51IP?71@7{eAk*ny;#mbkt`5PAwFEl+(Zdenco;+$g T6x10%u6t1X50W9t_d5lZ4$eVmH&&?l0Gyr^79Cl z8)MK@LKp=l5PNZt& zBYL}@5+zxcL@_CfbRBEWQn+cX!2c7=5i(pjA%9IwbCnY#)vqS(c}5*>(8&^&3C~f{n@EsJ8xcmy6^hsvEkC=hvP?D zTd a1w6HAantdkrN_q!Cn}Tb)+Z9X_WcG3yK*N0 diff --git a/assets/icons/Scenes/Swimming/black_downleft2_73x61.png b/assets/icons/Scenes/Swimming/black_downleft2_73x61.png deleted file mode 100644 index ae70f9c82e4f3f79a258a3290e7c66430a89dfd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1149 zcmaJ=U1$_n6rK>8N?NTT1@)m$Cy7LHes?mP88VgKomn%IN!NA7eevh+%-!se%-reB zO?Q$)DS;AvCWd%>#yiPw+K1GEnRD)) z^PTgZzf+~r1Dm^dc2g9!*%~&=L|Ww4H+7Ql-(M`LMC`z36(2@*+yoJ%axSVt+Va5| zEJNTRycum1VN#*D(8Y4aB8)Ev?NF(FUY(ovx1;yR85xY*29o+kz3cwMzIx) zoOGsvaj5Zpv)SaD84g8byr`-wFG##3vBZLnrveNTHi&!L9t;>ekr!eQ1$62W)X*f> z8A5d}2S2p!b;m*6suZaipMa1TIf3{6G_h6d7?ZhkwY3%?`eZc z@je_VH6(1buOp9i1xy&one<_REkkF>AI|k$O~|^gBMuC*8C7vvr!E5)sA85C>#n5M zGl~prPTS8$csZ|_1tD8B@^W4j&AghG1=TEyIWa$|WQtN7YXva|fdkvIJrcWxH9v^e z3K0YtMHPf5+G9{^AdKP$3Ta8=WV-*T7r3Yy?@4>Kma+jO?_1~=BjnSoMb^9x2#89? zFteg)4CKv}d~UE<9Lx%mV&v3}Iv_JGth+(sT3G3Su{xE-im5wgz%3qyNZhXAuAt6Xv=BRNwe{$wMhp=^* diff --git a/assets/icons/Scenes/Swimming/black_downleft3_73x61.png b/assets/icons/Scenes/Swimming/black_downleft3_73x61.png deleted file mode 100644 index d72550472600b711395f541e1a066f1899c0e431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmaJ=O=#0#7>*8P3`J06xP!zD!431(31J3Y(=lK1_-ywCeS@85K$ z@8rIwmL`HA_N98XES4$!Dvb^J`|ijC35&xhkw*ith|0PLh?ofrfK1u?5Xb`EoEUo! zItij-)XL>iKHV!D&}Q_&hN;*tMiWG5cg59>5rD`77_uCN`ts;8MOvmp4TjTP+Kq!@ zt7p;!1CxC@V{*ihOscz!?5xPxfenyOR_sy7mn#aj;aA3baLrQWh6x%`s7+G&bcT#W z50DXtqYaLWkWq;-^@45`3MWW`6L^*rSze?$P7X=3D3Y~@!r?r#C}*`~Ef_v2)G$J> z%(CTjnJI@D=nb*FBuOkMu!2Bi3)-J>kY1r3zqRf`1HR!|F0!CQ1|IbSEFp!$R5x?5 z-E?}(vE$b&g=@xEbeH8Bj+gkg%2^X+g;KPz<;D!`i>tI~GodX4i zn2p@;S-30us0NLa4IGrx6bk=gOv{wHsA(E}xPuN!5tBBGqE71)AEo)CDM-aoL<9w+ z?q@r^C?+K}qzRfTsyv@iRVf)w#5>e@G^WLqT&RvsIX==I1Jq+%ICc%o?}(M-9?%i= zauANz#~?Ed5%hed3_!`2D`2k(uC z7o>l7e-$s+o=k5pvA({J)iY1uUcjQ7(qg&F`?cj*(-U&9_U6Se_QQOp{ra=su~2os zD|aW^v3k?kH4|%TQl@)v$1kQEN>^U4Eb~+S;l}A}r{|8&d#0eL41H>2>+z z)Y9iu>+Gik3-Ya%s_eJqR=ei-Lu)@5Z?vBs`F*)+UhS|xg Q)r_eSsYIW4Up;^64^_)?lK=n! diff --git a/assets/icons/Scenes/Swimming/black_downright1_73x61.png b/assets/icons/Scenes/Swimming/black_downright1_73x61.png deleted file mode 100644 index f3259ff700701ffa16ce42e079b0f0ac844ea6e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmaJ=O=#>?6b`LaUui|qN2`Lw)SuU<`JK#U5+;_+B=ee~Q^)DlR;g$vxzh=4a$|Dq zOsfo1q*6D9>MNB8Z}Ffju?tasEc~j&Quq*f#jTfbG~!F z^S4?Wzt!LSL@z-Q{pP4%#?r*E`cOCi9zOM@jK$-~m_`$@h8k7~2+e_2K$@O43(CN9 z7T?|j8G`7ZcPrCqx;UoT&||FFhG}{MMiWG4q#0QD96)3h%(}ix{q@ba6zMuDHI*!K z#UKaj?&wkoCYHu4_R^d!JJiTaWTvTL2OdBc+4Sc9NNK9nnO_C#@ij}4XC`P)rOruB z7fWOghJZ{l9Bp%4ij-u=v8t9`t-eSKoWQf3$nql1aY{l~M3HPi6b=_UHKnZQ+rjWj zrRoR;3d=Sc4W^M`U^vV2vMjTlzzPD5E$C>`M^=;eqoIxm9Yl8M2FQgz8GE#_l zrh1-(7Zi&Zj{T@zDO@wQX$36LaIELWiJe(Ts0{w4ajA7wSquPM1`%8cZQPLBPzQ{Q zcXgoH5VKKU4qe<8YhH);f(LwL>MDi*Fpldeoa8t*pG?yUIpxrHO|)oB<|Uf1If7hE zq(o4)JAN+1CyaDD$@3{aD`t7#$ZAPL${LAOo=a*%UXnUk(~pql+n^KM#j)Gi|4wK0OQngKL7v# diff --git a/assets/icons/Scenes/Swimming/black_downright2_73x61.png b/assets/icons/Scenes/Swimming/black_downright2_73x61.png deleted file mode 100644 index 72817ec57839236ead6ea8fbf955416c72134523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1147 zcmaJ=TZq(F7>=%ripmy2P^b-Av=+^EGM9u+m&qjC9ogBPotf$g1$!pv%ud`*PMVx` zX7{0#f?(;B7ZALlwj!es+J}9rV2cP=&<7DK_~4V$7QDO&J_xQSyE9uKRs+fZpOgRl z|L?#3R2=zg{n{;S8HQP(AF@hR=ILv!?xEkmx6W!*Y$kS6vsZRZ=Ys>kjq=5ZeeXFQ90K=^tnXz?ndVt)X$(H@KJA{@_>_8rwejt04bFWLTx}Qi@G$0t7YS)M~p}MN(u@Qbk$iB}q?cx~j6Bhoj*_Sl3I|U?&(o z8C-*qKo`Ykvneza0uIMTS<^I8Qba}JsRbWR`vkOjKkDmxuu$ZLZa`e@v$01|!&AiI zDAk1=yr586bnHi+O3|8$Ef9#ZAc>wACpK>#krMi!#*)@iWja7&2}O7+bZA5BeO)ju z-p2#QhLnvy8oIPAVA8_Ql!tthw+xQ{5ugioDGi|`Co_CPOF`bLtAGcZoaW^^RJ3{` zrJ|bC^|KT{k(M;oOj(wxnzC%0SzETOtV-{4i9tCdcd>atBEWZ0H?~V-cd)sSV)a~z z0Ks7eZbo0kJz7ZFLZN#Q!NCxF?0k`RcL@TrX4?rh zV_Qi%6_d}{X)}{dB{I2;YMPSCb+B-W!ga8NAH<53j2KVIdlS>WqGK4Viwi&xiz|eD zx;G(R5OK}$KDu11io+FqZf=gMU*EX@Jr&3DR<_c5^z31F!w>8_>)zWp`ybux?OT?9 z-q@+{+#{Yl1n<0kvNE%0ti7i9*K_-NFZ^3BD&?_@zpU7}?db654=%Ka#*UmE{r%@N zW7j_&d2#mjZ++X293JXi&2TYjvGn@T*ZhxfWQkU_!=pc9GO@u^;4dgg}ND zIY$&TAgl7OU9p`?Wfzb{2@0YjK!p=UO;$BU0nLY{;Uc%HmCT-IFnZG2Q9?pZ5Nfp= zUz2$pjR;UxRY8;lN#dvl7f%Mnu5&@Wt>wW)u@iYA@o)eVk9Gx55S^t|7jy8#VsXiF z5H~ADYbMm~P=LHB_f}!h=dY~@kHd%hE%t;z_fV(50n^EHrj#6 zqg}DbP3%ngC?Ew>XXzi_^;}KNx~>D$ot&&@T+XQ~HfO6a%fYHEsZ}|npo-J-vm9O) zWz~dP#WWNHLd(d(T&D_qdZ1;BFmISGY$1q=9XO~J+oQ3YSoyzLEgvD9;HZr8cxw#$ zM=`O>F+3Sb>rek_q{1Vp>;p3=?%}0q9|Ag-}5ECZY?nS??R9 z%eAV1f7xm@8dN>_X#NBhCktk-Tz~WR)x*>&u)%t9ztNcgcDff`nLP7+?(NshYdbz% ziMvzNIX1QN$-Xz2R}Q}X`C)pdeS6`@&0ZKt*Ma{2%fPjdp9ki@?VNdZH`SO8*OT(& z3sX5Gim1&vGKmi!{e6VObGHa^sp0cKYSsbDfQ|fTO;N8&YhmgK_cxAE;`G z*(klfjk{tD>(Cr^fQwSPO5s0@Wm^gtwJej5bkbp2vS_m?8nhwvQJODWf?NzsA}E-3 zKU?92NIWj`nx@CZ7|$nS8Xpa7iMY;dNlgmJ;&p7w4UplQpdQ=Cu{W^tf3Zs32L^(E z4#MI37-UKi!Jq^^QVG)=NHVEM zVnU64q7!Q|i5EF8%yXFhI@a2va5b#NasR}!m<(H;kiRCTeuc-ds%|a-K5VWKaPi*w zctIYt%Qx_HZO?S)5^HN~SnYrQ?kpA)DP7A|mcK4(p;@w7e>=a*eq=6OUp(Rbidn@w zmv>BD-Seq);mS1;MH?QiOogs5-a7bsTVnN)+^A+RCI_Zx`eEk9llJDjefgXBC)-w6 zmwSWhpUNvc+4KpHAi5~r4Y~cKFP6~CM diff --git a/assets/icons/Scenes/Swimming/black_downup2_73x61.png b/assets/icons/Scenes/Swimming/black_downup2_73x61.png deleted file mode 100644 index 1a60a8c020fcec6a72e611285505eb3ddb798eab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmaJ=-D}fO6puK@*eEDC&><2tLe7(b(UIPQAE?^b`5KCV{&J^JBBUToO5r^@0{QHI+q{c9qS$F zr6?+v-2)0lX34AftR~-uP4`qHHsEv#??V+_Hv>o|ZB&MI)-@+#0h;#Au@`WJqE^?O zVhNXWW159r&WvohhU*hFMU9L$eAAkOm@dOf$J3cFkDf5JW9!UBJSXJ*6s$UXW&^ly zcD!iKPFbqWjP9aG8X9rnLTu6vx8{XfLuXokHKIq?JVUok@RZIhkt*f#bP5HKPH+Ni z2||J%QaRf!n^w8JgO&tI5S=AJUZa)kO7uXf805a`h-9QU zmpK$n@}jD$ydd$C#1acOobj;PV7+j#;{m|X3LGCh$fF~VW*JRmogq}0a&Y}zZrQOH zwkt(y#y3o#7de4<-6*k^b%+b_4~-SA!{Uq&`2q~lbYPK&R0ca>QoR2MiVO)GZExU^ zu9!7|tZ5f|I16-!{NZfJ)`TJ3w#4`_E2{~cwJM6qnyNU&iWOT@D{?}CWvk<7CA^qO z0YL(BU?_$trVUk0s2QND8QG9CASHINSuezj#j$wXWp zj)UQJ+DMT+1g4F(S14Q?Yy1<-6Eb`>A%9Iw=ZcJBq%JQ2IV`Ub^vK=>WI?{2A9zTX zt2;kdOgEcNqV9kGW{!wz79@*}w~GtO-jl+bu4mVpCk}S$J!>z0xcdJ4x-(~TmHGL( zBd@mIx_{xac3?~2$BS2P2|YLNe(FEFuyJ$u`$JFf@A#~4jdh=TeRPf3_v0tNe*5do pSg@E|fAaw!Gk*4q^1F9k>#2cXs~*oC-g%qEq_XL8aK|`$`Zw0BW8nY* diff --git a/assets/icons/Scenes/Swimming/black_downup3_73x61.png b/assets/icons/Scenes/Swimming/black_downup3_73x61.png deleted file mode 100644 index c3b3f5213f1a44229f38e884b69cff105ceb6cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1107 zcmaJ=PiWIn7>^E%8=Hrr2SrB61Xo%9Hffu`%lflkqr}6RjDSaVm3!6p$Et) z!_fxEMah`Vn0iS!N~J+k-~^uKM3xt6j#DDCB8p_|p>R0QEGu~}-3o?RDpf(qRamxG zt1-0*1HD<6mt~pd1Xd7eY(e`A4$|wiW`kV%hc^fz=qp1`=VNA)UtEF!nD8OKMuV}N#SD~R31io0T!qz7~ay#j=D z?Ka3&AcB4cx}+d5A~`T)IVP<6;h;v%D{H{BE&?;{L7QwOS+RB?kdE`oxRlg1DIo;p z<1t>4xnmn|<7cPG ztK7b%zWiZ q_Q#i=N8#$dyGu`R-&$Mg+Y=&=-`KnK+3o&~!xEX)r1mgz{^}nZ1z-;V diff --git a/assets/icons/Scenes/Swimming/black_left1_73x61.png b/assets/icons/Scenes/Swimming/black_left1_73x61.png deleted file mode 100644 index a2053ac240780714b76be1f76f78dd8a56a4dbc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmaJ=O=#3W6b@F3mKJ&t{DDf0ht{7YlWe-X35_M$WOcP$m+flzplCLkZ9_Mim`vSm z4?TDgMMXgo@#MvWhzch}PM^>Y*A)-kZt$-uvF)+1%*f zo~|uj6h-x9_8EC1Gvrm*b&&7U*84IMo3UBMW2lU)RtPE0K_y6MJZl2xq2{PQ-}i(VvDYM6+cpHD%0?*5WRlQGjziQPpM3kR56>QQz(RV zoCB;4K%7p&!;o;HQ&#dux)qF^RAv(6K;ijn zwaQgv9116RL6&76h`cDW#Da}xd~DTNKib~*V8F-@-2l7Dr|TZA5}L*;L#Q@$@Pcf1 z#jzi?Dn)9>*Q|gSIKX>eJ+X#$g!AwZja99q!b|}9JdDtEXp@GNx3|Hhc>fPnHzaJ7 zgP}{hVpR-ePkYeE8AD~rAI@}EJvf{2n03-#FP6E*w)XfI@ zL`>5J(F8y?k{~h2w6M-fligZdRg0e^RnK*<5uV4zNsT; zJ|E@2_1~Mjuz%v`qxh!EorJpi;ji1t4|DIfJ)?Gh>{!Uormm6bRK^@N?&`-+{RX<~ BWrP3# diff --git a/assets/icons/Scenes/Swimming/black_left2_73x61.png b/assets/icons/Scenes/Swimming/black_left2_73x61.png deleted file mode 100644 index 0871f502e725e7a9a5ce9e527e64131c77ea4c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmaJ=OK8+k6b%$aidAr-D5B5kLec!wnMrKaWHO_pP94Tk2SMnY0aK= zFicNjyIrQTKwo2i7yVAGysc5OjO40h53Z9Yj1XhGxQ0N%hl8k$pgVf#G3sNOu3@iI zCDr0C-N8N&6C1wehZM~)eOp=~bcPTCH8ki22K)KWJr;Pb!S3%Zip4OC8s7G?2<;i` zuQ+2vj^?skHiN#FP96A&K+y7sgII4F?6hB<>dCdhf@u>nWUw=&s>Kq>;s}8hFLI73 zra)TbU08!ot+o-!qAUrbDo83Pin^ldstVcLVmuN#v?2919WX84{{tn4l#RYS@@QA! zu#KG&9|fdf8!Y|9yPm6yY1eh6-VCQ`DVKBVD&(Lhr8%kY%357Xsi@|3{LF>Vr+d?u znNn;^H6*}RsO(j9CehzSfF)QRoU*ln!*U#y;u5F|LNU_9IzgHi(% z95-+XWSLjNy8T|@;%2-)>CsHeHj2E%$jwLC2h&B?y}1bFw49i+vUaa!C*(~lqh^(~ zDQ6^0G9`^|W8FClm!HAf|HKNEjF3#oUlY^0qGOn-vkO2EvnzxGx;GJBkkwz#UZcx3 zue7U@o0^)U>fQ%0k5Ca8Y_rmO{o$3=eRS&r`}wn z-C5lC@cWYY&tCp|($nAFSae~-r1tLar^N%z(*<464=!EA((p_n*Kgmn29Ey*j|ph0 diff --git a/assets/icons/Scenes/Swimming/black_left3_73x61.png b/assets/icons/Scenes/Swimming/black_left3_73x61.png deleted file mode 100644 index 770b9d58b3ddec8b43e2f5d8ede44f9b08934fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmaJ=PfXKL7;l_^Q9PL#J(#9w0*U>*GS*5V>)wzl!!c&yqOoh=ptAPW_Q3`w#-K65 zi;;^&FCM%Y5@UkKgD7e|$c2L%j2=9CFrta^!a?yBHuQitX}|Bie!uVgeg7u1-AC)| z_SaDqRiEwzIU>{K)wV~-ck#djg@}DP)sK5o5tj`gQV9zcAf0xM0hoh^HF|Cywo+82 zWas;Ff2K<{k;56G4OekIf~Kg}_KIhiLlDyiIAFUP^X>5*L)(_d^fhOMjF*IicITK6 zd&j!-=Gc&_SWJ5x-C9wJ0|#P*t~ez(P%9d<>Q^Otc+E5PstF#_m^D)UnJk?|KBQxu zz?y;(qgxctG75%SC>*9GK@xdE=0%wm1U0ItvP@SWhJ^F2qM8F8)nMeLF@qR;D$ke8 zWv(3MkUzkSilXp>#7h!OEZAVw#YTm7gNB+100YyvJ!~VF4m}zLG>kQdP+iNx@iLip z$8J!q6sZ|sF+5)61m1DN#8#~XoP&R8Y-k_V{XbA>NZ6<+ ze4BK|C;?;+JJ7{xpfThRXW5o2v{;rYHpkhh60=ydC>yMyh%KyGv?Qe%jmfZJ*8FUQ z2l1Gc1cCx|IU$NEJ)TOo=*?18(FLG`q+G+M-2fY|32U)!61$3x{}-z!eQ03h=MgH^ z#vnV0FbW2dM@teX(~W($YoT(`6!vH>WdMD91X>+Fa_H3}tMI-;qVn2HLZSqC9` zMb{M&i%T7XoK*CL#8k1?28F9)#eZUXLWU0~u(*!!QH+DXTB0*Yps@rgJ9&H^HA70tW8$-TV)J;%DxssX4wh37kMHVGhlvQ4mj4|C%RkrhRG+YR4M#;)`g3*)7 z)d>jQfhY@-=y|Qg+SU;%p|>=8T1ScC!OS=LZ7Iqdr8!437T3YT9);^*_5a0+l#JM#kpE0f_lk~TOWj@ode~ke4JQG@5V25x%!GnD)#2)CRIOs@c0ZBU+1k%CH`~cj~@qrV0S0hUu~XU{`v1`A002O zKf3wC{&sk$arNm}@I<5X@65C_S}B}c{dE5~&ImM5xIewGmx>o}4VFtA!NcDk>_Wnw z)i2hD4%h1gU-H+^m)F4Or=OFf%wOK#@8ZkX!b^K*rXKaJuhfqHUi|Z*ltb34(nkWzHl&ufJEY!{Mkyo&r zqMAxpZV(TqdlUoNoL;rzDz;0|6xF@E;_5~bVmc3pEJtM)p3X6}Wva}c;|I2^Y2 zO?a?>qBmzu6b;#AcJHFQD++O7L#)#kyX5#vMP+J!6{1(Kd4{f;;G)Vbks3^A=s5Bq z9pV6M01%?XGH2>}-N@&=Xc3444?%B8 zE|-e1w4;u6h&vLPa9J=aJ&!bVSGKA_<4z`<4 zFFSVpdZkFs_=@iG0ta~8t|nHq_Hh>erLm&5pBr}}pM^de^$gOGLT3X^inn^8sv%*c z^m!KPieA!?F=|5xr!l@J6%aN}LkLFLfE+Seqaf+5E(>8+D43#L2!te*cORh$4aYWmAD6WjJzB| zrN$U!h7m^oFmh>8m~>l}QQWp(Insnky8pjurolc zKX*+(ym<9UZsGdN_Pga!GymjE+m_8^JHO6EUiW%lckkuxT!KSs@x%B8!=1oQwI zW;oj5xG))!8B@>eMn2z43Y@^RoW$}H&2fq-E0RQ39}0)_%z~29+N;6vDMl3$aut>> zm&;69WT4l_^0F+moWKeKjV)+@&_Q~IcKp>f4;t_d&vKCk9WwB!=ivZ~QJCs%4z`<4 z&pCGdYNc?^*oyA5Jj1cJ9V9km?V}9%OJiPZKRf6GHUoS(;2F3fh1E4MF5bd{0z=G3 z+3H!iD|$(T#()hRl+t1p{==A-sc;d~H26@I7Ui%>8wE+Hb(xRQe8Cjtf*6)S-l+MR z4gB3&pj7 zyqb{Is2CC=iDbK^CgW5UYtB=+Dpve2mc?Y)U_$iP>@$iB) zE)$3GaxLlFl1)xePh)laqsjePjHWa-TY3HU<;R8t+|tFp-+%8`Mjjq19&hSC^Q(E} z$K@NJHRas%_rwMD?o`{wV~3hgU2vP~&p*Dz-9MTcZ@4*jajLnsrGEM8+v6=`*Is?N z(s*j$$ePYC-iceeU8R$tCptVe`7^ZR+w_gcIe$WavhnQUw{Ko_eA>D8`nE?Wo=(2| evg%mJfkniXvAU~$6E6laDI%5Z)W+kz2mb(i+j^=1 diff --git a/assets/icons/Scenes/Swimming/black_leftup2_73x61.png b/assets/icons/Scenes/Swimming/black_leftup2_73x61.png deleted file mode 100644 index e61961164eff98da3bcb51a7684174c7308e74d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmaJ=PiWIn7>`WFIW|;Oa0dyQj1A1+rdyM(YTBeO&d#l?YzGn3w^HbfK!=Sc*?+XThiKo8qgL`0Y%dJsH#RGcqcJ3UMT$@jgN@ArMb@84v9-{Hos z&07hAXw-Yu9F{tMlUwTW_s!nN5*B-qHjD;g5mgKy5Q+s0fYcph1mu8Wjh~qV-2_or zw)4YiID1q!p~D!F4HG&ZMiWH$!O%0zQGmz-7_r?X^= zsW6oo1N{+}mn4bh1Xd7eY(WR(E;2&e4O(g*R1lcH?I9bwWaQB(z%i7hFxAx@950() zbLTZAx*95iLHjZ7zD*wgGX&)E}`gsV; zwK3=~K?H*m^hiNqM6zwjb}d*5+M^z=rmOlAJkD{}wDvX~4TO~_vpQ@g@r7^!OufDdac1YEo~K3On$8QEHOO-|i-MExXOGUF_CnyV{}$o6XF2Lz_&ROx4}ypX@gTj46oekcLlsf5qKKe~6bs@_X`QsY)k8Iqyf>5gz4yJpONHJ8 z8(X)vG7PgZ*KHQ5%+WWwzJ-2YZ=cku*h(@3qz_j}%?c2cg1C&>oNEoCBC_E4=u_0e zFfAiaX@Csmdkh=9f)&{ab=Rk8hUw_6`<6Y72wO%&j+f--A5C$r1Cw08mIryi3ss%& zi2(IY^p@<2VOxh>=YF=MZcqmRuw6Jn zY)k;W4M2>I>jJdOmR&CIWn~~sB2Yz1>BH&<1lyqGefh@{0Pc8Ux+#^<<_re`b4<-uj!10NLJvQ=amGKx!a+KL?Mx|)Y#Jc5+k^n^4jS^e34oMOHp|PrUSQ__{SVSQn3vAku%8n+O7VrOoB16i? zI21UvE7pjK?J*a5Bxfc$`bU5cG(a3eThbD|qQ@X_S5%9)bSchD6)5W!C8naX-So2> zUIrOek(IQWR#TFcNv9HNEfLq!rj*dSw1nBj=Dd(to{gHZ9U8lVP5l>ZbOp#FI4EH} z(j0?A6%!m*vCqn~pt8IB9S`DKxF_n-a>^zOoD&FU1MIR(MK+vO2!Obpm2@R*YLXU_ z*G(m!)-_cI*+eW2B(8yls}?T8s^Fhkk&+Rk3HfVcnpboTBXwl~=wW4rkVp3>pbPSA zc(ju)*SbPaDYLk^NY%qnUY?`^=gd^8K0Eg+)p{CiFkdYEJU)Bl<1Tmeg(7@^^yFGs zK7aG3v*zKZYg?|Ix|?X9K6kfx@#>wg_lwu>8KbT0&WX~k+T|H|d*4{eIktPe@Z;V0 zsfD>SvyZ>ce3^b0uN;{?*dDgMiN%z+pEnOOZ68{m&o6*aG&GaT^qLRSgJ*vO+zV>- diff --git a/assets/icons/Scenes/Swimming/black_right2_73x61.png b/assets/icons/Scenes/Swimming/black_right2_73x61.png deleted file mode 100644 index 07077e5399e6a6890e838231fd32dc6df051484b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmaJ=O=#3W6b=+riaiJ-=s|`QLB;%THrMNoL#7CKHpXyX`^5 zn+H#>o)q*TdJqv5RKy>OKPV!KC@QEodr-RhwlNZy;t``-KB-?5>=tzDgK zIysK(D)pNcCQIziF6&_5*K4mqCRS5xnC>JsT1OG)axSqkDEVjvS1@uX4?f1d9M>`K zRfp+tdBAXpFQUXoZ1^EVb6jsJ&&~3C(q*|E7VxOoKNaDf zQ-f7!YRrKy-?s(yHVo###}t8vKOV$JBg@bEHJF}UOFWn}p<`Kop44!82oy+!fiB8| zBg;DIfuf6Sc_H;k01}VLCKEKvGph4B_+h!c;5dj| zm0~rM8Yq+$QI>o^No>wKrWO2$#-i47buz?K1;=C}a#%xZ-EA-{-v0w7hK!A|J@Qyr z(6~vQ2_FZvWM+BxM|3^ckb7L$QPLS91$9?&Y8ny{RC)xZ=Bluk(lu;5Z9j|Q6)m62 zK&@crwVa|@`5a7J1zFFeEVW0o@>&~P3Sx=^2e)H;EOrZ<|1Z`kL>N&LRS6kykHOF= zp(Gw9Ay8FO1MByAflKP~hNMUHDVsR*4q>+#5g*JI+3*%2khh=;i$!Rr6)hnTWgWt_ zo`I>HtjKxDx3KOag==AR|HMj+jFe2sUlY^5Vq=)73k$#w3oC>Jwl@)5ko(J5=xn)` z3=LGR+1Xj9?wWpin2E`fnX5M5eR-AZya$$>FP{FC-k*GMbX%pb^5n<)=JhLUx=+W? zto~{6u=4pr^U(UT-Q>>?G*3LQ9*>Hr^y#xp*X?ND>F?V8aqrdr`!1}Sxm4V-^xLnM zH(tN}eCEx?A8&G>R%J??HyoKc_i^7R^you<=Je+0>+W&4H+H=EZU;9R39e)fnwRqj Gj{XM3ZE=SH diff --git a/assets/icons/Scenes/Swimming/black_right3_73x61.png b/assets/icons/Scenes/Swimming/black_right3_73x61.png deleted file mode 100644 index 8f9bdeb27befcb8c42314ae3009bf5aa8206c636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmaJ=PiWIn7>`be4*Y|N|3C>D$cE-`({u^zM%%2eW1XeeZLouTOS5r;!$d((qM{c;ksU;l`r5VA!!(e5-+TFf-}n3eozL_g z*wD1AiK3_tsct<>WQx4ebq(bEYR`;H#7^8bh!3FxE&&fxF%#t>owC6Q%tByJ9D4@a zDXL-2$_?VdbgyP0n*$XaF0fsKrl|JLzy-!A#B?5xSWcAr@^Fr!Ei=jtgwsOWO~9hn zJ?X(ilYKd3a@0^wrn7@?4>aPyh8WO+J?8jY5M`=F!7`qzJ zmr5nB6ylIK!i%b^@`A)m5=$&tf5O2aU>(1??m>sX;aM)WkV98If;<|>QHD@m%E5Ni z>1D@`U#k?U86N%GkanB$PDKyu?q@WQ^O;!6`k;kUyMhnVJwWO+yT~u_0A4S)(8W7N}x`6$_@M7D9>)^G4mz zO88_nl6k8P3IHLUbstd{T~z{txX zG*%yjOc7z^7m-U#5+~Cw1D0c=lHXeC(NfAf^sM91OnS(st3}qV6$r#aVO^Hm1U)Ru zRq~3MXlsill&~U5vZOFIthqwrYFP1~Se}sKD--h9#MH0I7*^Ef1t5pz6@m`g8;>l= z>~*`DELUTuH`i4zmx+4#>5G#@oJi@hT=3@eOL5C7dh?ptr}8c3eoN1X;ep#XcMPq5 zJH7AD)hm(5jo?Y3^`!e>-hC}i9{s-R>#w1yYumToi?M6>HuY}p?7r}(=iSC5&mX)O zimw)rpIf+mc(%;UnCzotKj(j(VS+UbxhN&Bu8opgTyZDjN Npi*6Z`gDBw^lz|1ZGiv) diff --git a/assets/icons/Scenes/Swimming/black_rightdown1_73x61.png b/assets/icons/Scenes/Swimming/black_rightdown1_73x61.png deleted file mode 100644 index ea0dcb6c2860694024b81b9455a8b166d8eeb902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmaJ=PiWIn7|)o930z3XeBXQT`+eW7gY-5_v)9MVS=@Ev9O+OgA5fg!8ScRy10u)&y%LCCs6XUl^D1Jk!XY$KPBJc0@u#VLkRUAlwg6$;Ca z-JqE%k~2O89xrkN?>N!L7OewZgnwwPXdRTsJjfSefJS|j6r|eO0+ZzZKTu>y*l2rw zn^XnV3}lWv(8YNp#gG%uvMo(WSe7Zqd)b((Sgcu<0SiYtVKrR1daAHCno|0e$;8v~oUj=*1*!_6h_PBc>-3@vIRS<%qnh zEAg};^vaoZLXi}SX=1Gv64%7${)y!Y89wTezdEM1McOb@mj{3>mPZJ>WNv&iAfK;I z>twiA59}#r8;u504?KT;l8DoJBV7tVF1*{f;o17Nt6qNkb@yzH@!)?Cq!2=B`UqQ~IekYIJLR Tt*34N0^vjDv;D@s%#n%TZTWSu diff --git a/assets/icons/Scenes/Swimming/black_rightdown2_73x61.png b/assets/icons/Scenes/Swimming/black_rightdown2_73x61.png deleted file mode 100644 index 08385abfb63cb8fdccf746479272ef89c3056d97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 zcmaJ=U1$_n6ds6(C@JEL){0EWL|W|p?#%AqF_XBvGwH5mV_a8UA4F$o?(PoB%pGTL z+}VW|+tQXiwU#IpN^%nAaiO2$ZwH-a=yL50K5b+^4D)3Xo?ybihR==hnTLyy5nig%C8Fy?bsS~ zMkxwKKL;C5z8%0*?a{K;9=Cwa3=Pr)kxCr65Sw)5PI#djY0SD`mFV#`&(P~8cwA#P zNL7ksbPffOPI3Zk2||)i0nRq7rd6$eMoWSu@`B8ZGAjsb0;sY~cOHg>3+$R&(uX_2 z$Vp=w82c*EH=9kancz@R=S2VjFG##3vBZK6TOKwe)(a1HJ?JpB0>{S=^61#3Sw)jr zV+hra99+Lx+;r@Pol23K@sa8CA}8>!8z;7I9pVyvLt{(pu-x(?UxFc;3@p-++MzC( z6z~0kVnf14JrOvhE9QibtVtJoxS(qc`NP?ctqLjIwnQb(CP30=t(t7ICJ0n@Jgpp=9)wqGuCn19Y(kFT|#2!ES7a#O`3z@5QRQ z0Gb#DWrQZWV=&f07=;bw(~`u=^e1N=&qmGg)3`?)DeEwBE{wThKG*=%0U=#1AghyY;_cuP)3#c#v(p zLi>Kc_7vuRn>)R*t1joS&-ERcI(qG8aq*|QzDK{bf1H`tujH@fTPwE;dp z{K)M;zk6~2-pTe4t?B-+81WA&KYje0`Tu50%a5aF@9t{->cOVf4 f*{ckux9y|O9_~4o|6+2M5TXjksD3AV;p_ha0c&&} diff --git a/assets/icons/Scenes/Swimming/black_rightleft1_73x61.png b/assets/icons/Scenes/Swimming/black_rightleft1_73x61.png deleted file mode 100644 index b49c3d428e86a3de6b1953b3d48b4190a4e9959c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmaJ=O-K}B7#EI=Z0!a^n2cb)lqJ+^Us4hZvs0bnZMt7})IWY6S-#72`zR&wNneDsK z+;pUgAc*F4x0b^)jbCMdBmS-)eJ)|qiu3}y1WTx5_<&F?SOjF+F$O^n7}nUeSD=$1 z8i(zC0TnX6vI!l=2yK|E<6$&Gbaque!yE#LEP_GXRj4oXFDcTt6skXx;WAzllvw@PwOOVxtmlR}jd@?@5+ zR4PoRgMt1a%S)2Pasn#|G`66FF&7zC+6~(39yAb`zU?6!x@73lD8dn>P?+j=4vv?} z>^OFVTBUH!*s9^NJj1b$6DGE09iSZeOJi5-AV1~-HU|PY;+wc3rM5a47jN%Cp&@1? zU-WI<6=PU~=74T30^q~W3IP}IjgJ?k zXZ%|WUao!F-n_oKxrx=w3(FH&xM@wzSJ&28)Rr6MLG8`&je#|K@@cm9{M4_Z>*}Ku z3)1KN@w@7orqGm`yItn^(?0oO(Mq^Zw+B)uTL< wS3f;occ!WDi_2dh%#Qw;Sf2}CzZj?-;D`;sLHv31-3pFOr1d`SN#g3QKeqF1od5s; diff --git a/assets/icons/Scenes/Swimming/black_rightleft2_73x61.png b/assets/icons/Scenes/Swimming/black_rightleft2_73x61.png deleted file mode 100644 index ac12333bf543814938b01866695434a02e43db3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmaJ=O=#3W6pj_^9~JQr>Oo>eY{ev#Y<9N^UCZuf*G9T+*{-w~#o1)G8{1@JGIi6U z;@?F?P!unvs0T$aJ%~3C77@XtNPAH1p+`~laETu=R(d;e4y274>{Q7(J!9Dj}XGinUrz zsKo^A4~vqjsv?j@S>~w)AB?*MhP)dbXn4?3VEVR4Z0xd;M_9&VB*jsx%Q-k+p|IlE z4eFJmH4{VViIMItKsEr zT9xuKNzW*%B;_(4iCjLHmgH;(=u$eLZ(t2KAkZ~YBeqRr*Rfzttd{i=B-k%uJlYt8 z{wgLosA7+mWkF%v25r~EwV*xf(Q?W<^6hiT%KO-1mx`>}s}P_hlRAjS^>{{#$g7}3 z$%3SkQR2zCo>sX!)>@@-b!_6lSdo$uqY3$EVj5R;3?p@A0q9|6g^)}4#-|I?b*SkV zU9RT-o>FdcagnMgUcJ9ag>UHTQuyJ^?8nWQ!1fLAdKL>mpSHcZ*?N9vs%hK)>B+g` z@%HPNn~h!ft{sF%+m6X2!^anHHGc(XHH-F17@9O ADgXcg diff --git a/assets/icons/Scenes/Swimming/black_rightup1_73x61.png b/assets/icons/Scenes/Swimming/black_rightup1_73x61.png deleted file mode 100644 index d7f17431333e7c174e55f483e37c5076ad7bd91e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmaJ=TWAzl7#@v;C`q&rLMyGFjAB)s%bC5-n5pjW*=-ixxU4G%>O<#pHW`zdGnqMY zH=&5c7k!X`4^oN`Uhu((1|o{0f)@~xDg?AGwDeV4D*BQq5!bVu-Lwxe12g}B&ivp1 zfB)@Faq!!ob(_|49M_W{KqV&g?A5zE*!Q>1H&iCRpxGgMh*W6R2r!qjiHSkpHHL8s z8}{V*Q{2yS9b-;;hz=DFXclorqhTY~T%Vyiu77XMH>^=ifr*D5Pv_s>z0U*3*7+l` zf?V)3c*Gf)3h<$+!Ll_qYN%W;rUMcXh9%QSZbMOL6BMHG+#z9vc4YE`U8L=p^3P*qh)RwP9cn1v8ddeo>1UbwaG0pZXJ9G^PG0}YRcNhYYy zGpdU@xPGCqWWw` z6JUdqpiIbEdkl&rgpzQC_&`y_DA;kt@oZ8JcQ$&om@>kFa~#{bfViMpWX)NIKn5n0 zD1%}s2IEcgi5yHJ2$Siw9FL^ad<$zYQ@9p3{z|be!G4~?Vg-lvv6wv=3N(NXEp-V z_xM_Har)BQf6wh$_yMM_zxw*%(Q|Wq`ktSh{p!Q7x96^I+h0CC|9;Em6S=(gvb*o6 oR6$mE?JJIhAFc0x{%fL3=4NhnTzgaKyu+w*`RpK?O@BZA5vOHy2LJ#7 diff --git a/assets/icons/Scenes/Swimming/black_rightup2_73x61.png b/assets/icons/Scenes/Swimming/black_rightup2_73x61.png deleted file mode 100644 index 1d8fa37fa8e01cd8cd1fbc21d27e478915aee9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmaJ=O=#3W6b=-n2nzO~=s`jhti}9p_9wBcY%&`Sx@)_xwt|Odli4=5$;4#pZVL+j zfO-+VC?bLiDyVqsNkOG3C?1O<3PP=TDp(Q4gIXu;ZuL+NB=61SeeZqm?@U*5`|@RL zmr)e8+}r_5M4IHywziP(t94@v5o>V17wummk<94m^l0y6z46ky_6(bADB#$JabV&za!CEHh84x6noFD1>y1 z6IfdiQgmA39IIm4mC9yX5+soqWL}h6K~NKlD$8`^VMw^psj4MlG=h;+mKne}PDZ%HLBlx95UTSzctN4C z;Mk8El_E9c>sG*voWOftoYfO+8xl6^ z?$9M&v4#M$hdt@g?WYt}SfRWHLqLJ4?QcT6< za{!3Ck(APcrW?7m!8EYWB86*U^?zb{LWYkg&d<)y5_RwR#8D!SnIKoLznOk5wmqg>LHDnp{1s;7=`ZJBp1JY#4p?>D zSaCJCV#%r-<_Gh8+uD;$ujQ_Tli=c$y={-idaieCCtkImYxgf?^p4#f<|x`YSo|^m z_I|Z*!?PD#M)q_3t+S_Q9`3uedQv)AxV!SRclpbK_hSc(U*FxFoccDkvX7dcY1t`s RAD$p&C^KIK_q4v_zX2uFa_Rs8 diff --git a/assets/icons/Scenes/Swimming/black_up1_73x61.png b/assets/icons/Scenes/Swimming/black_up1_73x61.png deleted file mode 100644 index 4ecc63b823cea5a6e2f5646b2571fa0add32b5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmaJ=OK8+k6b%;q6cjfKx+pO&oJ#YX$$VaD)XXGpM>@4mr?j{-le}p|o4lC3I%&aA zg)WMV7A+Or2o)5%C?XXX3N3ELogyfHKu~cdiYSOKtS{|Mbx{o@_r8~V?mhQ6+1=H? zy>V|NMN!-H9a@pdJb9I^4dnZ*X%P^y2kZT~2UT#@@FAsIs0``6V+_C|G_286k6MwNDIpjk+ z#R;q_2q`)ZILjy-X1Ux#$A!4a3lc9%tRTnZ`YpVq#Cxscr*pqp_ zTCH-`1c&?qUIYN}LY$AsSz^Hkqb@c=)(!U8J!mj6ecQt}a_PvUQAQ(JVF=Z=92~Du zSa<9OwMvni@uA`IA}8>U6D7849pEDTLt{hhpfu`1z6b*};+v!)mHl-vDc=7BMTUfp ze9X5=SBzl|nIjH#ab8mx@`tl*OBT|WWs1oRn*b?`H7kTT@9glMo9qY4Q3sr;Ws7GrlYtXk(L#xe44!v4r+1`KvkP^C{%V=6s zOh)8EN=@njh(cP;3K9TJ4Qp*sxEfafCzdB<_-I1@nwa_(8N*0jUjTAgUm@s{z46I{ zeAzTNMV4!GcV|goSy>@!?}Mjji5SakYAJmA@wvF;JiSwU^5gr`;+;0}Ex-Hr)31$} zCSJT(j?A3b#`Rq@N9LC2q-`xnFE7uXxH|r!*^7O;uD)rWj@^nCHeH;LO{SZgZcd!- zot-}TtID#kucfZs|MaT(xpthPWPgFnTmu=#ew;4+B9KNnx=KdbHAgQ!!)AJ7K{K?j0@4=T=^t(`th1Ian}=6vUT=kIuT*OsQn zm5l^JG-W&VJeFDfs*5A|`+Ut+8H*N_E}|Y-Mis*cMACvKKxQ4I7vzCq4G%s5?F11S zunR?0%ylXzbQmMFVXBUY(FD=Hx#}5aKR{#&^xCdUeZF~{B5g~hcExgB&P#zlyJN%$ zJtJKObEMytEo$>7vc0Nc2M$06S#<{7K&h(KtX~D|;WbNe1 z6{Zqppx?{#vMjTlzzPD5E$Cp_MMjl&gVwqS9R#Ltd&q_^8G1BIa0sasraG5{W%wGPI``+uO&5VKLX z`8Mu~F`z?p$N?_O>MDi*FqUm8oMc%hA4||tId0KrSu|)v<|UdhTY_AU#zjyv>wXr( zCpAe-^Rbk!i3y%hYe`8=CK7rkmWgV-luFmJSvNq2Yl3=g8^^9;wf|z3ln)F9{Q`so z^)cw~g9rwF&?5zb5y=g^Y}bO7pe^jtT*^A|?ft;Y_|PF|i>%lS5Rfu*LgeG39^+#n zc}*9hnyATI94C^HII4!V7ARZ|8~Z1g#bnrULjIbV`V}6-P@P`@e3)M$;NrdU@q$dO z`gH*>*P`yuLV9Lq2CF;nJUxWP!K|JvR9{WMNH$KA%k(Edf9$#OnmU^Q-uCYC^ueXu zql4u~4dVUr$#V_sE^o*+9B()|wf6GFz9nlLSD*Mab@oGZM|1J?`ornrQ`fhBX<^5H zNneAuE5Yd2-5=Y=maphPUr?{Tf4KP8%gV*O!RWnHZ{D668vhm<>^Vk6h)vHTJ0Bkq QM==p1o9@ytX?u_S1{wr!#Q*>R diff --git a/assets/icons/Scenes/Swimming/black_updown1_73x61.png b/assets/icons/Scenes/Swimming/black_updown1_73x61.png deleted file mode 100644 index 20b43074696fb5e6e4a2c8084d93c53bff3c1fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmaJ=O=#3W6b}7SsT8FYQ9+3*lnN%9WV72ObX#_t-FCIxmhFm*C$q_HH+GYW$<*D} zpZaqWL8J&C^x$3WL8J#gNX3hwC!vCZ2Supj&q2i69_nPfTRl`0lJ{ojeeZqqey)rT z545)IZJ{WtH8rSZh)j_$x~-A?7xzC6ERH!wl5TsZ-Bj z4@EVWtZWYF(nG3&Y)%hsxQgu(G)49FRb1VefSAt1am$G^-yS_?Xv>T;$HHllcKcz` z8l3jv*z|DLn4T~clj-ZFdnzh%U_-3a6}#m4Y9-24{i;L{wt0rGn&62jvra0P9;N${ z2k8h0SOb6v-K}t@p4W|h{tzt!QQ(2Z3la-}8d6kAqH7OB!g*#v&1lJ5FtUm=MT}jQ z=gZ|XR}OK=8|MW@QFtKoqR0{p)}L~)USS=-qwYb2zTsIewva;y9`!t$#8HM&UB83v zrqdga9lw?-k~6-dyS%^w-nN5_RjqxTfq!UhYVBvIT*zmjk0w2X6r|8m2b1LeKTu#u z*r+3(MXI8gG-OQL(7`D!%8(Pzv`iIro2DUzWj3TlOx7q!I;$%}H!BoOQ7MEX63iQQ zKbzrWLOcwTlBmTcSr8I&8HA;noQTCVSxAIMxsFXaKGq!r)?-^Fb`2~17pwMrP{+v2 zB2=ok!Dta-j>yw@4cX>c#+&#l{Fhhs=#f z24s0@pUIv~c}$Y5Uco zzB_c=z}?K@nH{YSt+QQ6-W|UDuzircxf`7q6IR<`yWGAiE$wS=Yu@!C_4ecN$<_I; z^2w*YS8g5rx}1LTYd$w}_U+2GH_vA~zaRK9w{oAl_x{|^^39B>HtnWfISs{l*Qc$7 O29-(-Yjg1vmwp3%0cxNC diff --git a/assets/icons/Scenes/Swimming/black_updown2_73x61.png b/assets/icons/Scenes/Swimming/black_updown2_73x61.png deleted file mode 100644 index f42552527f3cb28d841e4ed80cf0b8c4dd2d8987..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1097 zcmaJ=PfXKL7_VZ8ArTxD5`u)D|_r5=O3!{Uvu5(=s z!^Cn!Mv=-KeN)Ff=y&tNOO1-N#GED*xJnu@Kup@k6~yLTIE#u1+6y<|qdtb|m~%?g zWI8{hTi6v~WFs_PpQ0J2ufOR-tBwd;L9>pR;(o2Y;aJB`aZ`yr$opATbA}cJG_g2Z zvKH%>W^?`5*}kSu9k_@+^?wXK#irXVKoiDIi93WN|0B-@H zvb~yM!wR%2m20dFWJv^yC@DMudR)^Lg>5|?4Hwu|y=V-yg3(=ys}bVsqS$COghpJz z!K^50nkE8Slx3b;@Zo|-V3YU4p0)=Ag;wDB#K9gLd4v@_Pf{GEx_1ZH&*%3Ydtob6 zG-qNH`l2KN(RHJX?OKPVi2l+z&^jzF_(&|G5YGn|El9Pe4W`LEJWymv+2~_|L#qPk z3~bH2$Rjx;#nC^4?btf#wQWmEB>A|e+Pqa&AP+UEmzS!xtX1Qxf+|+q&p~*auDE6< z28@i7lq55gNvf)r0BI8_83O>Vjm>!>fu4ohu^k$_g*6Yw>e&E6f`byqbL}=L)G)ze z4g0Jt3krLA%JFR62(Lsn+PkuW0_PU82LkM}yGhoa0|;c(reP%1w2{cj5&5*5h$j<9 z(lj$!N!0+?!rBKUu7%C~7b{XSV$>o3bWHn*wqd014*=clj}Y?c+yrz$zCPPPbhtVT zBPDZZXNRhjZ$BuQ#x@Qbg!@f-g#7g+|j*q=G42T_5Ap2fwpmTeirK>#t@YtD^+_%EklXU&`5M8eZ`I&pe-#-_ewHsSwFFsu@PF~zT ZS!RUnk=H+hOXq1YCTETs&okvae*osFT|NK+ diff --git a/assets/icons/Scenes/Swimming/black_updown3_73x61.png b/assets/icons/Scenes/Swimming/black_updown3_73x61.png deleted file mode 100644 index 8384fcdbcbe32f35aee65be89ff7e4981f2ad3cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 zcmaJ=PiWIn7>`a=h7-1nD5xO{PB4F7nzl(;)wM}o#n!G?+(~^+UbnaMuEx}PvwI(6V80@<27;)QxG!8QEqRIgu)9NRD}_%B*oacCfKk9tx{xnh2LsCG0X{=}+7RP)f7Ep*Qfkhiq-qixr;;kO2Zb;ea zM+1j;1&$cls<_A_86&~bKZ5Ppx)ir<3q(~uqQz|9Dl3qO8i@0tY|C0X5>rsgYWZ0S zuSSz`Q`00Psi**$NfksQrlCj%PZSr3fq0c@oZcT_ttx~l(K;W=Pa_*0e0C&k#%PU0%;Yb)M&~uqDi?y zJ`Q9}jT*gX8c4tdToY@rP`D=6{4Z9dWW@S}{4+7FD>{aCb$J2kVR?m+NB1V63sTwr z<27Bb_4y-3b8&Hzs>i3_oTp+mWAqkl@4n7}%}>}(ss8zeTa&YEXJ>x3bw1cKwWl+A z@bJXvkG~I}TIhb2f4S%Rom~HW>zeTG=abl5@r65i>vp#PWEx(cK68Eh&e+|lO8LXN z4Y`|r&rhw(cdhTZG21tNZ(>6FGWq>eu1m;XSi?Miy7tPCOLOxyIFm7R#{J~!i+=#( C^K0n< diff --git a/assets/icons/Scenes/Swimming/black_upleft1_73x61.png b/assets/icons/Scenes/Swimming/black_upleft1_73x61.png deleted file mode 100644 index 22ed25c3c1674f91ba7f20024a04dc6bc2cdc9de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 zcmaJ=OK8+k6pdDk)DQj;6p;`&7Mt%RGn3d+n`FigICY$kIv}E%P=A#q)NFwsX-r* zafYK!j*F8CnX!zrVV28nq`(P0%ZV&6(j2G6WJMIo`a|JxzEx2QdZr!>uToSMAx~l1 zTCK*^Vhr?qSYDQ8mJ?V(ps@uV47kV$X*bx}@Suah^lcB>&?O^}Mj7^_6osiS+`;j3 zxkblrP|p<385xACpvVxj zQ4aYwu8Ps8L$lujF3RdD3ZF2RZ7E#BvP@n|(lI%1(Pl+7XhY@`G+(g)6D9v5Mvc13|wC zVPB&S@>PgnP=y{T2#iSXI%c~TtOc!6jTWw~1K&Oatc(vGaz4q5y##@@z{k|MChC%^ zMdam7Ow=?nlN3cxN=q@SjyPeMZ$$6@d#~DFwTYvdmeJ*->h+`Jw0{6YWAcdJiKuACa29Ua~<`$4# WZ*R))Em6xbAtIaZ((kCJ&i@9S6LN_F diff --git a/assets/icons/Scenes/Swimming/black_upleft2_73x61.png b/assets/icons/Scenes/Swimming/black_upleft2_73x61.png deleted file mode 100644 index 3824f30850c6b27144feffa9fa5540e9c30d58a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1120 zcmaJ>O=#3W6b=@ORO|1d)k7H~qOIn4)7?$zs=J$AUEAH(?Uq)&m`!He*i9xTQ#b8F z)SH56ks^X3f_RaNf(X(>!9VmO)Itw}o;($QKt*rX$#%DTs0NbvX6AkGee-^DzAtyM zxoLY7MN!R}Lu#JL40&T~8_0K|?V(J>Hk=y5{iuX1nhUA8fr=1hENvL(p=OMqdK@kp{c8vZqGfM;0h|z=qwe;?@b72?2xSOdOQwmrp<(N(_+(SvP{22~S08l#s<4Q2a461fnB zS)S2(J`5rQBv}1x)zMAV)O{cj>2)3 zN`f$$3WX(D)a!m$ z!wb>Qges^}H6cX>A(fERsZ?A|g~FngOs7<_j?LH})@&WtW1A#)4IB9{R!O>0!^kZl zRIax{-w49U8$k{bMOFg42Tj{R6|X(0(ejm5=$faXk#>;(o(VnU#6SYwsM)v)3}u^b`81s(EN$JDn-8wTpi0FcGX2tk|7jY|gP z#o7tZb zoLlqy@v{fF-BP=IpctCEvT@7B`CUhLPIg?llPk}BonCx?ztVByQuF)X_5C-m{`l}{ zu%&Hsai+EP#HYb@`CV@MvT?Wj+q&l?aX?v6K3?U|EXK5srw?K|3lHV+&Q{v}i< Ll~eB}j-UGt`l@RU diff --git a/assets/icons/Scenes/Swimming/black_upright1_73x61.png b/assets/icons/Scenes/Swimming/black_upright1_73x61.png deleted file mode 100644 index ea4477d82a6fda6685f9d01c9df55aa40f0ce84f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmaJ=Pe>F|7#|X%KN{UCu^6Yoq~`yuyEC}ut}~mPu5If^LLQo(_f{vJdDG0(T|HRj zr4TIY8qq=NX8){19fEFl2qK865P}GzphH0v#P()&t%Er*^L_8l_xrxz_wQ1+_ejH* z#w`>@HKe=r9Fb}A#y8cG@2fovDiOP|(U1F35tmFKQVD2OS2MZ+qBAE**L_3uqL_8A5eA2gl1~ zRvo*+N~K86__FEoA}8>U6DC%*4sZ_srLm@UkRSITpMwD!^)1qn;@%pV6mR`Np&?~&K)~EwroYvzE`NIJlXhIYKON_)=S#1NXRa8vYRK+MO7J;M|nQuqC z9`5g$`q(;u@4C8pq2ubES?S{B_UUGC-@Z*vm(CEq@%xp+@Z#rd+WV>N3$s5C1m1y` z?DP8%wsH%nmQLh;r9Uxq9nWTRjom-zE^AAk)Sa8l6dxULnaQ`e-uUoaes}I>(}sHL W_EcSV$98*+(4x{tuRfnVec=yx*>Qvb diff --git a/assets/icons/Scenes/Swimming/black_upright2_73x61.png b/assets/icons/Scenes/Swimming/black_upright2_73x61.png deleted file mode 100644 index 6cbe223cd4e652abc97f5913a1b3fdece29be20e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1121 zcmaJ=PiWIn7>^7@hF(MkJ&X`1S~1B>n*K>x)TU`&z|LB$8+b8IUe~ZDFD7rc8|Xm~ z;!Q*xf-uktiXcvQ5f2X8Wr!Y>4d+D!K?LzH9z5uL+1lx08c4qHy?np#`+ff|6#EWr z=-k#xQPc*bS1%E1kXK#TLB8`{Q!)`-ac%$~K~>x^14w0TRDrbNnuD+eO?%|zEbO7E zj=EDGzypPYiiKRxjBL23>k~9Z_3Uf4)?uANIWtRLZM31g{hF&tkLn^aOYM@Z0vnYUc zk^`&-K$1?$oNZQ2t5VrRi$D~3An}640-(fYMUv>&!;o-+T~$hYz7>p|RHlZpukd`M z(cl_!4h4g}Aj>ijL|znGV!?(Z9yXh-7jAER&|zo=j*lJW(UC{9f`+lm5UR^LxPGCq z;@AsYl_E9co2JhT9N=9yN^HqG#3lHL#;Vp~dBlf&35IAmut-Cy+uLALy#EJ^3<(?M zP~ecRm~|al!!Go&p{oq}!`Y6lfRt@pLL$w^<)qD8Rmo&cSxB)$)fVMyJSoA7)%LR* zKA(|vQPgx@lTw0^)6#M#qa{-DR2F1Xnx1Q84KKu|XTf%Chs17Sv;V~^*#Mdt1!aWl z?J+3U5Jq7Q`Lrl<61}V6@odxxV^NQmQ`TYNoPu^fKrX#hWW`y9KvEPES~j276B>xf z%el0s$EA!MPlLRe$S^Iey-ML)Soxn=o{-_A3HfVc+E-)@BXwl~$YEuLphxy5APchl z%GEitTx*L5%elqHMWP;k{NfA|BZi(SH(!026FR5C`t0HNzs5d3zj?8=^T$Nj#N20a zVe)3T@oJ_4YOn9do{X=FE$)9`>(4#i1hbc8vErN8_l)anzt#^tx$$#P?aSo(JEyz0 zZF!fPJ-+$Du5aV>Z)d)r+izU!?%T-S9-laN3EY~RzSO<&Y{xXEE_9&y*vm8_K^eI| J{jPT6>~F*0alZfn diff --git a/assets/icons/Scenes/Swimming/down1_73x61.png b/assets/icons/Scenes/Swimming/down1_73x61.png deleted file mode 100644 index e7fc3b0aeb3d74230f5414136f813bf5c8d68f9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1177 zcmaJ=Z)n_P7>`WKs1C*)&bByWW?`a9-sEzZzM*k#le=B8SI_H>-G?!jOWtc^FL`6~ zc6V(-bSkKYjcGsl2PcdU9gGc8zpTh$P}n-=m%=CtQdCfIIzQ~2;Q6N4tA3~pB+v7{ zd4A9Hd;Yys96P+LySJNRm|a%hEKzCESKqmVe(&u63R2NSvK2CpYouXEh#7Wq6|t6Y zPoNUA-I-TzqCtk)QTNIfQYnmT4)z5*u@RbnNYM;4c&HiL&J-eS6-{`7&fQzO#<8BO zb4Sw!PzVh)>E&l5G(J04c4ns>=yHdiX9t@ab>JgnvrWGq#9CA5HvDQ-Pp(Cd-7q0j zI@cyuDHK@)M~KY`fOi1MuqqT>yJ|bt>T|3NWJv^yC@DMuS_*24!frks4HvmJtz_ml zgVB@DO%f7nqS$COghooh(S#^L2t^=^vdmKpKAs7P-Q~Y@ZRg;Jg~FEOAl|GLt(n-gLs1fd==(`x8`d!?p?_&?YaN$oLL`<@jHe@qHl%i- z1E$4$aG=DHve90QJlYkzZenNJM**=+ouhvQ*K;+Xx~?Oo2ly1sxV%$SY~F^F%1bp@ zhP6~iK~<;YXFEJJfB{ljV2&uNBxOei22=>sreUNNXsT(@!CFB~?7%^t*dC4D#+tbY zVl^W|Ho;LD<9cTdij$b&coK)KEDH*I@TeEKxDh{-^r)S(i6ZYLa&r;(*^MG=-Zlgj zHK#}^kTcU#Iw22%F+2dxEKI5Lh@4TmO{}|3;o4XU{4Z9dWW;1b{xdP1D>{aWy0rlG zu(d)cpnDV11zBGIyq7LlS8=qQZM9ldJ#u~ZRVu!)%;9qLySpEJ-~Af9+tgdF)t7n} z)|NjRK7aqI)iq;j6n<1X({=20U;c$Z_ne!1ePQn1o`?ERtrQo}FAc>PZ}pu;>px%0 zzi~gm^U;#H=iHS)_B}nn0*@azuD|!gXV%?2C+aWvF3!F6NdGSj=Cg0#{`U9$Z+p*P zE2WoqU%cA&{*MRu8o71L85-(7(s#H#e(dy5SNcCJd^*2>@$bJL-*+QFd*QLv)nCut iTY2-#`O3!+Kf&-%GRteUV5E%zrfGl|C zI4A+rnLd6OqzR&@?pDUoSn;50Lys|AHcadV7)=oA{c&L0lK_zx7cN7FtsW7>~)c0K4IvO_mOF7(NkN7I5+ zNTV>-l^ndFSX_1NN1aOHnz6ANusp-Dp4UpOZ5^Q!cu8YT>!>mv0Ja1oI2GEsA+?=d zFfQKf1GNk>8}(4=;;xu=9okbK@KHh6DEx0LLZ)wnZfqCF?qD;o z#j3dwm;N(N-k?kU@?ivK7 zTuM-KDOs0zsZCxHgq$qo<%BM!1jC>@SZ9sGb+F0*#j=CZ$FQZYE&x8P zt`P9?-h_BTHqKVg;^kUDdaz#GnM$)N9W(|>v?;V{%q;Q!`a1k zyBFU3YS26V@0F8jYax|?QSJHUS#Rk$voyDLXzud28wTE7Xi~fGuTx9+x9DGR|lWxeFiv{?`0Wy8bh`^+oyK@N;l(-+@!*({q0>9;-^9eSI_@ zrYvosf7_jl|D0Xl6o2bI^WZ~m&mZ5o)0gCjdvE->`$+xilkcv>r4whKHh-Gm@x~_N X&n(d#-ty>kOq(beBl@-M`=|Z`1@?r{ diff --git a/assets/icons/Scenes/Swimming/downleft1_73x61.png b/assets/icons/Scenes/Swimming/downleft1_73x61.png deleted file mode 100644 index 4479288852a4b279d9a500a633b1d80a6621968f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^oNn{1`6_P!I zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9f$?sa@Dd=8 zy~NYkmHjEZ6ql6+`_mQPK%se_E{-7@=UXp1axoe5uwD>+|8$PeBj0B#m!@9daQdcc zSHgr_*SMZ7H((6r=ogU+GBWMG{N?QX!*P*%l4lmJ>7AO}m%yVSJmW*&?thPOKE0T% zn;<#kV2;T2Hy=e^f67QW%e`Vy=9ots)=sDX*UpjHOf9wCwz~gUJ4YMBC z?QSp+T6gC_22XPsvQH#G=6vqM?BIWFb%k NgQu&X%Q~loCICX8j9CBx diff --git a/assets/icons/Scenes/Swimming/downleft2_73x61.png b/assets/icons/Scenes/Swimming/downleft2_73x61.png deleted file mode 100644 index 8cfa09ffe7f2de131b01f40b7d5a88c879fbfd4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmaJ=U1%It6dp*CHZ+x_DAjyQ7!mxW4>8SYk5I-t^`k_PxFHbAySeXm*MoBvsl#A?79=Qo$ha zp=n&g$Z5TF1CMcBPu(p~(W$}#({tJz%V9G6x=}2sFLAADPWGzv|aydVDSMVAX`q zr1>>cQ-vb1NQi+h%7QJ+I!GF#gDS|bRGtBGpYL;NG z6O5hGe2vn;l%z(ZAvO{s38y8+FbqjnB~=xeg%GuTikgBS4Rt+09ND28P?z{1_J}HE zmZo_|bu9-kC=}Km`%$M-tY%UZ1(G7llIO*Vty)L4gdft_&^ju&0xXqqL}o*qHKaP! z1+(HkI#6uL*qG0UF6#=aLt@W**r$1z=Gh<7aUD}mI*zT3ri6r{JAz%+kbn#&DJWG( zHL3|+!xg*hXCwS*E(ML8V!(`+RFrHclSt*VP`6YW8VTLdyV$%RQRLgW8{1{EJJ{4C zv8EMbL`hgCq~0BaVvSG|)kpwTRn)-nVb^y^BN~Z&w3af&q5Cp+av|}+YLQKM0|J&T zs|huegrgZ4lb?W4$t9sRVJW&LD;D3uIvW(OgH8P}R$^qNctZX&G2JURhOxT70PL{7 zLfB_}6S4*Q=;WE}Y`GpQ9w=wq?KV>nef|AOCa&e-M7eqQ_dBP1Pl2u3#h=^lWuWfX zf|Wy0z6ExfOWN7~SGNvc(Z4(Q?_GV9oBLp4`2GF?^NHhIT7Mob_HTaoFH}2UPu$y| zdEwr#^OsiMeCMD0rL&DsN4~u}a`h*_@7Ddn`D>@fj;YVy+5gRFx1I*A?UElu2hr`Q@12+f0jJCbLc>eL{$~TW4>02J* hmDHZ!-hQPraDv0HaUWmaw6v3Dz~!@(@RQ7m`3F0Vi3I=v diff --git a/assets/icons/Scenes/Swimming/downleft3_73x61.png b/assets/icons/Scenes/Swimming/downleft3_73x61.png deleted file mode 100644 index c36305930384c83bb1ffb65a3b0beaa0c5c6f09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1169 zcmaJ=Z)ntJ7!MU>ly(dT1rbs33mu53&t55fts-w0GS;bOw^=dEY$0 z=lMPVju(2qY;N4xNDxG`zEdk=spD7uU>*K0d~!|3Vgt&RQ7^2b(C`6~v0w#|x?>E0 zA~3AcLqCHKf><|fm&&M|-=mn&VT{;@i5w5338JGj@(gnbAhH4mY*(fJn7&Dowxv@2 z$vl_$y1<~lbIb?5V?8BvY{--?s&fa~5h>V#1CT*R&afLOkxDK5Rj?jkvlO{(f`(LT zg;Y6TAiJOs$P~lTCdZ{nNoFjgVwjc6Hd5dOp5;WA7io@D60#zSWbL7FINz!&MXkFQ z44+hL5Ft-t*)R;5Fu_27faPUbW;uZs1R7h=!KjOjh<1b4x(5verf+-5hAtUIPopx6+zQTF;a?us$2L36|bF48rX!haacwiHgXER#>B>4coJXtOFBv?22n%~vf! zt|n3YvGe=DVyO$S<8wN&*!q4j3jD2*OlWFS|%Zhb*%0N$Z$IzPd$f|W27LQ4u)2Ndkjq6@>@^5v zlUiC%C%Uy{R*T7}lijJDAj^_0h*~-!P&KTzM&VYlBKN;o7L#G)3Hi^&)UWUu#_H+< z;KS+)0T=I$j~Arz%HGp>xz-o9O$SKFR!Z>2u{s@&vXoSK-S=D2U$ z&tE>&_Qm*bSKeNlnE&0|cwl1l`mOtpzj#pCwPp8WEkM8uHvs=*QUFGFs z%ZVSqKe8}6&4sgfpY8wi`oh)Dxntq@x$n}^i6@8untAlg^9#&lB%f;2U!UC3&_sk; U;znwAQx=mZ^jwcNl|6X$9{?p*RM(k9gp)d%kW&&%)k zfBzrP4(#jfc(sF~sLs@WJx64Ue34BX$bX^hib}*zoG9RfsDvwq52>hyiV&n6V+7`) zVbzX&5Bn%;!?>L<;6f&?naE*{CWfs#9$`~dUw_pz%rS^T5suhyg#PcF>ol;f2t6Fi z@EI=-NA3M}A0Dg^0Eu(0d#p0Vl)4_lTggnAiCRV>CV$p&MnLYNUsmZ+8_ zMTSMQt!FL1oCx(Qyrk%V)yK7YPI-5Y%6RDAKl#G{3ilU=vc%*@vK(8vGm=^B1( zM$c}~oa(s!>4nZ*`pEp=b<-EW^tYaU_*xGb2k~XGj}p` z)7?bT5=7!l@j)q~2-;RDZLI|rODn}fA2j+9ij`LUDI&E{+K1AoK5XwKyU~Z(fthpe zo%5aZoxit>BfERLw{}w$)ngACB_eI|Y8%&)@1^ZuDn#^Ra~zjZ4L3jpsX-T2A#M9$ z0+t|fXQ#i1{S>vX?p4O|cwty|kk5g{hHLsEK~q%!Kr;l+6vT8DPI!UF+&XiPp*>e) z#?l3$5bAK!8=8w?d2XcQ%uP9p%M3hA_cvAIz=s&nO}`$*YExsD{i;Myu6c%DHo;RG zvqEaTP^5JfK{~?;tRn~+I;(Ilr~;>2-9<}+B=UmHi!v(+YD!UMnQlJ}2^YCFwPaZB zVC1ARlNg68&o>$ku94zUG{K9CqVR&mOA<>g*myR;pveaDj*bTd#!lpg*h2xGcm!26 zgEfXwUCF@@3x!q3LENqssTtn{AunDdaf#DUDpxQIX0zaT-K?{fCY+}WyP8+ zDYaBahE=EIXDz%enc1wFPZ@bRD~e`5XNh?$XJjPB$mxcmcd&L4V-Ps76Wb%P+gRzo zSXGZ8z$mI9RPT&IaS~w^Poj{PBu=Jxj(LHL8gXCJqm`5m7>bnV8NM8N)x@e zT_G5dy@|+z{8gJ?PnK&#akyf(S}mf!aQ@=!M4Yyb!AkSWjbDE4-cN5fmoB$j7x&;( zUp#niTZ*|p*!}pYhYmdQM(^1EZ=Zf{vHW6}cfIH8J6{jPLm%t#)$<0}*!2N^^Sj-B zcZfSvq>G1Fan<#jQI(}lk_A^O>vdt0W^ZYCG_Wq)wfZ2e(kc>DK^M$#Gc!$WteGU$!A>nRQyhh@n@R3;(l)s9-A zQiA~?lMF{&9G4_h5@VYs(<+s=lL9C3EGM$ONOPRrDaoQpHXaIx3+%F-(|a4i@JXR6 z2>CM0R;yK}+R4CRnB^r&VmW~o1R7h=;e?0Gi1xycrUxB_R^a%^fgTxqG)r(CDHNtU zpM&dXvkQ*Buu&;oGd41PmS;HDb>qb9)*;G)FEkdl4hs`LU~?dZDAvhcdcC;XjP+*fN*0ZHrHI(VbG#rmeDQ(x$|xXufOCbwI3uo_rT$|6FIQ(qnMdIYe|JHRJRIb)0|5iqZ(tYPIjLx(VD$$Nl zT-&MN+8^atZGEz%GT7SI^5Czh)3<^@_MUk)^ZO51jy_ktR({u6@9{M8)0#uS{=@$H z<~686^2V)beM>6)e7tD=|KaM4wQS|c9ewiBluo_PZ(Pz!1UHE5?1pp4F=HZQ^y|~< HpO1Y8AdP-+ diff --git a/assets/icons/Scenes/Swimming/downup1_73x61.png b/assets/icons/Scenes/Swimming/downup1_73x61.png deleted file mode 100644 index fc3011e5f839c92f3e84a0d7b4bb9284030b6a57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmaJ=U1%It6dsAS5{)k{6-DJTu~3WiyR*BwL)MVl*=<&`>$2UFSYJ9nceBH0=8iKr z?(C|qmKK^)N>WOpg|;a)FL@{y`%+2~q7TN$3Q-Dq34)cTdT~K>wTl48sf*#`Fr61^Q-Q?xWw;ckV$d-XOV2aunA{(+ChVYGV_Df@@5n z3Nq~0rz>cfVfv<>>Li&gj;j`Sc_X&rBiE;Bh8Z4-e8XxW0!%dJco}x{!FMch>hZO}f-Mu$$gta_ zCW~c|#Q_2-UgRuMOo24yZNoGy(|jMuqAUrbB1j4+ifRI?iUPV1OTz_rO|9tpZZLYv zuysOwRS=rZCf`i(IG7S72%#X#f-G~?f(u(7F(S?j2YViL6k37f69;=B_Gp-RhGbYu zbvp;wFBW$kdttXyv}QtN_=3cXg6qbKZCQt;g8rqkt94jy`ADds5YGe_ZAfjf2d2e) zexTTpvQa+@9NHCQTF2Imi#$@$Gc5hX+m5Y@Y1_7>g1O1h?`Bq^t9={(Hqd2uwIf_hF%_OJynB!*|9UTi0hy^R&0i&e7$ zG6)W;7*F@cpj^iUhjr`&S>_dRXu|Pq+zj7~d$gUhjsoX1Wak6yf~_K}&MpL!vXsg~ zS<#c49FvE+oH8UOU|JcXtd7tixnstA)b)`Oib^Jj$y3sEC4<1tPt|( z-UM_(7WVg@r_1$HdAyqIbUIW$w*2!+Dy|pw(Q5Q~w15yj~-#B(`HB@z+j0jSyG!+#bhU53rSgrkx{Yug@ zb#2!jI!#l@)(c2Th#`cK5CSCr9YD~_cA7v14R+YXiN8Hi#09Cmq)FjWuw;MVd;Wgk z_xt`$b$5N!(zLOOqNtYiZZk_{n!NGG2J(Hd`HDuw2Au4}J*a?7Rsg9^fbx(|yH-EU zLJJHZ{u8!SRKuW?>%)DSy}FHD&Z^jOW!EQYifZpD`<6WbF`b9~ju&U zBd0i1#Msw)zEmo4r3ij18dBI= z2b1D`K2XJwu+jGg4(W)5mxV#~8(J+?z)*RbMe zv3eqa7Dho1p~3nXbQcjuVG;SXBylp`y5I2tDur#89xbJ8!oWEKK`KBlT`jWitU$m} zR5j75B+RHGRmqD=GM3atDIp1ROi-8_7OYUX8rJ+ImM3KR%7lD0G4(4lh81;r0mxx_ zg`h|FCLjxP8UBzU%eA_DZ!WpGxJcCAJNHM4IF>d$bLB@be*b^%7~ME|{q6Tpm4@wM zX12HE)ro@#o~&Na7>!%NCgGlb`sGi5-*s+mYo5#f)$r=^cRQZ7EMV@<&epk~#~=TA ze)d|^p2)k`d)7Vs?e@&o|86vYIpKYK^xX5ab0_c2p13;WjZe?dDF5EP@Xspe)T86m w3uBksrXT*QH;13CA!8kPW9vC=#Pyhe` diff --git a/assets/icons/Scenes/Swimming/downup3_73x61.png b/assets/icons/Scenes/Swimming/downup3_73x61.png deleted file mode 100644 index 1b5580cb0a7bcfef3c8a177c2521a3daec77e1f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmaJ=PiWIn7>|mg!+BFS4-(=;2j*|nbP224F3k+Av$P#6h+vw$u3<}Fmb}?);NP2g zP=*6h7&{3v@t~q?JBT|718;)hF6u>`ilQJ0g7sx__ z+d>dTtA1R~W2xgexqS=%zTEdv#-bf%N~i!UsAl+pNLjE9NZm1pKpq&@_~;VoCWtK~ zcCmy?**?XD4r4?%Oz3zRO%UBjL(edW0V2y_$aa&|mxU)3X6T_x#QAdxE-JyaVH~<-B=#0355+Rnz_Xml@*>S~N=#Nnk!(B^4(D4HC9i6YVEB}zst9=s%hqZ& zrWRwMKg9B~EVG=z3IdHS=wRGMMo7EC{-y^N1g39$$c8Q%c{Iv!3?(T{bu9l0};p(Vz{PPtbhD668uu5<%H)`q>Dt z_DGT#<0LgL#(6%IPKlbRah#Tx)VQQ+u_jh`17x@+XvVg2>;^XeU#!yO0|P<72;oR` z402V7U{Hk~DF}>69vZY=3)X_ps7GrltH8I<088_sL#`HCu{R))5&3v5-KDAVv=EW+ z(s&^yh+0=BE@x6aPc^XC28CP0%G^J(EGEN76Y|%@G_UX&M(X+k;KTX~0T=I$j~8U& z%IpkYu5G!#Vy0fNV|8Hh#W^e{bv0ECmp@HiY`H-0+`3S&uN*U5TbG>EOS_)8hcn&p zMmzNTiDTE^?>%`l_xkFMYNdDca(QmYn38sv&KFMJYP~vgZPRxDfZg~0^|NOmou{L>=XamFo49=7&3ECwmKm2cto g&(o6~ucitYHW5D@;=#(?Pl(wOdZu5!mp*;zH?LoO-2eap diff --git a/assets/icons/Scenes/Swimming/left1_73x61.png b/assets/icons/Scenes/Swimming/left1_73x61.png deleted file mode 100644 index 21f19c4b6024f029eaa848aba54533f3042aef4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1153 zcmaJ=U1$_n6rP%*>9!FxLXFfqj1NZa{O-)|&NQRU>`cspo2KhZ_DQ@ub2k~1nLC}i zaW@f)6a+&lh+?6FFA6FMA{s5xhfv>at0)nLfPz%|Py~$+^+nj;Np{mdqz=rSbMKt* zobUWi4-M|^N^MC|6xCH2uu4Q0$g6jDkniKqXH+73uwB9XQ4QBY1S!KsRY(_nFak>u zxRc-9g?$v&G47QsxKiAwImqWgV#783kf155Z%-ox&KSgW6^?j;&b+!k$IzauGs8+z zD291B>J3aqaR1a`*_j%1RF~Pao9=69#DNbnpd0>p5Ni#cS@Nq9J-Ox?ddUQj>C7^z zN^ywJqX^O&PGB8D$k17pb3qk2)#?|tBuFAJ$h;`Cf}o{UO_u4_!;o;1ThmHbe=8U{ z>C7m`p~my|dY!AMITVfXqN=LAAn}sK5(_q-3@~W0LA<@~!Gf_9c_H>tKqnqS6-{8B zAyk)h@WWzp#c>d~Dn)9>H$cdXoWT2jlGu`Uj7#ue8mn5z<;f88B^aZL$RQ1>ZEu4~ z@!lUOF(hoXuOg3h1&mwBnebtN3zp81Kb-5inviu}M^tibTFtnuQ5L4kPTS9Fcr%mEo3_dWxLsI67|5H`EQB%sbCr9#=^_fM(U{W$%ogQ&6(rp22LHG zfAQyiyB91x_(AD5J0Gq)y1Q#j-;;~nwS!+jeZ(!u&tc`|$Lsy`zi#e1*>m~(AGz0C zxxbG)-FgEIKpA7383I-7d8 z>DF}a)9$%fcW=IR)@Yl4d$OZDCF|2>=i;{YAFQPoKcePN@l(eMNvdEET35_N-~9uN CoO|s6 diff --git a/assets/icons/Scenes/Swimming/left2_73x61.png b/assets/icons/Scenes/Swimming/left2_73x61.png deleted file mode 100644 index 3c895a3db06c4915a2304196931fcee22d829cbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmaJ=U1$_n6rK=CLnNj?rW89FUlQv4?re5v$W-Ugx^y>&&01qy#Mzm<*&&&^lbM_D zCScO06^vFNltLdAeN#gzXniSZF%$~1P(l2|JT;c;gQBANpa|)m&2HL<)Pb3E?w#|U z^PRuhf&LHM+ums-2%`nFdC%N_xUEP`RzSEwiRS18hT6l!lW z$K?VYl-*sEAsC$OFW8eKw&YOTKOp<6GIrnrWRX>G)Q{w1rSdXt+imaKS5rtYM zHIy45br=G&m*Hre<9f-I#5h*bvWvxSq`(P0%ZV&6(i|rzBv};6`a|Jxp;MCc#?E>$ zd{U?~LV?V(l}d%FBp4VDv%DlpEGMvnKw}F!n(&cTrTu7Y!-D}LJ9Go&LZ6I1T17aH z6be&a&A|(Dxi!arRIe1S8C$gimS;HD^Wwy6))C5se`&019Tg@5z~(^&$3q)8q_njG z#>IPcpx6+zk#~nK?us>PKzrN+KFSyhh5s;)>&RTnacn-BrV~=HL)#_MqAiI}(R|4f zq*9_+1Vy{yXFa@{=2X?xBtsLEJa1}ggHLLvs7nGb=(=Gxuo*u>mT!YbY!}C_W7BWM z%6bSa1j7P^qm3~bC_@CJG7LyTU_`Qeuj@Oo67|GAT20viq5C;-c81U+Yekmb^$76k zL`qOqBdHlR@@87Vxg<YiV3Okr^|(k5qd&fWTl=nwoVfPZRef{k9)r7R-dR5O=;+La9rnzLdq=*1{TtZ#gT%OXl3e6y`}}%zons?ZC`G Dh0}kG diff --git a/assets/icons/Scenes/Swimming/left3_73x61.png b/assets/icons/Scenes/Swimming/left3_73x61.png deleted file mode 100644 index d8d8e6354d2a5edef8c7327fba2c28255f71e629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154 zcmaJ=U1-x#6plZLsKY-H6_gki9GKsx%@S56ZBkcV=crXH3hp+!-NKgKnB3W}ihuYb z>YF0?pbv^5f*=fr_#h~3`k+22f(oK2`k?rO4?c+2o2{KbOasX|=jMFpeE0mE=cu3aRc36)kpvrVnA2j0WZ|5NoG8*M)c^IXXtSk+@EA7NELJ4bQ%Sa zPH+Ni2||KaRL%w^V3kViX-SYoUXXcFW(7fushTX)jfWxW0=ul`jZ7mMv64(5#=ge$ zl}d%H#5ff6@}jD$ydd$C#1aoS9P%)zvR=5l8Nq;|6*xY2kVi)mK?x1wBtxi9+`;v8 zxyis@*r*h#8D9lHFLDC!y3xhPy+fRbe`rkU9TtXs$md~*1_O&Uq`bNbCdK=IqR5f3 z(Y6K-=?WMykTvK+4`+=eL;i5KV{3w9+m;w_V`FN~;90Pl+ab9d*tY*-wR8XhMnM6g zf#w)=_aThJKIGGq#L4u!osMUtO4u6pXyVES44nPY&IHJ%$BV2vQxH%|YDo|iMm%Li zA%9Iw^N5ULq)sjXF(y|CdSq_`vLIty zloe#TW_5QK%zC{})a`d3A0py>*3b*p=O54BT6Bb-H}hG&?##_RpkALnGjh7+x(^=a zk1t5Anf})4`0`}ao#yL$x6X3QUH|8~r__gs|^j%@Ac=-K`M3-qe+h7HtAR)VhRp!AyDzG zNmNIcGe3J7jWW!@jN53EX7#XYV~@8I8$R{|ie{M6gK=Ql(};i;nsj}Qz4Og^7PyYa zj%TW3H7KDex4aOdBMV~!lxz(d3Wu{YyKYOJyAepRX`*8&UHO~|yy zZjfqLYoLTf1hTxy*`k;QImkO!%d%Uomw_zGk{~LAq;R6BrlG1Rp!cveTxN(?C*_0`a&U9o0#Y|nYfCly^|=^x&49aYRZjxA;KTpDH_&TcCfXF(~)No_}l z?Q~W_ExYe$D?H4@Og5t!dQr(pl2I&(ifN{etN~3Z7joG?w&F*`@@>?Q?b6sito~T6 zS_+XxaM-|jrauO?DNJxQg##eVyaM)(yS{@v(ThosHd5A6=)Qp*GsGTPFS6=xK_IVZ zpj0i+?Ow`Q9wcc21AC{?XG#=(w-&o z()f?73r}D9*(|@ZeD&D2Q`c|ZxcBvqqi4P-|1u$z7x(`5?$Y3{pZ++v$bPuEeD`!D ze=FKU>Y4KU!zYifeXMNzp52ju@`Vrdv$M~iTulxB4r{Bk2d;h=?!U8gK6NkiNv;r1 z+`Y9o{_oGfZ{9w2|I)K>E)QIO{m{+kg@1PKN!=g$>+|rtrNNccyYa8>-L-wsoH()l ZI8)roto+;9{t+e4RE#nGtK#u@{s#!&htL23 diff --git a/assets/icons/Scenes/Swimming/leftdown2_73x61.png b/assets/icons/Scenes/Swimming/leftdown2_73x61.png deleted file mode 100644 index acc6a77f719301b0fe78f9461d6975cfbfa5b071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmaJ=PiPcZ7#|4~jSYD4U<2xOBG}N*-<|z4)2uqPGf7r=k}_q{jY z@B4n=zY~SNp0?KZR*It9vb{!;$Sir&>s!e8?zSHlB0j)o8TX?qu7LnjnvE)u&bnX_ z79p_54*v?fD5_<|DV1?KpHnU5av-wd>aI`F6xFr6?gMKWV!8qc9WTv1p1sb{j-6%( z;&~zOXW)?2J08IP@xGEZK5QvAvwIiaRac1v7h*uy-4QQT>uF}$uS)djnrG-`6Fi(| zR!Eie1v-NQNGCXfwFDtSCl$^H6<}2=pU{#ZiM$~5qRa|{8dFqRrW+4K!Uc9!EgId8 zVC0l$hA{S3p0CwvTrI|-V2~FTMd1aBmn4>0u;G}8L7nx&j;03#hF0MC*g+m0c?1N;k}u85g_Fm~6xnW)qwBLJT|$He)*^b_1Jy zCsxe_5MUIP5E^NYL174C6b>PumLyK5KN@g68`Z+js7EU)8!&K=K)X9YF1=i2)me*x zs41cx*NnJsMC5fjC2LBzp2(O+N-;I2fwk8tTxtcYzZJ_9GJG^4|C^ZR6&b@wU0ncj zSY09Lk-Z6`1^MF2X0lxG6>=qWX=#b5pUwUG6%kjnhE}RC-npl>P6+QC^MAbJFZbR! zuYLIJM%lkV*OO<@wm*3=HM(bEX3L4GLmQ^ge7D$t`o-y=uYLS^_Tcp9+rRy?iJmW9 z+G_9Xy3@1p!{fj7`P|}`1O57rn4{=Z{bPGh36tetB^GLdStI z?p(3$_wB{!9eXApP6t!l&P=w?KAJh!qve7x*KwVbkJ!CWr;>Ah7iKnAU;MN)_wRqX jt$$BnZ~69=IkAo!I7VIh^yRHVk^+@A`;71PLq}f&J^YOP diff --git a/assets/icons/Scenes/Swimming/leftup1_73x61.png b/assets/icons/Scenes/Swimming/leftup1_73x61.png deleted file mode 100644 index b1d5a821637f00786e0d1ed67f4bf26fe68f6505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1186 zcmaJ>U1%It6dq{R(vlQf>>s6!lNKXn{%3Y~rrDO=nb~$Qn{2l$-3O_eow=KxO=j+7 z=BB#|v=5<5qn5S^eJC`bv8_aqP=ta?D?$bR1Su!wLbBabN|I zre}?SBCwpv@vlHXL2MXvOJ!8f52!Zu7%R46nqGj>1kr!E8CdoxKx74sxPF@Ys(Wwv|pBgOLQ=_)xP=^nZ{Y@1+@Bp&NrZ?tCYBNo(_*JnUZ?hD+ zVuD7~)GDcRzCda)1Z0BYXq)2_WKv-qt76%eN*^h30?%?1%S$xJsiLAv64`zz94>UK zYEjR%gW*-0sv#7pEZb-_n1;x}aD?R*MPWIC6$Bbv(9xuitS0S8Jsl4^i0se}kPCe> z_Gne$1WHqw>gpZ5AfI1z>__cP;heEeD`0tsV?8gv*ot+8ir_yQ>sm*p$pElL5W$Ji z#s#VNbig=yPY)CuVm9hf=;EqaV>+}aJm4c!PgD4Waa>2`l8$5Za*7s}ghSg^$)YWV zPtttV5tOQ!kU+)m_*oAx8$6fO=RCt_JlhK)Pqe;w1=!fhC< zYXg86Ya;}FJU1a8kX^Hn|H8xdY+;~ev|25!zVgNQXR!Fh)H9{#(*4Wdb)V%nZM@oQ zx!dQi&ko;Q7~1*h?&6YpZ43AzH+QM`^Ns58a|<)S{Dv+ife6zW)IZ7&PyY)XYK=$$ diff --git a/assets/icons/Scenes/Swimming/leftup2_73x61.png b/assets/icons/Scenes/Swimming/leftup2_73x61.png deleted file mode 100644 index d1070b920aa553ed671e66e1b173f0b9ee22f76e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmaJ=U1$_n6dn~dgbEF)5J8!Y(OPi+XLmD0#&maQwodBCWL+^8AG|wrHyN`tcRF+9 zPNJ0BR6~3ceGgPB=0R*9s!$aqJ}9M@{z#-$#1|1kP)c7~EZyEocGEtj4$Pc$@0{

tTv3RaNB$iI*gnSg_HAk3r1((e{=H14ee}2G~VDop=NlG>&zK zP+iKw3yQ^M$9~kT6sZ{>gMb$~f%m*5u|?|$m*BrNR~)C^>gd(g+0p)=$U=eUk0WE{s9Q$4J#rXAL?XG7jaV%o zLV!_NMyS>rgTYaRQ8bDIT9P=0-gU_J9aN9rO?tGHvH?T)ICKgj^614PYwijJBq^U$ z3VF#$<&1=UkC{yugn%Y6GM^xNi7-!vKzI@-=$ z53h<}{CM&7boTDa&fn&#?m2y-d;0v2sblAMcA6cV7ha#QS+g5I|3E$4Q|KRBZ^fmH zyUuL8_u-}2o7VR4*1*u0m-|<_FS{OgKij|cyT_k(73HpLf3EAlaK$_F?EZ=SKTJ>k zY#uy2RJs1>z0OmIFCV+~*X-|)<~qK=)ppa)OkI24_xJjR?iZ`)Z_NDRA6fktRj*UC TU(GDsBb+JA95Altj(++NNkN0| diff --git a/assets/icons/Scenes/Swimming/right1_73x61.png b/assets/icons/Scenes/Swimming/right1_73x61.png deleted file mode 100644 index 8596cfa32c4f0afbe29bd3f7f5b54c750b39fd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmaJ=O>ERg6gG`i0x03oqAEy5u2ZR{itX{Pce8e5P>9}xjFACDGMU}G=(a#64s3{ZIGbd615CfHeS!)2$L`>P6is7F*~DhzL9oc|l|WkfV|;igfj1NI1_d z$$2$h4MtW9Q^wepdA?GqaFr;BynbGgB#8$RJ`!Px1?vwxSPxjoZ?1Vzp>KGWi!J2P zp+~)lhOojAsw;P}-E4N%vEx@WMRLXmy2}e3;B7m+*s`^c^YAr|HLd-^unYM-^wE%K zkb;z&YhaSR^#g^5gpItxWGa{9uaS;}cnxD1sVmcZJQ8lF|#h4&yNh#HyRAY%)TuNv_OQ|(%#__T47_b)G zBC)I3K-x=0u<;p7btgoP%_K;04 zCt0@EAkeM>NmK<*je*vXd@_-WkyiupgeFMw6jQ~TYb36UO}`P#6Eb|*A^+=`+7@ZU zP+c7WvREA<=#aVb$bgJqI(Cc<*V~;P1#M|*iKyMzXO0jtkx|rs?@#924o-Lfa{zy_ zf6L^?*;9?O)ZaqJ61IkwX1>P*J48R`9`JaGz>@QEBz1_@I>Z?q)ao5FMB~=iWKr zIp6s^)YrRyLEEx6hG7=i8>}3aHhuN?=g{x{2xXB&Pss@Jat7Bo!Akj_q% zDrEbBi6aC$d69EOu@j_J-i1Zz6pNn&S(GI~R0K)kL{UqqnxcT_!_sh(Thek?Pcs-j z>FgjOp(Y5GN`7N|uOg3j1(q%B4Erb`wxzT55AS-eCZ=51k&<0pLhW=pr=&m*s#1!RO0KMy z5}gVvIxRo5;S-jbP9(YvE3G6YDU&wRvY9p&)sV~{)iR70)(&C<0|&KYdo*?vtG*Mf znGu2nM|q6Ptug2u#01BKI0UlHD`53zFK}@sUQ_SUbjlWryj{rciLehEMb^Ao2q+md zWhCXal@!$mc~MMvB~zj-ODQGQC9zGcJ4@l3So5t|fszsG6Y|Eyw65qF*43E>pof_i zLIK^Ih%U(09SfJx<(k*GF`t>5nxg90*Y510;-qaE`D*R&31i_tFn{jxslBz|tjwCT zUn~|bzPD)cQuv_#%Of53(YC{LHRzq{Xuo&Nc=_q%w$J{WKe=Ul&n_@==Fd%!_6pa> z4m>{B|KkspEgja)(PQ77IB@!t70Z0R_VLqeTXR?LUjJqM-%FFfzbHI-IJRTn?bNG- zAC^D(Z{nl1KRtZW9({N3(!`BN(bzxZ|42%|^|`qP>~9Nrv5-JI>rS z*?kZZVYNj?5UdZucsW!V~J4kml>cB+=f{r`xg<2=WF8I}`9$gD8STG@D8FrCW ztyl(G93YV3Ma~k%1W2m94eQXV*S7&#lqEq_1WDmUQH!aXqJZwh(r|&@&?;uW8;qVZ zY>N}a6Juofa z#{)%%l#RACaA;THxQVR^7kQ*$W?1@%w;fv(leTS1@e~(R6ENEvzERP?NoO~q4^Y4orKFC@^jP%pMaV|THsk7BiK zfFQv^731;V7?fL>;IM^#Aj`Z0zTD$@Hg1PoqaH1$Y@)z9fb4vLU9eDO%~^&(Le_OX znO97jKtx_u#k`S=(VLvAzq|Iv(@&;H&;8=IF7BQ{j-=9CbIz`+!dR8<9{3}l(77JNA45g74axUKKOK%o^lK5?+e#vWk} zPm>%+sV?W>`lZr}V=wGgiq;H7&^avc35*p97WQI?uDVw+I3gn?GrFp4t z%W6H5Qc%t6`&kVytE!kOD27o`l9FT=@@ZYxbwy96O;ItEg+8|Eg#>yQ>c@6y>>gHs zELPJ41PKnR7`OUkP;Ov?!v^+QSr!y_`!2_`aXZ`*_h>m~0|m}rWRC>cWtWPqIjayb z%uGtmWb#H*RAcgm)JQs?(34_HPs_Tjay_iQO5u9g!vA6cB?ICK`On1kujm-Y>dFGp z!^#RFkM2!C7X%D74$$QqERR*qZnsO-SAV?xCKa8ck*`L-+_`%G$+y_`#-;1su5)so zIk9P>acJ*XKk1EM;d}FshF<*iw?ij}GoMWtuiSh6>D$`k!Lupn#?gI0KmXt_dq8TQ z{QCXD=Fx?%8;@W7ee4>yc<}Si2d01f-1ZCHw;$uq>CTByZqB{?aPi>}>faadeD~+Q z0NmfdZ|CLkkKnl@3op0IuRZlnHG5|8qg!8M(AhM1d~S5)#)sOG`7e&Gd6vl@W;)UC R@n{fet#s5sE6fk$H7nAhN#6XqyCyc)UX!zd-g!-Ltou+jm%P^tz2uF_ zTkl$RLRC5-o9d%78h>9NKQn@Wqm`mNjO_lMmdt5obF<}{hYHPUoq#Eg2lihvb3 zv&cq{xA4R{G|VvD8h&M(Ocy6K7YDqP+VHI)qG*O09%)66JBJ9UqFF!G*=r}xu)z0p zc3-9li_sXW`{Ro-np!MX+{HOp_1KYzz;H{W4gy3R&J~7xY(;{wozyY zqbHrM6B22H&}=sOrp)7bRuENH6`&+Y5=Sk#WFaI@iwl!I9S;Ud+}MwZk3*1pbgFos z=q#nWkwXv_i<^$aq+KamGoj@~g2+Q52-3vXtrKFSe`#!Kom3VgB-kjy^RY`CQrpu3 z)8gGcP-;loXphD|?TXVdusa{1kXVM!(m%ZCdm7Ano-1aCI9bhloLf^I&QZl2C)PYk zt;tyhRo#xCt?-gGCYd=I8hIrnie_Gw6=hUW#jK&^b7J1?V68AAPUxaeY@f#7z)FRi zVzsdtIRwWQj2oRXDAzH;NgYQ(l6VCS?DInpH{DE6O3ULnQ-STC~XZ$Us* z%>tBj(8!2NN`5G(nyP4sYG%k7%^P{PjrF!DTpKI?FIJ#rgmgmwGclbjI)6jt~8Pyf3r!_fOt=29|&9U0o(*{HWY_Wv1`mUoQ=O+dp~u>TiRE!EXEI zr9sQK?tC#Jo&13$liOJ`@$q)KpT;BD9^7Q4~&b=~w z{;nzeL91!q_teZmWo7xsTX(;DCVAta?7#N)g4xf1v1E_TT)*@6mD2mA`u^T)AO3m$ ntGxp!zU*3g`v5p8XK(3Z>;dMZ-SO(}GzrEsOUBXs<4gYlwEl?L diff --git a/assets/icons/Scenes/Swimming/rightleft1_73x61.png b/assets/icons/Scenes/Swimming/rightleft1_73x61.png deleted file mode 100644 index fd1bdf0770d6a66eafa9427fa456804ddde1d317..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1142 zcmaJ=U5M0H6b_7(RXQMw4+`2CrRrjmn@nbQ5_jBACK(-c)^!|lAEfjqxwD(@BsZJf zb!Hb4S^QxYebNfmf_+f%2T@V_P(`<_f_*BKmez;-(cFx@@P0NO){uofC{{T%n?`+FSgIyr7n zx(v!e0S&ra$3nDgthZ{94cV&0^=xLln;LcCAp+T^SN9{Wnd4^sYE+M}MUI^@AwxNC zmQ;Vak1gO3u^9pIHUJs6OBEbwLEEx6vNDh*5h$Xh@BnBjRZ|qU^>8#?=+v}|QEUaH zryMs(NT7*gqtOr=DFKHAqNJ*-2xL)~d1}E&qdtL6-jCL_Js2pmLpLBU_Sx7YwD1VY zag^$84qi|$&pGy^R;6go#3l?xNdThf#fi;WN2G$@(wNses*VOote^;wgf?wRZA}|Y zi}&F`u_0xn?Fe1k6<9a0J>nssl#Col{|JujXrRk+Y$=`PQ)Me1U6Wo%sqki&fu?6)71po{)DYrhP@nFjnUlfF9;n z2>EnxLb@Qo2N!PB<@%^^d)1tto~G*VAAUYS#mSP9uQnh5cX~2;5PY17UWv(1&VSYk zfBAoZ;@sE29lE?&@A&+Ft+W2=nPcIl^=E#pKVIsjr*>ZdYwT`f_|!yk=Wr67U2tR5 z^AqRS{&C{LvTyHPe0b<5e)HZ1Uq0JC&~y5m?~X6&Ik&p|Z*10?<*63_FjDU;-6RB4lmZ9-dqS6YaMfB$%XNilo?YpdyQ-Q7vpaLg%fxD diff --git a/assets/icons/Scenes/Swimming/rightleft2_73x61.png b/assets/icons/Scenes/Swimming/rightleft2_73x61.png deleted file mode 100644 index 7ad643f17ee01290cf17443b6c4bec76e8109a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmaJ=TWHfz7>+0+Lxr!2DougJAf?_VGTiB8llQWwY5%EEs zm!aT``Y0&KPz3R1qN0Kq5W&kp@kvD(ih_bKKGc)0ojyzh$^V~||NH;%zm4|xY+cl} zqKTrYMY%4$KxB@*+Jd>{JGts6Afg3l`|u7_!et|XRELdBNatLm9~Pitj~sXc+bC-8 zkW=i#efe(HLM~^-HeBTT1Wi$G?U8R-gAmgu>~}nk`8IKvp&eUeb|>>f-tUA1PFE#> zJ1RXzt1@T-n`z%fw?!&(;6iNBkvrstYNRnWzbet=Yo4KNCU{U|rb+eXd+AOTKw9Ah z))EATP65s~Ov5tG4YVXkA}`3iD6@i~CV(o-bp2sSxWF!{1$|3B7&&Ro0LH$`^W}1x zD>&A)ItV3LYe`w5V9TrD?$QNLUh69T59f4^A%8gAu~i{u+m@J2vk9QstW}Z?)&OFP6-%}RN(n`Vrq%E>D;|hx z9VAnFMox-iHUkpL3=kA4rF3S6Osb=S&3Pdj_CrgEY`nN}8!-?O6&}$4dXi@`MZ@Psm>r)3_pI7^^c2Kn^o21U<4h0a=iC^Oj7O zYkqHcFL(X0_&8h zZeG(=WX_H*K7agD_q&I8rfyVjnVYX}Z+$9FX0MN(?^*w0>RJCdd;06jA1&sgiC2}+ z7e8J6^+tWYWNK`*a3|b5K0ekVom?F~>6&u|-*&%uZTk3p-(>TipViCjTC7vx#I_@I YDEka`Y}xx=X9z7Sm+jH7W%eKa4eLR5SpWb4 diff --git a/assets/icons/Scenes/Swimming/rightup1_73x61.png b/assets/icons/Scenes/Swimming/rightup1_73x61.png deleted file mode 100644 index 745607fc9654dedcc54224c4760d033c55d853a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1184 zcmaJ=U1%It6rPeAlC~>FY)PYpn~8{G=YMuLGwd|(?#$Y?*)-j5>4HUjXXb8pOlIzM zX5vnQij5GpQYi&ne6JWpeJF*tDOCKSpkNCM1>3&#p>Ki|+K1Mk^-i)IeTW^HIp^Lv z-#Op;`(Se7rPQXuO%z3?%DeR{k!A8~eLduRedwG*#E!_QNBeOjYQX?ec^jJulwCN5 zstDS1M}9y#it3qhYW1jI8CNarvM{k>W7j8Wipq_}KD4G$1WYvLcpCltrLSq=*cyE> zUEwQ!5jCCN^8wmFKT)&hr!B>%$992StP%$6Wj zsd{A+6mft+hUFQH=QALyur@TIWtuyI$cqBU%bXxHJg-WMD$Ahr&?H=7H`JI5Sv zjc!JfuX0?g)nZ!`i-RdnP!xsZMNSkMV!?!SUIb&t3rD&hbQD^F<3|qmK;jXacs9~# zLUlC<*RNF89D8A>Qlw^F41G>udCql{#8#}ssEYojv95JkoAVJ@MIoLIEYgt1NEb|s z_vk>0Az`EL4II)HIHO~0)ul#I<-4H+^}5weWXutlXI zWn^SpT|evLOZk!{qzy?g$g&_9g;6D2DCI@Ilo7H;MdrKMvKL0svrsp-Lt=NZ;v=zY zF+ecFK@H=X?ifrqafHJr_JJs}GI;KwBu#xPOW7JwYq zRtR}yZvwI)ci!q>B+J!1IbJi`?KV*leEZAWL|iEA`C5GAw^Oe?{tno(@smGZyRr1m zi(fQ|#r+Kizu$@JGjfe0Z_3QM-NZnKM`4-}>_AlTT^rz2jR> lEB9|*9m;+D@bvZ#z0~(T)MszHx9^f1sIoDke^ofV@DDz7g=_!- diff --git a/assets/icons/Scenes/Swimming/rightup2_73x61.png b/assets/icons/Scenes/Swimming/rightup2_73x61.png deleted file mode 100644 index 5a3d315db4eadfc7d3d287dc4a732bc5bcd5ac33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1174 zcmaJ=TWAzl7#>uthM0$<4;GQ>STBLheX_e}$W(TBCc5CpxUMD@ADqkC?3m1)apuI` zBv3>}3>x~NSm;ARMeRc)E!rYp@d8?kU|K2FLLU@-(14<1(U-7SWIr3@?=92Fp%g+NMmSUq9Z$>3tF+)hD9b`c|=b3%5 z08M9T*DtVxqUH{`#a`T--=NyaZVwb7CwiM*ijqQVM-Dg#wf==#HuaG_ID3wmcg z7&&Q78RJ0Z`AVh2Rb&o@eY^+&;01}7B$imP(U6bLD(gop8Xj~Q*`XU?7x{GT(X`MY z))+!{ItMSv=Vu)IQN2>6W_;BQc##u$&x;eAvW{>8{!3$4>!>&sK)wJYG#J{XA*B@! zFe%=L1I31fjk+;(NmtAP9od5(^l?tt81jd6Tt^j>j$@1MDOLsvhqX(J$(le+vSP`R zKuJz0(6SqTX2YjIRs@;$PCcV2qG)6?QZfsSP9OnYl;xz}z~=l2o4ySjv0W0ojx|1r zRkI;9F$#+a4K&7}yNoc3$|#^EiBsq`J+AMdO4J(nXgXybhVE|YbcV>Ir;4n)vk=fz zse~>og5EABV)7uRrwv)iN~yF0WMD9LtTRjD>R9oAu{$WU`RDbP{dBW2@prA}CXY<) zIka?SA^LQ5Vr=!izY5T{vU<}u&Zg#n68DeYvtAv&c;wNWA3qu`eARUH zyPkI^n_sWoId=a}$7y#*TV>ygt+~msFN}@f{%!HR1GgR@wC*fOe+tAeMviTNd~WE>54YsgYevruKi_!s c=Uoc~YA{26d-d+q&j@oWXLRXjGduRa2i53_>Hq)$ diff --git a/assets/icons/Scenes/Swimming/up1_73x61.png b/assets/icons/Scenes/Swimming/up1_73x61.png deleted file mode 100644 index 0e61deae5b09d7925ad97eef843c123dc301d3ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1179 zcmaJ=O>Epm6t)^vp_Fo{kPwv$gS&?X;eYRsO-$I0y~I&=S#38;xU|gLvx&8_$Jmpu zlS2iCQl(sa01<%@5&|SZa0nofT4<+i?*0Dn)B1Brp^tUKD)4lUUa}CN=agjUBDy`h19l8jA5;KL*tqOmIAdLm0i+??5NudKo8q1 zgaW!Z5nYgTYtJvz<=R~xuUng&n^c`R|J^YvKDNz5J^A^Mr5l6Kg1anZeRH*NWa)ty zuD$bOK7Dfd?zPMFlVeAAgI#Z|y_{M;!@T|YrBQYHO`B|3rz#J>zxc)H)vs65AH281 zzVy{C_)Y#)aNy!!H*chupBs`+|8(8f-yOfw^3H$x)a4&;RnnE9>f5z@zF$0%`t9sG`{CiSYp?vey!7dT)Yvb_uQqP}&Kx^^?*;Grs_~jV@!5la fzxwCC*O>w4=mv9P*TuKmls;oy74xIw)5re-m6DAO diff --git a/assets/icons/Scenes/Swimming/up2_73x61.png b/assets/icons/Scenes/Swimming/up2_73x61.png deleted file mode 100644 index 13f749dd9574273cb8365b9110a03aed6934f73a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1169 zcmaJ=TWHfz7>*l=4sYOHP-9e3SZ=4+#71eG))nm>U3C+DFilRoxFshhXSN$CI`Bah zb)ty)B09w>2!ig#2Srp66d%07KnK2vD2PuA%H~PeP9LU$-;TAlZk^k- zqKTrYxtSIcs7+h|8J_skng(kj_|I3Fe??^zDBNV-(fc zW9Bc_^Yz|+hBgg_=?Gd z+xuJddVjYr8O)Z=bgUv12NuK{U9oy>Pp&9T)vru+|C(p$stN8^m`PHd*)}?fTu6sG zfz<^eOh+Wn&8NMLDOYYr)7#VY)DOWS%dV z%Un6YA-BYfk|gm0-~nKX1?%ct8}s7~f!Ioa%# zW814$iqwp+XbvxO0&iJMSMPJ>7to3TBt**dJpHc9LnHuPVtoOGdvk()=T zr#=R4T?iwu3pq3ZT#(+-VcG^NdmH^8O{T0u*E|4?w2LgdT4dRrhCnD81yV8^RzqT_ zN?rmW83yTaKn+DfD#g^W#x#YiVI%*<@`McUPsm>rQ@HychhZ@%^7>WcN> z=6qf_I`;kehk40;9m-hCrooXPYo3qwKFTj{SZB4~7(OX1KYLm^ePL1eF5GxGvhj+Z z&5ZtfH(-41|D0MdwxOMnrZTBk J^;Tl?W8H)Ka9Bwhs+`=|iAUnupLriw{B)Yy&CvZl-J@F2WsHgqQ*wQbCW!VUCEu_L0FfpbalANn|LihFI(D2I zlG9w;Pl8dWdny0}Q@vShs$eNLb>uMFUQ)3G7a)Tyxno|amf}>^uZs1`HA|6I6I6&( zo1}8-eliIIKt>pjwm2?AMis_3Ov5tGPf39jc$Sk`UZOcp6%|#I$l62UaDkmyGg@aY z7(T_RQG|SzWsAikQxq8(jIg|-C@d$ifM-OR!D)9Ee8URbLXt{Gc0e3oZ8)^#h1Rjosm0k3FmYaM1MeZXcw2*(2pHzeOy z2jk+sJy69Evr+p32Y1C7)1Wo(0uQCMIEDW(wqvVY)V3{Nj?tnLv1uzW8MLABQJT-& zf|3^_5-_d0pY8C`h$ITKC~FBxD*)MGn1b`2}N z6{{u#U?3P|AsnlZLH{U3FdT(GDF}>2emLZKHY|o8ReH3UvIYWY0@$4abjfOwRc9Ll zvcN}@iXdrnLa370bt%S+N>qv|nl30*4Qp>xxEfY|BbLQv*vf>wHZk=pJcbo@YXR_K zYlVP^_a?v#Qs_8}_l{`n@5$=rav7_G=dR3P@k>hU$d+#0oBOPJmfWLFKV3$9J~zMk zK^#86JNx3<%B|~vW-`C8ZJcW|2V4E6t7bU;@8aLzug~0AMXg`m|G97D?xD3~$-OK8 zf7{SFee=OjUw>l#vHITg|60F$cx~4KNj|AB&p&$i$*;;%VSa9B7cubV)3tK*&T#=i8uvr|F#bkB~p5?wwM?` F@e+<8fbakS diff --git a/assets/icons/Scenes/Swimming/updown2_73x61.png b/assets/icons/Scenes/Swimming/updown2_73x61.png deleted file mode 100644 index 0664ad165c32f876d2e5767596461c0f5effd515..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 zcmaJ=U1-x#6b=kU9TOBpRFs&3C@jBC(z7x$ndE`b12?KUbvI^%*qn1jF`KJXN_QdGmB zlkdg7*&UjNTn-b6ogq|bb8!7^cFwUE z)+$A6#z(;CMNZ&dw~|=ZI>b5nhsM0tVSd<$d=7?aD6mLFip_N}Dc=7BRSXFmZD-(+ zu7E)kSwk-LaK_Xb@`tk>TN4ttZHe(D8&egVwTd!efhs0gv1m(bF{a3{VAcK1hmR)> zRq03=W=f8UVmg(S<7O(AG?Vd^l1Ljy9h>n&3_J_gV>={v4V(HeRx<(!FbeVr4c5n? zyB}c`_9LH`Bu=I`?r}UDmBLMx9?hm~!oWEQ?T!GsbhXHuGYe zPNr2+G9*Dx3JO!h+Vd2yhBg0*R>^V^p`q!%r?`g32|Ik&Ctbgpyi!}Dvm8#jy} zzPWh)@r@_6WzxN8i5cn0p%)YPuit3AaNy(kZ1---;s=WM8GLyu{I@8QN$JeRjbhHH#%p`Z(*hy|o?l@_Y z=fj1MZXR7IF7)x<;|VHQHx@)(h>DBuL{U*t3WA^rZUkMZ^`@PvE~MU}L6YSei|3OdrLwkJF|A7F7a;PY!0{3%NDR+w300FM(0phTF0iXw$;dT>k)2MD zV(e=i*Jw1@MuJ7b2q&nj%JCv6iVX2!!f_9q5#xnhTMPyat-$fIgFFy3niW*XI!&Z5 z=HU8;!V<9;HY-JH#zm&j2`taKZk*VHcZf^yn~Y_>!}7Qfxe^RfJ+R1yRJXRkqK(1_r(_0$H zgvy_p?VpP0x=WYKUpCFWKeg}G)L&DNpI*zqnbq%p);1ow_kU-9s;%C(p>tirzC<~f zGF{V8)?b+)IdSO1r~41V-1O}A#yU1%It6dp|@8f*oH)*rCr1VKyYfA(j_Oxx_t#tdZQy4jMHf;c<(Zg$wr+;Qf{ zo$NyueTtPBZBZy9NG*h#whAqUmLm9|ROnNRn5tj}=|cme))xz|cQ(7xhuDFcbMC$8 zJLkLSXBJ8m&u<@ie1M{;?beuCCek9Wet#eNe*5G(m59f1aT-se8g4ofq(%U$LfZ13 z8CZr6n1AI89HywgS+6pUr|oggMLy@GHeBL|1Wi%H`;yRc8xYe~IO7F6^XsKA7}^6m zGnKIgJ2YV38*4>yvNch0TMbtQ%)Y(!aH0_hKEw{4__IN*B|6jbs}Vij<{7$Uf*U%s zL2BAA(FTejo#h196@)CEQ#s&N9k*H?q9s8Rc|qYtg%t!%Ry9STyAMOcMWCjY&CzZ! zveKD4#-YaZ&1REp${dPjcu`eVUXXZ6Vu=MC&j;8^*dQM4c`#w@MqY?L6ws+hr;6sV z&Jd~_ckn~o-gF$q-As|3@re`iA}8>^pI)qE9pf_mm&TUXab-S)d>O`QE^4-*XhIGESIp#DStQhB4B^T0xARz=gfo9*Nz>3U|e7 zMg$#ri%qzB+f89*xdhOc|wLyJLEqd)7v6#n5vrtKo*-L z1OqZR5gCyD0(X`S*L|h&O0nH;6ZOECtA~lWWSJwCKyI{E6k@gvt3-#feBSpMkHwbz#q_TMhOKefIR zS5EwNaLC=+xV#Kbz4+UQ-`QjLytT^j*i9EdUpxGOw|IPLGCtwGbmPX-((R-0OzZT` zg^NEQvmb7Mvis)OPyO=a9izO`w`=L`kKes>^w`?t1*vh)wuk^gU>URH_t7-vd&FRI`g2q2ZRQ5n)X z7mUIJ1oqUyIoL~4>&Bg8377JNnuS~rL^fRA^$D7ydi&}=u*M*!%W%~3bY^kp217fx z&WyzKLf%iqs?*;H;NHei(Q1rYs?GH6qI>Haao|D>=(;=Zg<4%_mi=l(kB)hUUN*sF zI@2Uo$`8|N6hJz`39Kau30hG(8@v(zEI`Rn0 zXaegDq1t?d>*w>Uj=gXtQzU169r(P+3B2n@4_melaRI)ev8Hucobn-GfFYU)EK-n4 zcMD9C_x?bUAz`EK2^>-tFm57i!i65rnL0ymINPx`L9uO1j3?Qcny^``A_EqvqQZ(5 zTT&~rgbd48%g(#GlfJZmW>%LY|aZY@GRJh?U2|_tekx> zR!avEU=$P)8gI41a1~(`R*_Fj5+~C=BaUaITDUW+QS-?r44g@5X9MKY%SqOpH3%3P zQHhCh!;Bm0hSO{~2};#RQfcVc-$hL1Yrt&V9Okv5Ff)d3)z z)e(XonVWzNNN%KDA;Z-^JXp*uEiDms-_2jAiTFNeri%4@3&#dF9~M5`pg+HX6?enk z?-nN4fAQiX1KQ_*8Ms}Q@0Dhs_5B?lO?GWLA=$6z|Cw(X2R}O3e?i{beX`N{)!g|j zCmvI$ir0TC-oD<|dG`LyRQvs_mp2U@IQH$6>X%h{;hP8BMoYIA`~Up+=SPpLFS*%= z+qX_n58g3PpYA-4UtQ~2T$=rF?lbtq{s&KccK&|!uZ2HISc7kCr!YgENw)pCgV3dN MnIZF%@%5qq0W&s+EdT%j diff --git a/assets/icons/Scenes/Swimming/upright1_73x61.png b/assets/icons/Scenes/Swimming/upright1_73x61.png deleted file mode 100644 index 27a6f0a00cb53a140e0472d544782ac60e1c7880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmaJ=ZD`bH91m8;c4}e!GIdxVQoFffUN4t6p;3EDZVmJ5ah})@3e6?YwV_R(m^}5a z1qYkmhwZ}{Oqh&q4BTLhp^gn52$pFTs^ClO%P1mjAWqrl7r%(g`J}z8e&`G&&rANl z-~ac2`?%2e?yA(<6h%?1tX`u?R*Ssa%Pr)4z3o?pENigYk9VL7uG$f#dR$b7!1C=u zScJAaws#tKQ&h`{SL(<8`E9C$eAZ5E*qR>_G(~l9sfD&P3^6FfK`+qg`zI%9;JF&T zE0gE*p$><<-th?T81E}NB!=hJw4zE9XgoA=7r7O+Xyh8s z$VsDzFb-9Yt5&OQHO-=EkP{R|;dqe~MTS@~@mPTE8WY6rO$GzTPUMByLjgz_?J^q0 z8cn1w#Ndbd{33A>H!?+X#?|bQ6Ih<}{Uoq?>lhc|GZ{--$EC3lazz-U(a0eMskAr2 zBzZ4(lo%2<>h{PZRk245OF3OujI1OGf|>0yOVAKDL<%k$A>5%6-rg=r$Fxf5+068p< z5DduNL}WnLiyuvq;d-gCtz_2gb+X-gdiH&?9Jh>~Qf=<$jo(uf{7Uo6t$N*i{qWzH zTMvw#*vR}=Y_+V}Kju;^KKu5Gb@<_wesA}g)Gy+9NB5k2rFY^rul3;7j>!|7Ke#tN zI$bzQ>ubLjW`6A3Fjx8k?0s~0^8U{o{yKHx)Og#UhX$D=9<~NZ+w65y^cH8f&JdK^AApbGIRH*$6LF(vUTmw i=dVJm?ZMRC^3~L(f2c2yEZh1HiGZ@qKI2Gs;KQd!e2<3! diff --git a/assets/icons/Scenes/Swimming/upright2_73x61.png b/assets/icons/Scenes/Swimming/upright2_73x61.png deleted file mode 100644 index d371b00eeebc7fa24a433b3b62206291eab443d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1159 zcmaJ=TWAzl7#=E$M)Q)^TP)=;DaC+u-%Do5ChY7P%|bSAH!JR2ot-(G9kVlMoH^-E zLhFNwDA<=2K@=(VL1?|9NTK9GNGU~Vp`xg*So$C$Ua|B|WIdDYMjxUBGyi|i{NMk7 z|LsU|Y)5xjZx_Qb-T4t%qB2k4%<2{Nd+U=cDixcFQ6b~FMw(`Tn5>Pf2;^OJ0+oSEG7-EwEt0giL1GMN*YQ z5#(@yK#CVROB7Qet@5^6HLYrO8<0g=62yccB{)&k6je(kK>J~7xWKMyCAhsEjGi)V zoe*CWgl4nJHx(WS6N03wsvydOEOXR?3#UC|Mw}P+bv!^6T7lye2YVp)XjbtQ$*`2_ zVh*lfC@eYl!gi%-&4kGG1&J30*NqcfuntKHy`izJby%MEkx)V*o(e45kXl~{OpEva zK(QfZqwNeF+7+__u{Gr)kK|#7rGI$au{AMm+m@6Z;1o4wb5<>3a;7S!IjLsLYE4Nc zP}S=ASr!joGs68zSz`rXa3~1 z4du(T8&98KZ@k#>aP^ss*X1>QRGzV(R=!O?{jv8%|MzUL>!Z*A|6$L+jo-fc^wDQU zx$D>SQ-93mN3W*Oo__piZPoEC`_-*uXTQEX|MQ{IqjSHP?hLO5xcAi1y`NqUcg=1c z`sez&FZ%x5`{B#liP;;X($C($e;AJc(nDk7k3U$)5XhVvIq;yLQf2bS7`&kGIq({w CnSRj# From f02cec45a0f4d2588c196137e673f5bae7cb93c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Tue, 17 Aug 2021 12:41:08 +0300 Subject: [PATCH 09/18] [FL-1473, FL-1651] Update STM32CubeWB to latest version. Radio firmware bundle. (#642) * FuriHal: update STM32CubeWB to latest version. * Makefile: debug other script * FuriHal: correctly handle 0 size transfers in VCP * Dolphin: cleanup and minor timer tuning. * FuriHal: update FreeRTOS config with bigger timer command queue. * FuriHal: delayed irq enabling, fixes missing ticks. * FuriHal: use SFSA to determine free space for internal FS, update linker script to use as much space as theoretically possible. * Scripts: update core2 flashing scripts and OB data. * Github: bundle resources, core2 firmware and supplementary data. * GitHub: versioning for supplemental artifacts --- .github/workflows/build.yml | 20 +++++++++ applications/dolphin/dolphin.c | 2 +- applications/dolphin/dolphin_i.h | 2 - assets/resources/irda/universal/tv.ir | 45 +++++++++++++++++++ firmware/targets/f6/Inc/FreeRTOSConfig.h | 39 +++++++++------- firmware/targets/f6/Src/usbd_cdc_if.c | 4 +- firmware/targets/f6/ble-glue/app_debug.c | 3 +- firmware/targets/f6/furi-hal/furi-hal-flash.c | 5 ++- firmware/targets/f6/furi-hal/furi-hal-os.c | 8 ++-- .../targets/f6/stm32wb55xx_flash_cm4_boot.ld | 3 +- .../f6/stm32wb55xx_flash_cm4_no_boot.ld | 3 +- lib/STM32CubeWB | 2 +- make/rules.mk | 20 +++------ scripts/flash_core2_ble_swd.sh | 4 +- scripts/ob.data | 4 +- 15 files changed, 115 insertions(+), 49 deletions(-) create mode 100755 assets/resources/irda/universal/tv.ir diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 84c85d0b..2847c284 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -136,6 +136,26 @@ jobs: >> artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin done + - name: 'Bundle core2 firmware' + run: | + test -d core2_firmware && rm -rf core2_firmware || true + mkdir core2_firmware + cp \ + lib/STM32CubeWB/package.xml \ + lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/stm32wb5x_FUS_fw.bin \ + lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/stm32wb5x_FUS_fw_for_fus_0_5_3.bin \ + lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/stm32wb5x_BLE_Stack_full_fw.bin \ + core2_firmware + tar czpf artifacts/flipper-z-core2_firmware-${SUFFIX}.tgz core2_firmware + + - name: 'Bundle scripts' + run: | + tar czpf artifacts/flipper-z-scripts-${SUFFIX}.tgz scripts + + - name: 'Bundle resources' + run: | + tar czpf artifacts/flipper-z-resources-${SUFFIX}.tgz -C assets resources + - name: 'Upload artifacts to update server' uses: burnett01/rsync-deployments@4.1 with: diff --git a/applications/dolphin/dolphin.c b/applications/dolphin/dolphin.c index 245746a5..51eed34b 100644 --- a/applications/dolphin/dolphin.c +++ b/applications/dolphin/dolphin.c @@ -117,7 +117,7 @@ bool dolphin_view_idle_main_input(InputEvent* event, void* context) { with_value_mutex( dolphin->menu_vm, (Menu * menu) { menu_ok(menu); }); } else if(event->key == InputKeyUp && event->type == InputTypeShort) { - osTimerStart(dolphin->timeout_timer, 40); + osTimerStart(dolphin->timeout_timer, 64); view_dispatcher_switch_to_view(dolphin->idle_view_dispatcher, DolphinViewLockMenu); } else if(event->key == InputKeyDown && event->type == InputTypeShort) { dolphin_switch_to_app(dolphin, &FLIPPER_ARCHIVE); diff --git a/applications/dolphin/dolphin_i.h b/applications/dolphin/dolphin_i.h index 3f47e2c3..cd562492 100644 --- a/applications/dolphin/dolphin_i.h +++ b/applications/dolphin/dolphin_i.h @@ -46,8 +46,6 @@ struct Dolphin { View* idle_view_first_start; View* idle_view_main; View* idle_view_dolphin_stats; - View* idle_view_down; - View* idle_view_meta; View* view_hw_mismatch; View* view_lockmenu; ViewPort* lock_viewport; diff --git a/assets/resources/irda/universal/tv.ir b/assets/resources/irda/universal/tv.ir new file mode 100755 index 00000000..6dbbf760 --- /dev/null +++ b/assets/resources/irda/universal/tv.ir @@ -0,0 +1,45 @@ +POWER Samsung32 A:07 C:02 +POWER NEC A:50 C:17 +POWER NEC A:40 C:12 +POWER NECext A:4931 C:63 +POWER NEC A:AA C:1C +POWER NEC A:AA C:1C +POWER NEC A:AA C:1C +POWER NEC A:AA C:1C +POWER NEC A:38 C:1C +POWER NECext A:7A83 C:08 +POWER NEC A:53 C:17 +POWER NECext A:1818 C:C0 +POWER NEC A:38 C:10 +POWER NEC A:AA C:C5 +POWER NEC A:04 C:08 +POWER NEC A:18 C:08 +POWER NEC A:71 C:08 +POWER NECext A:6F80 C:0A +POWER NEC A:48 C:00 +POWER NECext A:7B80 C:13 +#POWER Samsung32 A:0E C:14 +POWER NECext A:7E80 C:18 +POWER NEC A:50 C:08 + +VOL- NECext A:DF00 C:4F +CH+ NECext A:DF00 C:09 +CH- NECext A:DF00 C:05 +MUTE NECext A:DF00 C:08 + +// Microlab (Not TV) +POWER NEC A:00 C:00 +MUTE NEC A:00 C:02 +VOL+ NEC A:00 C:11 +VOL- NEC A:00 C:10 + +// Skyworth +POWER Samsung32 A:0E C:0C +MUTE Samsung32 A:0E C:0D +VOL+ Samsung32 A:0E C:14 +VOL- Samsung32 A:0E C:15 +CH- Samsung32 A:0E C:12 +CH+ Samsung32 A:0E C:13 + +// LG (Goldstar) +MUTE NEC A diff --git a/firmware/targets/f6/Inc/FreeRTOSConfig.h b/firmware/targets/f6/Inc/FreeRTOSConfig.h index 748fc7f6..5d2befde 100644 --- a/firmware/targets/f6/Inc/FreeRTOSConfig.h +++ b/firmware/targets/f6/Inc/FreeRTOSConfig.h @@ -51,17 +51,16 @@ #if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) #include extern uint32_t SystemCoreClock; - void xPortSysTickHandler(void); -/* USER CODE BEGIN 0 */ - extern void configureTimerForRunTimeStats(void); - extern unsigned long getRunTimeCounterValue(void); -/* USER CODE END 0 */ #endif +#ifndef CMSIS_device_header +#define CMSIS_device_header "stm32wbxx.h" +#endif /* CMSIS_device_header */ + #define configENABLE_FPU 1 #define configENABLE_MPU 1 #define configUSE_PREEMPTION 1 -#define configSUPPORT_STATIC_ALLOCATION 1 +#define configSUPPORT_STATIC_ALLOCATION 0 #define configSUPPORT_DYNAMIC_ALLOCATION 1 #define configUSE_IDLE_HOOK 0 #define configUSE_TICK_HOOK 0 @@ -100,22 +99,24 @@ /* Software timer definitions. */ #define configUSE_TIMERS 1 #define configTIMER_TASK_PRIORITY ( 2 ) -#define configTIMER_QUEUE_LENGTH 10 +#define configTIMER_QUEUE_LENGTH 32 #define configTIMER_TASK_STACK_DEPTH 256 /* Set the following definitions to 1 to include the API function, or zero to exclude the API function. */ -#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 1 #define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskCleanUpResources 0 #define INCLUDE_vTaskDelay 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_xQueueGetMutexHolder 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 #define INCLUDE_xTaskGetSchedulerState 1 #define INCLUDE_xTimerPendFunctionCall 1 -#define INCLUDE_xQueueGetMutexHolder 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_eTaskGetState 1 /* * The CMSIS-RTOS V2 FreeRTOS wrapper is dependent on the heap implementation used @@ -159,9 +160,13 @@ standard names. */ #define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler -/* IMPORTANT: This define is commented when used with STM32Cube firmware, when the timebase source is SysTick, - to prevent overwriting SysTick_Handler defined within STM32Cube HAL */ +/* IMPORTANT: After 10.3.1 update, Systick_Handler comes from NVIC (if SYS timebase = systick), otherwise from cmsis_os2.c */ -/* #define xPortSysTickHandler SysTick_Handler */ +#define USE_CUSTOM_SYSTICK_HANDLER_IMPLEMENTATION 1 + +/* USER CODE BEGIN Defines */ +/* Section where parameter definitions can be added (for instance, to override default ones in FreeRTOS.h) */ +#define configOVERRIDE_DEFAULT_TICK_CONFIGURATION 1 /* required only for Keil but does not hurt otherwise */ +/* USER CODE END Defines */ #endif /* FREERTOS_CONFIG_H */ diff --git a/firmware/targets/f6/Src/usbd_cdc_if.c b/firmware/targets/f6/Src/usbd_cdc_if.c index 8a7b5913..b18c5a56 100644 --- a/firmware/targets/f6/Src/usbd_cdc_if.c +++ b/firmware/targets/f6/Src/usbd_cdc_if.c @@ -241,7 +241,9 @@ static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length) static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) { /* USER CODE BEGIN 6 */ - _furi_hal_vcp_rx_callback((char*)Buf, *Len); + if (*Len) { + _furi_hal_vcp_rx_callback((char*)Buf, *Len); + } USBD_CDC_ReceivePacket(&hUsbDeviceFS); return (USBD_OK); /* USER CODE END 6 */ diff --git a/firmware/targets/f6/ble-glue/app_debug.c b/firmware/targets/f6/ble-glue/app_debug.c index 0e09f44f..e1c29b46 100644 --- a/firmware/targets/f6/ble-glue/app_debug.c +++ b/firmware/targets/f6/ble-glue/app_debug.c @@ -52,12 +52,13 @@ typedef PACKED_STRUCT * THIS SHALL BE SET TO A VALUE DIFFERENT FROM 0 ONLY ON REQUEST FROM ST SUPPORT */ #define BLE_DTB_CFG 0 +#define SYS_DBG_CFG1 (SHCI_C2_DEBUG_OPTIONS_IPCORE_LP | SHCI_C2_DEBUG_OPTIONS_CPU2_STOP_EN) /* USER CODE END PD */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static SHCI_C2_DEBUG_TracesConfig_t APPD_TracesConfig={0, 0, 0, 0}; -PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static SHCI_C2_DEBUG_GeneralConfig_t APPD_GeneralConfig={BLE_DTB_CFG, {0, 0, 0}}; +PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static SHCI_C2_DEBUG_GeneralConfig_t APPD_GeneralConfig={BLE_DTB_CFG, SYS_DBG_CFG1, {0, 0}}; /** * THE DEBUG ON GPIO FOR CPU2 IS INTENDED TO BE USED ONLY ON REQUEST FROM ST SUPPORT diff --git a/firmware/targets/f6/furi-hal/furi-hal-flash.c b/firmware/targets/f6/furi-hal/furi-hal-flash.c index 0cd80313..5346965f 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-flash.c +++ b/firmware/targets/f6/furi-hal/furi-hal-flash.c @@ -5,7 +5,6 @@ /* Free flash space borders, exported by linker */ extern const void __free_flash_start__; -extern const void __free_flash_end__; #define FURI_HAL_FLASH_READ_BLOCK 8 #define FURI_HAL_FLASH_WRITE_BLOCK 8 @@ -37,7 +36,9 @@ const void* furi_hal_flash_get_free_start_address() { } const void* furi_hal_flash_get_free_end_address() { - return &__free_flash_end__; + FLASH_OBProgramInitTypeDef pOBInit; + HAL_FLASHEx_OBGetConfig(&pOBInit); + return (const void *)pOBInit.SecureFlashStartAddr; } size_t furi_hal_flash_get_free_page_start_address() { diff --git a/firmware/targets/f6/furi-hal/furi-hal-os.c b/firmware/targets/f6/furi-hal/furi-hal-os.c index 0e55df53..eb1811b6 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-os.c +++ b/firmware/targets/f6/furi-hal/furi-hal-os.c @@ -26,6 +26,8 @@ void furi_hal_os_timer_callback() { } #endif +extern void xPortSysTickHandler(); + volatile uint32_t furi_hal_os_skew = 0; void furi_hal_os_init() { @@ -122,9 +124,6 @@ void vPortSuppressTicksAndSleep(TickType_t expected_idle_ticks) { // Sleep and track how much ticks we spent sleeping uint32_t completed_ticks = furi_hal_os_sleep(expected_idle_ticks); - // Reenable IRQ - __enable_irq(); - // Notify system about time spent in sleep if (completed_ticks > 0) { if (completed_ticks > expected_idle_ticks) { @@ -133,6 +132,9 @@ void vPortSuppressTicksAndSleep(TickType_t expected_idle_ticks) { vTaskStepTick(completed_ticks); } } + + // Reenable IRQ + __enable_irq(); } void vApplicationStackOverflowHook(TaskHandle_t xTask, signed char *pcTaskName) { diff --git a/firmware/targets/f6/stm32wb55xx_flash_cm4_boot.ld b/firmware/targets/f6/stm32wb55xx_flash_cm4_boot.ld index faa4301b..f87127cc 100644 --- a/firmware/targets/f6/stm32wb55xx_flash_cm4_boot.ld +++ b/firmware/targets/f6/stm32wb55xx_flash_cm4_boot.ld @@ -55,7 +55,7 @@ _Min_Stack_Size = 0x1000; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 780K +FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 992K RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 0x2FFFC RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K } @@ -173,7 +173,6 @@ SECTIONS { __free_flash_start__ = .; . = ORIGIN(FLASH) + LENGTH(FLASH); - __free_flash_end__ = .; } >FLASH /* Remove information from the standard libraries */ diff --git a/firmware/targets/f6/stm32wb55xx_flash_cm4_no_boot.ld b/firmware/targets/f6/stm32wb55xx_flash_cm4_no_boot.ld index 095f368b..ac7a1015 100644 --- a/firmware/targets/f6/stm32wb55xx_flash_cm4_no_boot.ld +++ b/firmware/targets/f6/stm32wb55xx_flash_cm4_no_boot.ld @@ -55,7 +55,7 @@ _Min_Stack_Size = 0x1000; /* required amount of stack */ /* Specify the memory areas */ MEMORY { -FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 812K +FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K RAM1 (xrw) : ORIGIN = 0x20000004, LENGTH = 0x2FFFC RAM_SHARED (xrw) : ORIGIN = 0x20030000, LENGTH = 10K } @@ -173,7 +173,6 @@ SECTIONS { __free_flash_start__ = .; . = ORIGIN(FLASH) + LENGTH(FLASH); - __free_flash_end__ = .; } >FLASH /* Remove information from the standard libraries */ diff --git a/lib/STM32CubeWB b/lib/STM32CubeWB index 1c15728a..9e2dd9db 160000 --- a/lib/STM32CubeWB +++ b/lib/STM32CubeWB @@ -1 +1 @@ -Subproject commit 1c15728a3c08e42919024e2a3781862f7d6c86d7 +Subproject commit 9e2dd9db125fa53e0ec59f807eb8a052ab922583 diff --git a/make/rules.mk b/make/rules.mk index 79a24db3..48454638 100644 --- a/make/rules.mk +++ b/make/rules.mk @@ -88,22 +88,16 @@ debug: flash -ex "compare-sections" \ $(OBJ_DIR)/$(PROJECT).elf; \ +debug_other: + arm-none-eabi-gdb-py \ + -ex 'target extended-remote | openocd -c "gdb_port pipe" $(OPENOCD_OPTS)' \ + -ex "set confirm off" \ + -ex "source ../debug/PyCortexMDebug/PyCortexMDebug.py" \ + -ex "svd_load $(SVD_FILE)" \ + openocd: openocd $(OPENOCD_OPTS) -bm_debug: flash - set -m; blackmagic & echo $$! > $(OBJ_DIR)/agent.PID - arm-none-eabi-gdb-py \ - -ex "target extended-remote 127.0.0.1:2000" \ - -ex "set confirm off" \ - -ex "monitor debug_bmp enable"\ - -ex "monitor swdp_scan"\ - -ex "attach 1"\ - -ex "source ../debug/FreeRTOS/FreeRTOS.py" \ - $(OBJ_DIR)/$(PROJECT).elf; \ - kill `cat $(OBJ_DIR)/agent.PID`; \ - rm $(OBJ_DIR)/agent.PID - clean: @echo "\tCLEAN\t" @$(RM) $(OBJ_DIR)/* diff --git a/scripts/flash_core2_ble_swd.sh b/scripts/flash_core2_ble_swd.sh index df3c741f..1f04ba81 100755 --- a/scripts/flash_core2_ble_swd.sh +++ b/scripts/flash_core2_ble_swd.sh @@ -6,7 +6,7 @@ SCRIPT_DIR="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" COPRO_DIR="$PROJECT_DIR/lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x" -STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw_1_0_2.bin 0x080EC000 || true +STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw_for_fus_0_5_3.bin 0x080EC000 || true STM32_Programmer_CLI -c port=swd STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw.bin 0x080EC000 || true @@ -14,7 +14,7 @@ STM32_Programmer_CLI -c port=swd STM32_Programmer_CLI -c port=swd -fwdelete -STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_BLE_Stack_full_fw.bin 0x080CB000 firstinstall=0 +STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_BLE_Stack_full_fw.bin 0x080CA000 firstinstall=0 STM32_Programmer_CLI -c port=swd -ob nSWBOOT0=1 nBOOT0=1 diff --git a/scripts/ob.data b/scripts/ob.data index 25a852a5..2c2d7f6f 100644 --- a/scripts/ob.data +++ b/scripts/ob.data @@ -14,7 +14,7 @@ IWDGSTOP:0x1:rw IWDGSW:0x1:rw IPCCDBA:0x0:rw ESE:0x1:r -SFSA:0xCB:r +SFSA:0xCA:r FSD:0x0:r DDS:0x1:r C2OPT:0x1:r @@ -22,7 +22,7 @@ NBRSD:0x0:r SNBRSA:0xF:r BRSD:0x0:r SBRSA:0xA:r -SBRV:0x32C00:r +SBRV:0x32800:r PCROP1A_STRT:0x1FF:r PCROP1A_END:0x0:r PCROP_RDP:0x1:r From ac5c1cb4a09bb5aa6a5dc92a186f4a57b843f24a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nemanja=20Nedeljkovi=C4=87?= Date: Tue, 17 Aug 2021 12:38:47 +0200 Subject: [PATCH 10/18] Fix readme consistency issues (#652) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Correct notation for checked checkbox in markdown * Cleanup image and link notation for consistency * Syntax highlighting * Update alt for images and fix incorrect link Co-authored-by: あく --- ReadMe.md | 6 +++--- assets/ReadMe.md | 4 +++- bootloader/ReadMe.md | 6 +++--- scripts/ReadMe.md | 8 ++++++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index bf6f7664..5e0fd381 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,14 +2,14 @@ [![Discord](https://img.shields.io/discord/740930220399525928.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](http://flipperzero.one/discord) - +![Show me the code](https://habrastorage.org/webt/eo/m0/e4/eom0e4btudte7nrhnyic-laiog0.png) Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! Our goal is to create nice and clean code with good documentation, to make it a pleasure for everyone to work with. # Update firmware -Get Latest Firmware from Update Server +[Get Latest Firmware from Update Server](https://update.flipperzero.one/) Flipper Zero's firmware consists of three components: @@ -51,7 +51,7 @@ One liner: `./flash_core1_main.sh` - Press and hold `← Left` + `↩ Back` for reset - Release `← Left` and keep holding `↩ Back` until blue LED lights up - Release `↩ Back` - +![Switch to DFU sequence](https://habrastorage.org/webt/uu/c3/g2/uuc3g2n36f2sju19rskcvjzjf6w.png) 1. Run `dfu-util -D full.dfu -a 0` diff --git a/assets/ReadMe.md b/assets/ReadMe.md index 8ba044bd..307c27dc 100644 --- a/assets/ReadMe.md +++ b/assets/ReadMe.md @@ -6,7 +6,9 @@ # Compiling - make all +```bash +make all +``` # Asset naming rules diff --git a/bootloader/ReadMe.md b/bootloader/ReadMe.md index b6541994..19a99ac7 100644 --- a/bootloader/ReadMe.md +++ b/bootloader/ReadMe.md @@ -2,9 +2,9 @@ What it does? -- [+] Hardware initialization -- [+] Boot process LED indicators -- [+] Firmware update +- [x] Hardware initialization +- [x] Boot process LED indicators +- [x] Firmware update - [ ] Firmware CRC check - [ ] Interactive UI - [ ] FS check diff --git a/scripts/ReadMe.md b/scripts/ReadMe.md index e9018984..6517e87e 100644 --- a/scripts/ReadMe.md +++ b/scripts/ReadMe.md @@ -44,8 +44,12 @@ Also OB may be damaged, so we've made couple scripts to check and set option byt Checking option bytes: - ob.py check +```bash +ob.py check +``` Setting option bytes: - ob.py set \ No newline at end of file +```bash +ob.py set +``` From fe2b9718e1ab405acdc93208b34d7abec1da9a40 Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Tue, 17 Aug 2021 17:45:23 +0300 Subject: [PATCH 11/18] CI: Fix artifacts naming (#654) * Fix artifacts naming * Github: build on pull requests * Github: narrow build trigger criteria. Co-authored-by: Aleksandr Kutuzov --- .github/workflows/build.yml | 14 ++++++++++---- .github/workflows/lint_c.yml | 8 +++++++- .github/workflows/lint_python.yml | 8 +++++++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2847c284..9092cf27 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,12 @@ name: 'Build' -on: push +on: + push: + branches: + - dev + - "release*" + tags: + pull_request: env: TARGETS: f6 @@ -146,15 +152,15 @@ jobs: lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/stm32wb5x_FUS_fw_for_fus_0_5_3.bin \ lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x/stm32wb5x_BLE_Stack_full_fw.bin \ core2_firmware - tar czpf artifacts/flipper-z-core2_firmware-${SUFFIX}.tgz core2_firmware + tar czpf artifacts/flipper-z-any-core2_firmware-${SUFFIX}.tgz core2_firmware - name: 'Bundle scripts' run: | - tar czpf artifacts/flipper-z-scripts-${SUFFIX}.tgz scripts + tar czpf artifacts/flipper-z-any-scripts-${SUFFIX}.tgz scripts - name: 'Bundle resources' run: | - tar czpf artifacts/flipper-z-resources-${SUFFIX}.tgz -C assets resources + tar czpf artifacts/flipper-z-any-resources-${SUFFIX}.tgz -C assets resources - name: 'Upload artifacts to update server' uses: burnett01/rsync-deployments@4.1 diff --git a/.github/workflows/lint_c.yml b/.github/workflows/lint_c.yml index 39a7eabe..b094a1dd 100644 --- a/.github/workflows/lint_c.yml +++ b/.github/workflows/lint_c.yml @@ -1,6 +1,12 @@ name: 'Lint C/C++ with clang-format' -on: pull_request +on: + push: + branches: + - dev + - "release*" + tags: + pull_request: env: TARGETS: f6 diff --git a/.github/workflows/lint_python.yml b/.github/workflows/lint_python.yml index 4a70d48b..82f746ab 100644 --- a/.github/workflows/lint_python.yml +++ b/.github/workflows/lint_python.yml @@ -1,6 +1,12 @@ name: 'Python Lint' -on: pull_request +on: + push: + branches: + - dev + - "release*" + tags: + pull_request: jobs: lint_python: From 46502ac44afa9f0e9bfcbbd955e73a7cd45864f8 Mon Sep 17 00:00:00 2001 From: Anna Prosvetova Date: Tue, 17 Aug 2021 18:48:13 +0300 Subject: [PATCH 12/18] Comment on syntax errors (#656) --- .github/workflows/lint_c.yml | 16 ++++++++++++++-- docker/syntax_check.sh | 13 +++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint_c.yml b/.github/workflows/lint_c.yml index b094a1dd..d9be8f80 100644 --- a/.github/workflows/lint_c.yml +++ b/.github/workflows/lint_c.yml @@ -43,7 +43,19 @@ jobs: uses: ./.github/actions/docker - name: 'Check syntax' + id: syntax_check uses: ./.github/actions/docker - continue-on-error: false with: - run: /syntax_check.sh + run: SET_GH_OUTPUT=1 /syntax_check.sh + + - name: Report syntax errors + if: failure() && steps.syntax_check.outputs.errors && github.event.pull_request + uses: peter-evans/create-or-update-comment@v1 + with: + issue-number: ${{ github.event.pull_request.number }} + body: | + Please fix following syntax errors: + ``` + ${{ steps.syntax_check.outputs.errors }} + ``` + You might want to run `docker compose exec dev /syntax_check.sh` for an auto-fix. \ No newline at end of file diff --git a/docker/syntax_check.sh b/docker/syntax_check.sh index be74df29..0bd3466a 100755 --- a/docker/syntax_check.sh +++ b/docker/syntax_check.sh @@ -3,7 +3,6 @@ # set -e CLANG_FORMAT_BIN="/usr/bin/clang-format-12" -PATH="$HOME/.cargo/bin:${PATH}" PROJECT_DIR=$(pwd) @@ -19,14 +18,20 @@ C_FILES=$(find . \ ulimit -s 65536 $CLANG_FORMAT_BIN --version -$CLANG_FORMAT_BIN --verbose -style=file -n --Werror --ferror-limit=0 $C_FILES -c_syntax_rc=$? +errors=$($CLANG_FORMAT_BIN --verbose -style=file -n --Werror --ferror-limit=0 $C_FILES |& tee /dev/stderr | sed '/^Formatting/d') -if [[ $c_syntax_rc -eq 0 ]]; then +if [[ -z "$errors" ]]; then echo "Code looks fine for me!" exit 0 fi +if [[ -n "${SET_GH_OUTPUT}" ]]; then + errors="${errors//'%'/'%25'}" + errors="${errors//$'\n'/'%0A'}" + errors="${errors//$'\r'/'%0D'}" + echo "::set-output name=errors::$errors" +fi + read -p "Do you want fix syntax? (y/n): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1 cd $PROJECT_DIR From 274e9e85768cad799e41d8cdcea6671f85cf6eaf Mon Sep 17 00:00:00 2001 From: Maksim <63881742+youlovesaturn@users.noreply.github.com> Date: Tue, 17 Aug 2021 18:46:12 +0200 Subject: [PATCH 13/18] CI: Do not upload fork artifacts (#657) --- .github/workflows/build.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9092cf27..19d4b5bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -74,6 +74,7 @@ jobs: done - name: 'Generate full hex file' + if: ${{ !github.event.pull_request.head.repo.fork }} uses: ./.github/actions/docker with: run: | @@ -86,6 +87,7 @@ jobs: done - name: 'Move upload files' + if: ${{ !github.event.pull_request.head.repo.fork }} uses: ./.github/actions/docker with: run: | @@ -106,6 +108,7 @@ jobs: done - name: 'Generate full dfu file' + if: ${{ !github.event.pull_request.head.repo.fork }} uses: ./.github/actions/docker with: run: | @@ -118,6 +121,7 @@ jobs: done - name: 'Full flash asssembly: bootloader as base' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | for TARGET in ${TARGETS} do @@ -127,6 +131,7 @@ jobs: done - name: 'Full flash asssembly: bootloader padding' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | for TARGET in ${TARGETS} do @@ -134,6 +139,7 @@ jobs: done - name: 'Full flash asssembly: append firmware' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | for TARGET in ${TARGETS} do @@ -143,6 +149,7 @@ jobs: done - name: 'Bundle core2 firmware' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | test -d core2_firmware && rm -rf core2_firmware || true mkdir core2_firmware @@ -155,14 +162,17 @@ jobs: tar czpf artifacts/flipper-z-any-core2_firmware-${SUFFIX}.tgz core2_firmware - name: 'Bundle scripts' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | tar czpf artifacts/flipper-z-any-scripts-${SUFFIX}.tgz scripts - name: 'Bundle resources' + if: ${{ !github.event.pull_request.head.repo.fork }} run: | tar czpf artifacts/flipper-z-any-resources-${SUFFIX}.tgz -C assets resources - name: 'Upload artifacts to update server' + if: ${{ !github.event.pull_request.head.repo.fork }} uses: burnett01/rsync-deployments@4.1 with: switches: -avzP --delete @@ -174,6 +184,7 @@ jobs: remote_key: ${{ secrets.RSYNC_DEPLOY_KEY }} - name: 'Trigger update server reindex' + if: ${{ !github.event.pull_request.head.repo.fork }} uses: wei/curl@master with: args: -X POST -F 'key=${{ secrets.REINDEX_KEY }}' ${{ secrets.REINDEX_URL }} From d04deb48b8f740e1c7c54cd241813308ac2ff9d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Wed, 18 Aug 2021 18:06:55 +0300 Subject: [PATCH 14/18] Dolphin: fix archive double start crash (#659) --- applications/dolphin/dolphin.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/applications/dolphin/dolphin.c b/applications/dolphin/dolphin.c index 51eed34b..cdcef27e 100644 --- a/applications/dolphin/dolphin.c +++ b/applications/dolphin/dolphin.c @@ -10,9 +10,15 @@ static void dolphin_switch_to_app(Dolphin* dolphin, const FlipperApplication* fl furi_assert(flipper_app->app); furi_assert(flipper_app->name); + if(furi_thread_get_state(dolphin->scene_thread) != FuriThreadStateStopped) { + FURI_LOG_E("Dolphin", "Thread is already running"); + return; + } + furi_thread_set_name(dolphin->scene_thread, flipper_app->name); furi_thread_set_stack_size(dolphin->scene_thread, flipper_app->stack_size); furi_thread_set_callback(dolphin->scene_thread, flipper_app->app); + furi_thread_start(dolphin->scene_thread); } From 9d38f28de72dae99034d5770d56fb12a87d2a6f6 Mon Sep 17 00:00:00 2001 From: SG Date: Thu, 19 Aug 2021 08:06:18 +1000 Subject: [PATCH 15/18] [FL-1682] Faster file receiving function. Storage management scripts. (#647) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Storage-cli: the file write function is splitted into a function for working with text and function for raw data * Storage-cli: read_chunks, renamed write_raw to write_chunk * Storage-cli: fix typo * SD Hal: fixed wrong read/write block address * HAL-console: printf * Storage benchmark: more popular sizes * Toolbox: md5 * Storage-cli: better read_chunks function, md5 hash function * Notification: fixed incorrect error message when loading settings * Storage-cli: stat command * Storage-cli: stat, "/" is also storage * Scripts: add storage managment script * Scripts, storage lib: send command with known response syntax instead of SOH * Scripts: python3 from env * Storage-cli: fixed mess with error texts * Storage-cli: write, show welcome message only if we didn't have any errors * Storage: poorly fixed folders copying * Storage: close an old file if an error occurred while opening a new file * Storage-cli: fixed storage info spacing * Scripts: use positional arguments in storage. * Scripts: explicit string encoding and decoding, documentation in comments. Co-authored-by: あく --- applications/notification/notification-app.c | 2 +- .../scenes/storage-settings-benchmark.c | 2 +- applications/storage/storage-cli.c | 278 ++++++++++--- applications/storage/storage-processing.c | 100 ++--- .../targets/f6/furi-hal/furi-hal-console.c | 11 + .../targets/f6/furi-hal/furi-hal-console.h | 2 + lib/toolbox/md5.c | 299 ++++++++++++++ lib/toolbox/md5.h | 83 ++++ scripts/flipper/__init__.py | 0 scripts/flipper/storage.py | 375 ++++++++++++++++++ scripts/storage.py | 267 +++++++++++++ 11 files changed, 1314 insertions(+), 105 deletions(-) create mode 100644 lib/toolbox/md5.c create mode 100644 lib/toolbox/md5.h create mode 100644 scripts/flipper/__init__.py create mode 100644 scripts/flipper/storage.py create mode 100755 scripts/storage.py diff --git a/applications/notification/notification-app.c b/applications/notification/notification-app.c index 69ac043d..22b6794e 100644 --- a/applications/notification/notification-app.c +++ b/applications/notification/notification-app.c @@ -333,7 +333,7 @@ static bool notification_load_settings(NotificationApp* app) { FURI_LOG_E( "notification", "version(%d != %d) mismatch", - app->settings.version, + settings.version, NOTIFICATION_SETTINGS_VERSION); } else { osKernelLock(); diff --git a/applications/storage-settings/scenes/storage-settings-benchmark.c b/applications/storage-settings/scenes/storage-settings-benchmark.c index 260e06a5..bc83e707 100644 --- a/applications/storage-settings/scenes/storage-settings-benchmark.c +++ b/applications/storage-settings/scenes/storage-settings-benchmark.c @@ -81,7 +81,7 @@ static void storage_settings_benchmark(StorageSettings* app) { bench_data[i] = (uint8_t)i; } - uint16_t bench_size[BENCH_COUNT] = {1, 8, 32, 256, 1024, 4096}; + uint16_t bench_size[BENCH_COUNT] = {1, 8, 32, 256, 512, 1024}; uint32_t bench_w_speed[BENCH_COUNT] = {0, 0, 0, 0, 0, 0}; uint32_t bench_r_speed[BENCH_COUNT] = {0, 0, 0, 0, 0, 0}; diff --git a/applications/storage/storage-cli.c b/applications/storage/storage-cli.c index a67378a3..f5520e0e 100644 --- a/applications/storage/storage-cli.c +++ b/applications/storage/storage-cli.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -25,32 +26,23 @@ void storage_cli_print_usage() { printf("\tformat\t - format filesystem\r\n"); printf("\tlist\t - list files and dirs\r\n"); printf("\tremove\t - delete the file or directory\r\n"); - printf("\tread\t - read data from file and print file size and content to cli\r\n"); + printf("\tread\t - read text from file and print file size and content to cli\r\n"); printf( - "\twrite\t - read data from cli and append it to file, should contain how many bytes you want to write\r\n"); + "\tread_chunks\t - read data from file and print file size and content to cli, should contain how many bytes you want to read in block\r\n"); + printf("\twrite\t - read text from cli and append it to file, stops by ctrl+c\r\n"); + printf( + "\twrite_chunk\t - read data from cli and append it to file, should contain how many bytes you want to write\r\n"); printf("\tcopy\t - copy file to new file, must contain new path\r\n"); printf("\trename\t - move file to new file, must contain new path\r\n"); printf("\tmkdir\t - creates a new directory\r\n"); + printf("\tmd5\t - md5 hash of the file\r\n"); + printf("\tstat\t - info about file or dir\r\n"); }; void storage_cli_print_error(FS_Error error) { printf("Storage error: %s\r\n", storage_error_get_desc(error)); } -void storage_cli_print_path_error(string_t path, FS_Error error) { - printf( - "Storage error for path \"%s\": %s\r\n", - string_get_cstr(path), - storage_error_get_desc(error)); -} - -void storage_cli_print_file_error(string_t path, File* file) { - printf( - "Storage error for path \"%s\": %s\r\n", - string_get_cstr(path), - storage_file_get_error_desc(file)); -} - void storage_cli_info(Cli* cli, string_t path) { Storage* api = furi_record_open("storage"); @@ -60,10 +52,10 @@ void storage_cli_info(Cli* cli, string_t path) { FS_Error error = storage_common_fs_info(api, "/int", &total_space, &free_space); if(error != FSE_OK) { - storage_cli_print_path_error(path, error); + storage_cli_print_error(error); } else { printf( - "Label: %s\r\nType: LittleFS\r\n%lu KB total\r\n%lu KB free\r\n", + "Label: %s\r\nType: LittleFS\r\n%luKB total\r\n%luKB free\r\n", furi_hal_version_get_name_ptr() ? furi_hal_version_get_name_ptr() : "Unknown", (uint32_t)(total_space / 1024), (uint32_t)(free_space / 1024)); @@ -73,10 +65,10 @@ void storage_cli_info(Cli* cli, string_t path) { FS_Error error = storage_sd_info(api, &sd_info); if(error != FSE_OK) { - storage_cli_print_path_error(path, error); + storage_cli_print_error(error); } else { printf( - "Label: %s\r\nType: %s\r\n%lu KB total\r\n%lu KB free\r\n", + "Label: %s\r\nType: %s\r\n%luKB total\r\n%luKB free\r\n", sd_info.label, sd_api_get_fs_type_text(sd_info.fs_type), sd_info.kb_total, @@ -91,7 +83,7 @@ void storage_cli_info(Cli* cli, string_t path) { void storage_cli_format(Cli* cli, string_t path) { if(string_cmp_str(path, "/int") == 0) { - storage_cli_print_path_error(path, FSE_NOT_IMPLEMENTED); + storage_cli_print_error(FSE_NOT_IMPLEMENTED); } else if(string_cmp_str(path, "/ext") == 0) { printf("Formatting SD card, all data will be lost. Are you sure (y/n)?\r\n"); char answer = cli_getc(cli); @@ -102,7 +94,7 @@ void storage_cli_format(Cli* cli, string_t path) { FS_Error error = storage_sd_format(api); if(error != FSE_OK) { - storage_cli_print_path_error(path, error); + storage_cli_print_error(error); } else { printf("SD card was successfully formatted.\r\n"); } @@ -142,7 +134,7 @@ void storage_cli_list(Cli* cli, string_t path) { printf("\tEmpty\r\n"); } } else { - storage_cli_print_file_error(path, file); + storage_cli_print_error(storage_file_get_error(file)); } storage_dir_close(file); @@ -172,7 +164,7 @@ void storage_cli_read(Cli* cli, string_t path) { free(data); } else { - storage_cli_print_file_error(path, file); + storage_cli_print_error(storage_file_get_error(file)); } storage_file_close(file); @@ -181,52 +173,126 @@ void storage_cli_read(Cli* cli, string_t path) { furi_record_close("storage"); } -void storage_cli_write(Cli* cli, string_t path, string_t args) { +void storage_cli_write(Cli* cli, string_t path) { Storage* api = furi_record_open("storage"); File* file = storage_file_alloc(api); - uint32_t size; - int parsed_count = sscanf(string_get_cstr(args), "%lu", &size); + const uint16_t buffer_size = 512; + uint8_t* buffer = furi_alloc(buffer_size); + + if(storage_file_open(file, string_get_cstr(path), FSAM_WRITE, FSOM_OPEN_APPEND)) { + printf("Just write your text data. New line by Ctrl+Enter, exit by Ctrl+C.\r\n"); + + uint32_t readed_index = 0; + + while(true) { + uint8_t symbol = cli_getc(cli); + + if(symbol == CliSymbolAsciiETX) { + uint16_t write_size = readed_index % buffer_size; + + if(write_size > 0) { + uint16_t writed_size = storage_file_write(file, buffer, write_size); + + if(writed_size != write_size) { + storage_cli_print_error(storage_file_get_error(file)); + } + break; + } + } + + buffer[readed_index % buffer_size] = symbol; + printf("%c", buffer[readed_index % buffer_size]); + fflush(stdout); + readed_index++; + + if(((readed_index % buffer_size) == 0)) { + uint16_t writed_size = storage_file_write(file, buffer, buffer_size); + + if(writed_size != buffer_size) { + storage_cli_print_error(storage_file_get_error(file)); + break; + } + } + } + printf("\r\n"); + + } else { + storage_cli_print_error(storage_file_get_error(file)); + } + storage_file_close(file); + + free(buffer); + storage_file_free(file); + furi_record_close("storage"); +} + +void storage_cli_read_chunks(Cli* cli, string_t path, string_t args) { + Storage* api = furi_record_open("storage"); + File* file = storage_file_alloc(api); + + uint32_t buffer_size; + int parsed_count = sscanf(string_get_cstr(args), "%lu", &buffer_size); + + if(parsed_count == EOF || parsed_count != 1) { + storage_cli_print_usage(); + } else if(storage_file_open(file, string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) { + uint8_t* data = furi_alloc(buffer_size); + uint64_t file_size = storage_file_size(file); + + printf("Size: %lu\r\n", (uint32_t)file_size); + + while(file_size > 0) { + printf("\r\nReady?\r\n"); + cli_getc(cli); + + uint16_t readed_size = storage_file_read(file, data, buffer_size); + for(uint16_t i = 0; i < readed_size; i++) { + putchar(data[i]); + } + file_size -= readed_size; + } + printf("\r\n"); + + free(data); + } else { + storage_cli_print_error(storage_file_get_error(file)); + } + + storage_file_close(file); + storage_file_free(file); + + furi_record_close("storage"); +} + +void storage_cli_write_chunk(Cli* cli, string_t path, string_t args) { + Storage* api = furi_record_open("storage"); + File* file = storage_file_alloc(api); + + uint32_t buffer_size; + int parsed_count = sscanf(string_get_cstr(args), "%lu", &buffer_size); if(parsed_count == EOF || parsed_count != 1) { storage_cli_print_usage(); } else { if(storage_file_open(file, string_get_cstr(path), FSAM_WRITE, FSOM_OPEN_APPEND)) { - const uint16_t write_size = 8; - uint32_t readed_index = 0; - uint8_t* data = furi_alloc(write_size); + printf("Ready\r\n"); - while(true) { - data[readed_index % write_size] = cli_getc(cli); - printf("%c", data[readed_index % write_size]); - fflush(stdout); - readed_index++; + uint8_t* buffer = furi_alloc(buffer_size); - if(((readed_index % write_size) == 0)) { - uint16_t writed_size = storage_file_write(file, data, write_size); - - if(writed_size != write_size) { - storage_cli_print_file_error(path, file); - break; - } - } else if(readed_index == size) { - uint16_t writed_size = storage_file_write(file, data, size % write_size); - - if(writed_size != (size % write_size)) { - storage_cli_print_file_error(path, file); - break; - } - } - - if(readed_index == size) { - break; - } + for(uint32_t i = 0; i < buffer_size; i++) { + buffer[i] = cli_getc(cli); } - printf("\r\n"); - free(data); + uint16_t writed_size = storage_file_write(file, buffer, buffer_size); + + if(writed_size != buffer_size) { + storage_cli_print_error(storage_file_get_error(file)); + } + + free(buffer); } else { - storage_cli_print_file_error(path, file); + storage_cli_print_error(storage_file_get_error(file)); } storage_file_close(file); } @@ -235,6 +301,45 @@ void storage_cli_write(Cli* cli, string_t path, string_t args) { furi_record_close("storage"); } +void storage_cli_stat(Cli* cli, string_t path) { + Storage* api = furi_record_open("storage"); + + if(string_cmp_str(path, "/") == 0) { + printf("Storage\r\n"); + } else if( + string_cmp_str(path, "/ext") == 0 || string_cmp_str(path, "/int") == 0 || + string_cmp_str(path, "/any") == 0) { + uint64_t total_space; + uint64_t free_space; + FS_Error error = + storage_common_fs_info(api, string_get_cstr(path), &total_space, &free_space); + + if(error != FSE_OK) { + storage_cli_print_error(error); + } else { + printf( + "Storage, %luKB total, %luKB free\r\n", + (uint32_t)(total_space / 1024), + (uint32_t)(free_space / 1024)); + } + } else { + FileInfo fileinfo; + FS_Error error = storage_common_stat(api, string_get_cstr(path), &fileinfo); + + if(error == FSE_OK) { + if(fileinfo.flags & FSF_DIRECTORY) { + printf("Directory\r\n"); + } else { + printf("File, size: %lub\r\n", (uint32_t)(fileinfo.size)); + } + } else { + storage_cli_print_error(error); + } + } + + furi_record_close("storage"); +} + void storage_cli_copy(Cli* cli, string_t old_path, string_t args) { Storage* api = furi_record_open("storage"); string_t new_path; @@ -297,6 +402,43 @@ void storage_cli_mkdir(Cli* cli, string_t path) { furi_record_close("storage"); } +void storage_cli_md5(Cli* cli, string_t path) { + Storage* api = furi_record_open("storage"); + File* file = storage_file_alloc(api); + + if(storage_file_open(file, string_get_cstr(path), FSAM_READ, FSOM_OPEN_EXISTING)) { + const uint16_t read_size = 512; + const uint8_t hash_size = 16; + uint8_t* data = malloc(read_size); + uint8_t* hash = malloc(sizeof(uint8_t) * hash_size); + md5_context* md5_ctx = malloc(sizeof(md5_context)); + + md5_starts(md5_ctx); + while(true) { + uint16_t readed_size = storage_file_read(file, data, read_size); + if(readed_size == 0) break; + md5_update(md5_ctx, data, readed_size); + } + md5_finish(md5_ctx, hash); + free(md5_ctx); + + for(uint8_t i = 0; i < hash_size; i++) { + printf("%02x", hash[i]); + } + printf("\r\n"); + + free(hash); + free(data); + } else { + storage_cli_print_error(storage_file_get_error(file)); + } + + storage_file_close(file); + storage_file_free(file); + + furi_record_close("storage"); +} + void storage_cli(Cli* cli, string_t args, void* context) { string_t cmd; string_t path; @@ -334,8 +476,18 @@ void storage_cli(Cli* cli, string_t args, void* context) { break; } + if(string_cmp_str(cmd, "read_chunks") == 0) { + storage_cli_read_chunks(cli, path, args); + break; + } + if(string_cmp_str(cmd, "write") == 0) { - storage_cli_write(cli, path, args); + storage_cli_write(cli, path); + break; + } + + if(string_cmp_str(cmd, "write_chunk") == 0) { + storage_cli_write_chunk(cli, path, args); break; } @@ -359,6 +511,16 @@ void storage_cli(Cli* cli, string_t args, void* context) { break; } + if(string_cmp_str(cmd, "md5") == 0) { + storage_cli_md5(cli, path); + break; + } + + if(string_cmp_str(cmd, "stat") == 0) { + storage_cli_stat(cli, path); + break; + } + storage_cli_print_usage(); } while(false); diff --git a/applications/storage/storage-processing.c b/applications/storage/storage-processing.c index fd4cc08c..0ab7f551 100644 --- a/applications/storage/storage-processing.c +++ b/applications/storage/storage-processing.c @@ -307,43 +307,67 @@ static FS_Error storage_process_common_remove(Storage* app, const char* path) { return ret; } +static FS_Error storage_process_common_mkdir(Storage* app, const char* path) { + FS_Error ret = FSE_OK; + StorageType type = storage_get_type_by_path(path); + + if(storage_type_is_not_valid(type)) { + ret = FSE_INVALID_NAME; + } else { + StorageData* storage = storage_get_storage_by_type(app, type); + FS_CALL(storage, common.mkdir(storage, remove_vfs(path))); + } + + return ret; +} + static FS_Error storage_process_common_copy(Storage* app, const char* old, const char* new) { FS_Error ret = FSE_INTERNAL; File file_old; File file_new; - do { - if(!storage_process_file_open(app, &file_old, old, FSAM_READ, FSOM_OPEN_EXISTING)) { - ret = storage_file_get_error(&file_old); - storage_process_file_close(app, &file_old); - break; + FileInfo fileinfo; + ret = storage_process_common_stat(app, old, &fileinfo); + + if(ret == FSE_OK) { + if(fileinfo.flags & FSF_DIRECTORY) { + ret = storage_process_common_mkdir(app, new); + } else { + do { + if(!storage_process_file_open(app, &file_old, old, FSAM_READ, FSOM_OPEN_EXISTING)) { + ret = storage_file_get_error(&file_old); + storage_process_file_close(app, &file_old); + break; + } + + if(!storage_process_file_open(app, &file_new, new, FSAM_WRITE, FSOM_CREATE_NEW)) { + ret = storage_file_get_error(&file_new); + storage_process_file_close(app, &file_new); + storage_process_file_close(app, &file_old); + break; + } + + const uint16_t buffer_size = 64; + uint8_t* buffer = malloc(buffer_size); + uint16_t readed_size = 0; + uint16_t writed_size = 0; + + while(true) { + readed_size = storage_process_file_read(app, &file_old, buffer, buffer_size); + ret = storage_file_get_error(&file_old); + if(readed_size == 0) break; + + writed_size = storage_process_file_write(app, &file_new, buffer, readed_size); + ret = storage_file_get_error(&file_new); + if(writed_size < readed_size) break; + } + + free(buffer); + storage_process_file_close(app, &file_old); + storage_process_file_close(app, &file_new); + } while(false); } - - if(!storage_process_file_open(app, &file_new, new, FSAM_WRITE, FSOM_CREATE_NEW)) { - ret = storage_file_get_error(&file_new); - storage_process_file_close(app, &file_new); - break; - } - - const uint16_t buffer_size = 64; - uint8_t* buffer = malloc(buffer_size); - uint16_t readed_size = 0; - uint16_t writed_size = 0; - - while(true) { - readed_size = storage_process_file_read(app, &file_old, buffer, buffer_size); - ret = storage_file_get_error(&file_old); - if(readed_size == 0) break; - - writed_size = storage_process_file_write(app, &file_new, buffer, readed_size); - ret = storage_file_get_error(&file_new); - if(writed_size < readed_size) break; - } - - free(buffer); - storage_process_file_close(app, &file_old); - storage_process_file_close(app, &file_new); - } while(false); + } return ret; } @@ -370,20 +394,6 @@ static FS_Error storage_process_common_rename(Storage* app, const char* old, con return ret; } -static FS_Error storage_process_common_mkdir(Storage* app, const char* path) { - FS_Error ret = FSE_OK; - StorageType type = storage_get_type_by_path(path); - - if(storage_type_is_not_valid(type)) { - ret = FSE_INVALID_NAME; - } else { - StorageData* storage = storage_get_storage_by_type(app, type); - FS_CALL(storage, common.mkdir(storage, remove_vfs(path))); - } - - return ret; -} - static FS_Error storage_process_common_fs_info( Storage* app, const char* fs_path, diff --git a/firmware/targets/f6/furi-hal/furi-hal-console.c b/firmware/targets/f6/furi-hal/furi-hal-console.c index d34f214a..6aee4427 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-console.c +++ b/firmware/targets/f6/furi-hal/furi-hal-console.c @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -55,4 +56,14 @@ void furi_hal_console_tx(const uint8_t* buffer, size_t buffer_size) { /* Wait for TC flag to be raised for last char */ while (!LL_USART_IsActiveFlag_TC(USART1)); +} + +void furi_hal_console_printf(const char format[], ...) { + string_t string; + va_list args; + va_start(args, format); + string_init_vprintf(string, format, args); + va_end(args); + furi_hal_console_tx((const uint8_t*)string_get_cstr(string), string_size(string)); + string_clear(string); } \ No newline at end of file diff --git a/firmware/targets/f6/furi-hal/furi-hal-console.h b/firmware/targets/f6/furi-hal/furi-hal-console.h index 1254083f..55ca8791 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-console.h +++ b/firmware/targets/f6/furi-hal/furi-hal-console.h @@ -11,6 +11,8 @@ void furi_hal_console_init(); void furi_hal_console_tx(const uint8_t* buffer, size_t buffer_size); +void furi_hal_console_printf(const char format[], ...); + #ifdef __cplusplus } #endif diff --git a/lib/toolbox/md5.c b/lib/toolbox/md5.c new file mode 100644 index 00000000..b873ee0f --- /dev/null +++ b/lib/toolbox/md5.c @@ -0,0 +1,299 @@ +/******************************************************************************* +* Portions COPYRIGHT 2015 STMicroelectronics * +* Portions Copyright (C) 2006-2013, Brainspark B.V. * +*******************************************************************************/ + +/* + * RFC 1321 compliant MD5 implementation + * + * Copyright (C) 2006-2013, Brainspark B.V. + * + * This file is part of PolarSSL (http://www.polarssl.org) + * Lead Maintainer: Paul Bakker + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +/* + * The MD5 algorithm was designed by Ron Rivest in 1991. + * + * http://www.ietf.org/rfc/rfc1321.txt + */ + +/** + ****************************************************************************** + * @file md5.c + * @author MCD Application Team + * @brief This file has been modified to support the hardware Cryptographic and + * Hash processors embedded in STM32F415xx/417xx/437xx/439xx/756xx devices. + * This support is activated by defining the "USE_STM32F4XX_HW_CRYPTO" + * or "USE_STM32F7XX_HW_CRYPTO" macro in PolarSSL config.h file. + ****************************************************************************** + * @attention + * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + +#include "md5.h" + +/* + * 32-bit integer manipulation macros (little endian) + */ +#ifndef GET_UINT32_LE +#define GET_UINT32_LE(n, b, i) \ + { \ + (n) = ((uint32_t)(b)[(i)]) | ((uint32_t)(b)[(i) + 1] << 8) | \ + ((uint32_t)(b)[(i) + 2] << 16) | ((uint32_t)(b)[(i) + 3] << 24); \ + } +#endif + +#ifndef PUT_UINT32_LE +#define PUT_UINT32_LE(n, b, i) \ + { \ + (b)[(i)] = (unsigned char)((n)); \ + (b)[(i) + 1] = (unsigned char)((n) >> 8); \ + (b)[(i) + 2] = (unsigned char)((n) >> 16); \ + (b)[(i) + 3] = (unsigned char)((n) >> 24); \ + } +#endif + +/* + * MD5 context setup + */ +void md5_starts(md5_context* ctx) { + ctx->total[0] = 0; + ctx->total[1] = 0; + + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xEFCDAB89; + ctx->state[2] = 0x98BADCFE; + ctx->state[3] = 0x10325476; +} + +void md5_process(md5_context* ctx, const unsigned char data[64]) { + uint32_t X[16], A, B, C, D; + + GET_UINT32_LE(X[0], data, 0); + GET_UINT32_LE(X[1], data, 4); + GET_UINT32_LE(X[2], data, 8); + GET_UINT32_LE(X[3], data, 12); + GET_UINT32_LE(X[4], data, 16); + GET_UINT32_LE(X[5], data, 20); + GET_UINT32_LE(X[6], data, 24); + GET_UINT32_LE(X[7], data, 28); + GET_UINT32_LE(X[8], data, 32); + GET_UINT32_LE(X[9], data, 36); + GET_UINT32_LE(X[10], data, 40); + GET_UINT32_LE(X[11], data, 44); + GET_UINT32_LE(X[12], data, 48); + GET_UINT32_LE(X[13], data, 52); + GET_UINT32_LE(X[14], data, 56); + GET_UINT32_LE(X[15], data, 60); + +#define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) + +#define P(a, b, c, d, k, s, t) \ + { \ + a += F(b, c, d) + X[k] + t; \ + a = S(a, s) + b; \ + } + + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; + +#define F(x, y, z) (z ^ (x & (y ^ z))) + + P(A, B, C, D, 0, 7, 0xD76AA478); + P(D, A, B, C, 1, 12, 0xE8C7B756); + P(C, D, A, B, 2, 17, 0x242070DB); + P(B, C, D, A, 3, 22, 0xC1BDCEEE); + P(A, B, C, D, 4, 7, 0xF57C0FAF); + P(D, A, B, C, 5, 12, 0x4787C62A); + P(C, D, A, B, 6, 17, 0xA8304613); + P(B, C, D, A, 7, 22, 0xFD469501); + P(A, B, C, D, 8, 7, 0x698098D8); + P(D, A, B, C, 9, 12, 0x8B44F7AF); + P(C, D, A, B, 10, 17, 0xFFFF5BB1); + P(B, C, D, A, 11, 22, 0x895CD7BE); + P(A, B, C, D, 12, 7, 0x6B901122); + P(D, A, B, C, 13, 12, 0xFD987193); + P(C, D, A, B, 14, 17, 0xA679438E); + P(B, C, D, A, 15, 22, 0x49B40821); + +#undef F + +#define F(x, y, z) (y ^ (z & (x ^ y))) + + P(A, B, C, D, 1, 5, 0xF61E2562); + P(D, A, B, C, 6, 9, 0xC040B340); + P(C, D, A, B, 11, 14, 0x265E5A51); + P(B, C, D, A, 0, 20, 0xE9B6C7AA); + P(A, B, C, D, 5, 5, 0xD62F105D); + P(D, A, B, C, 10, 9, 0x02441453); + P(C, D, A, B, 15, 14, 0xD8A1E681); + P(B, C, D, A, 4, 20, 0xE7D3FBC8); + P(A, B, C, D, 9, 5, 0x21E1CDE6); + P(D, A, B, C, 14, 9, 0xC33707D6); + P(C, D, A, B, 3, 14, 0xF4D50D87); + P(B, C, D, A, 8, 20, 0x455A14ED); + P(A, B, C, D, 13, 5, 0xA9E3E905); + P(D, A, B, C, 2, 9, 0xFCEFA3F8); + P(C, D, A, B, 7, 14, 0x676F02D9); + P(B, C, D, A, 12, 20, 0x8D2A4C8A); + +#undef F + +#define F(x, y, z) (x ^ y ^ z) + + P(A, B, C, D, 5, 4, 0xFFFA3942); + P(D, A, B, C, 8, 11, 0x8771F681); + P(C, D, A, B, 11, 16, 0x6D9D6122); + P(B, C, D, A, 14, 23, 0xFDE5380C); + P(A, B, C, D, 1, 4, 0xA4BEEA44); + P(D, A, B, C, 4, 11, 0x4BDECFA9); + P(C, D, A, B, 7, 16, 0xF6BB4B60); + P(B, C, D, A, 10, 23, 0xBEBFBC70); + P(A, B, C, D, 13, 4, 0x289B7EC6); + P(D, A, B, C, 0, 11, 0xEAA127FA); + P(C, D, A, B, 3, 16, 0xD4EF3085); + P(B, C, D, A, 6, 23, 0x04881D05); + P(A, B, C, D, 9, 4, 0xD9D4D039); + P(D, A, B, C, 12, 11, 0xE6DB99E5); + P(C, D, A, B, 15, 16, 0x1FA27CF8); + P(B, C, D, A, 2, 23, 0xC4AC5665); + +#undef F + +#define F(x, y, z) (y ^ (x | ~z)) + + P(A, B, C, D, 0, 6, 0xF4292244); + P(D, A, B, C, 7, 10, 0x432AFF97); + P(C, D, A, B, 14, 15, 0xAB9423A7); + P(B, C, D, A, 5, 21, 0xFC93A039); + P(A, B, C, D, 12, 6, 0x655B59C3); + P(D, A, B, C, 3, 10, 0x8F0CCC92); + P(C, D, A, B, 10, 15, 0xFFEFF47D); + P(B, C, D, A, 1, 21, 0x85845DD1); + P(A, B, C, D, 8, 6, 0x6FA87E4F); + P(D, A, B, C, 15, 10, 0xFE2CE6E0); + P(C, D, A, B, 6, 15, 0xA3014314); + P(B, C, D, A, 13, 21, 0x4E0811A1); + P(A, B, C, D, 4, 6, 0xF7537E82); + P(D, A, B, C, 11, 10, 0xBD3AF235); + P(C, D, A, B, 2, 15, 0x2AD7D2BB); + P(B, C, D, A, 9, 21, 0xEB86D391); + +#undef F + + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; +} + +/* + * MD5 process buffer + */ +void md5_update(md5_context* ctx, const unsigned char* input, size_t ilen) { + size_t fill; + uint32_t left; + + if(ilen <= 0) return; + + left = ctx->total[0] & 0x3F; + fill = 64 - left; + + ctx->total[0] += (uint32_t)ilen; + ctx->total[0] &= 0xFFFFFFFF; + + if(ctx->total[0] < (uint32_t)ilen) ctx->total[1]++; + + if(left && ilen >= fill) { + memcpy((void*)(ctx->buffer + left), input, fill); + md5_process(ctx, ctx->buffer); + input += fill; + ilen -= fill; + left = 0; + } + + while(ilen >= 64) { + md5_process(ctx, input); + input += 64; + ilen -= 64; + } + + if(ilen > 0) { + memcpy((void*)(ctx->buffer + left), input, ilen); + } +} + +static const unsigned char md5_padding[64] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +/* + * MD5 final digest + */ +void md5_finish(md5_context* ctx, unsigned char output[16]) { + uint32_t last, padn; + uint32_t high, low; + unsigned char msglen[8]; + + high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); + low = (ctx->total[0] << 3); + + PUT_UINT32_LE(low, msglen, 0); + PUT_UINT32_LE(high, msglen, 4); + + last = ctx->total[0] & 0x3F; + padn = (last < 56) ? (56 - last) : (120 - last); + + md5_update(ctx, md5_padding, padn); + md5_update(ctx, msglen, 8); + + PUT_UINT32_LE(ctx->state[0], output, 0); + PUT_UINT32_LE(ctx->state[1], output, 4); + PUT_UINT32_LE(ctx->state[2], output, 8); + PUT_UINT32_LE(ctx->state[3], output, 12); +} + +/* + * output = MD5( input buffer ) + */ +void md5(const unsigned char* input, size_t ilen, unsigned char output[16]) { + md5_context ctx; + + md5_starts(&ctx); + md5_update(&ctx, input, ilen); + md5_finish(&ctx, output); + + memset(&ctx, 0, sizeof(md5_context)); +} \ No newline at end of file diff --git a/lib/toolbox/md5.h b/lib/toolbox/md5.h new file mode 100644 index 00000000..7878881e --- /dev/null +++ b/lib/toolbox/md5.h @@ -0,0 +1,83 @@ +/** + * \file md5.h + * + * \brief MD5 message digest algorithm (hash function) + * + * Copyright (C) 2006-2013, Brainspark B.V. + * + * This file is part of PolarSSL (http://www.polarssl.org) + * Lead Maintainer: Paul Bakker + * + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include + +/** + * \brief MD5 context structure + */ +typedef struct { + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} md5_context; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MD5 context setup + * + * \param ctx context to be initialized + */ +void md5_starts(md5_context* ctx); + +/** + * \brief MD5 process buffer + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +void md5_update(md5_context* ctx, const unsigned char* input, size_t ilen); + +/** + * \brief MD5 final digest + * + * \param ctx MD5 context + * \param output MD5 checksum result + */ +void md5_finish(md5_context* ctx, unsigned char output[16]); + +/* Internal use */ +void md5_process(md5_context* ctx, const unsigned char data[64]); + +/** + * \brief Output = MD5( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + */ +void md5(const unsigned char* input, size_t ilen, unsigned char output[16]); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/scripts/flipper/__init__.py b/scripts/flipper/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/flipper/storage.py b/scripts/flipper/storage.py new file mode 100644 index 00000000..589c5768 --- /dev/null +++ b/scripts/flipper/storage.py @@ -0,0 +1,375 @@ +import os +import serial +import time +import hashlib +import math + + +def timing(func): + """ + Speedometer decorator + """ + + def wrapper(*args, **kwargs): + time1 = time.monotonic() + ret = func(*args, **kwargs) + time2 = time.monotonic() + print( + "{:s} function took {:.3f} ms".format( + func.__name__, (time2 - time1) * 1000.0 + ) + ) + return ret + + return wrapper + + +class BufferedRead: + def __init__(self, stream): + self.buffer = bytearray() + self.stream = stream + + def until(self, eol="\n", cut_eol=True): + eol = eol.encode("ascii") + while True: + # search in buffer + i = self.buffer.find(eol) + if i >= 0: + if cut_eol: + read = self.buffer[:i] + else: + read = self.buffer[: i + len(eol)] + self.buffer = self.buffer[i + len(eol) :] + return read + + # read and append to buffer + i = max(1, self.stream.in_waiting) + data = self.stream.read(i) + self.buffer.extend(data) + + +class FlipperStorage: + CLI_PROMPT = ">: " + CLI_EOL = "\r\n" + + def __init__(self, portname: str): + self.port = serial.Serial() + self.port.port = portname + self.port.timeout = 2 + self.port.baudrate = 115200 + self.read = BufferedRead(self.port) + self.last_error = "" + + def start(self): + self.port.open() + self.port.reset_input_buffer() + # Send a command with a known syntax to make sure the buffer is flushed + self.send("device_info\r") + self.read.until("hardware_model :") + # And read buffer until we get prompt + self.read.until(self.CLI_PROMPT) + + def stop(self): + self.port.close() + + def send(self, line): + self.port.write(line.encode("ascii")) + + def send_and_wait_eol(self, line): + self.send(line) + return self.read.until(self.CLI_EOL) + + def send_and_wait_prompt(self, line): + self.send(line) + return self.read.until(self.CLI_PROMPT) + + def has_error(self, data): + """Is data has error""" + if data.find(b"Storage error") != -1: + return True + else: + return False + + def get_error(self, data): + """Extract error text from data and print it""" + error, error_text = data.decode("ascii").split(": ") + return error_text.strip() + + def list_tree(self, path="/", level=0): + """List files and dirs on Flipper""" + path = path.replace("//", "/") + + self.send_and_wait_eol('storage list "' + path + '"\r') + + data = self.read.until(self.CLI_PROMPT) + lines = data.split(b"\r\n") + + for line in lines: + try: + # TODO: better decoding, considering non-ascii characters + line = line.decode("ascii") + except: + continue + + line = line.strip() + + if len(line) == 0: + continue + + if self.has_error(line.encode("ascii")): + print(self.get_error(line.encode("ascii"))) + continue + + if line == "Empty": + continue + + type, info = line.split(" ", 1) + if type == "[D]": + # Print directory name + print((path + "/" + info).replace("//", "/")) + # And recursively go inside + self.list_tree(path + "/" + info, level + 1) + elif type == "[F]": + name, size = info.rsplit(" ", 1) + # Print file name and size + print((path + "/" + name).replace("//", "/") + ", size " + size) + else: + # Something wrong, pass + pass + + def walk(self, path="/"): + dirs = [] + nondirs = [] + walk_dirs = [] + + path = path.replace("//", "/") + self.send_and_wait_eol('storage list "' + path + '"\r') + data = self.read.until(self.CLI_PROMPT) + lines = data.split(b"\r\n") + + for line in lines: + try: + # TODO: better decoding, considering non-ascii characters + line = line.decode("ascii") + except: + continue + + line = line.strip() + + if len(line) == 0: + continue + + if self.has_error(line.encode("ascii")): + continue + + if line == "Empty": + continue + + type, info = line.split(" ", 1) + if type == "[D]": + # Print directory name + dirs.append(info) + walk_dirs.append((path + "/" + info).replace("//", "/")) + + elif type == "[F]": + name, size = info.rsplit(" ", 1) + # Print file name and size + nondirs.append(name) + else: + # Something wrong, pass + pass + + # topdown walk, yield before recursy + yield path, dirs, nondirs + for new_path in walk_dirs: + yield from self.walk(new_path) + + def send_file(self, filename_from, filename_to): + """Send file from local device to Flipper""" + self.remove(filename_to) + + file = open(filename_from, "rb") + filesize = os.fstat(file.fileno()).st_size + + buffer_size = 512 + while True: + filedata = file.read(buffer_size) + size = len(filedata) + if size == 0: + break + + self.send_and_wait_eol( + 'storage write_chunk "' + filename_to + '" ' + str(size) + "\r" + ) + answer = self.read.until(self.CLI_EOL) + if self.has_error(answer): + self.last_error = self.get_error(answer) + self.read.until(self.CLI_PROMPT) + file.close() + return False + + self.port.write(filedata) + self.read.until(self.CLI_PROMPT) + + percent = str(math.ceil(file.tell() / filesize * 100)) + total_chunks = str(math.ceil(filesize / buffer_size)) + current_chunk = str(math.ceil(file.tell() / buffer_size)) + print( + percent + "%, chunk " + current_chunk + " of " + total_chunks, end="\r" + ) + file.close() + print() + return True + + def read_file(self, filename): + """Receive file from Flipper, and get filedata (bytes)""" + buffer_size = 512 + self.send_and_wait_eol( + 'storage read_chunks "' + filename + '" ' + str(buffer_size) + "\r" + ) + answer = self.read.until(self.CLI_EOL) + filedata = bytearray() + if self.has_error(answer): + self.last_error = self.get_error(answer) + self.read.until(self.CLI_PROMPT) + return filedata + size = int(answer.split(b": ")[1]) + readed_size = 0 + + while readed_size < size: + self.read.until("Ready?" + self.CLI_EOL) + self.send("y") + read_size = min(size - readed_size, buffer_size) + filedata.extend(self.port.read(read_size)) + readed_size = readed_size + read_size + + percent = str(math.ceil(readed_size / size * 100)) + total_chunks = str(math.ceil(size / buffer_size)) + current_chunk = str(math.ceil(readed_size / buffer_size)) + print( + percent + "%, chunk " + current_chunk + " of " + total_chunks, end="\r" + ) + print() + self.read.until(self.CLI_PROMPT) + return filedata + + def receive_file(self, filename_from, filename_to): + """Receive file from Flipper to local storage""" + with open(filename_to, "wb") as file: + data = self.read_file(filename_from) + if not data: + return False + else: + file.write(data) + return True + + def exist(self, path): + """Is file or dir exist on Flipper""" + self.send_and_wait_eol('storage stat "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + return True + + def exist_dir(self, path): + """Is dir exist on Flipper""" + self.send_and_wait_eol('storage stat "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + if answer.find(b"Directory") != -1: + return True + elif answer.find(b"Storage") != -1: + return True + else: + return False + + def exist_file(self, path): + """Is file exist on Flipper""" + self.send_and_wait_eol('storage stat "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + if answer.find(b"File, size:") != -1: + return True + else: + return False + + def size(self, path): + """file size on Flipper""" + self.send_and_wait_eol('storage stat "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + if answer.find(b"File, size:") != -1: + size = int( + "".join( + ch + for ch in answer.split(b": ")[1].decode("ascii") + if ch.isdigit() + ) + ) + return size + else: + self.last_error = "access denied" + return -1 + + def mkdir(self, path): + """Create a directory on Flipper""" + self.send_and_wait_eol('storage mkdir "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + return True + + def remove(self, path): + """Remove file or directory on Flipper""" + self.send_and_wait_eol('storage remove "' + path + '"\r') + answer = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(answer): + self.last_error = self.get_error(answer) + return False + else: + return True + + def hash_local(self, filename): + """Hash of local file""" + hash_md5 = hashlib.md5() + with open(filename, "rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + hash_md5.update(chunk) + return hash_md5.hexdigest() + + def hash_flipper(self, filename): + """Get hash of file on Flipper""" + self.send_and_wait_eol('storage md5 "' + filename + '"\r') + hash = self.read.until(self.CLI_EOL) + self.read.until(self.CLI_PROMPT) + + if self.has_error(hash): + self.last_error = self.get_error(hash) + return "" + else: + return hash.decode("ascii") diff --git a/scripts/storage.py b/scripts/storage.py new file mode 100755 index 00000000..739686b6 --- /dev/null +++ b/scripts/storage.py @@ -0,0 +1,267 @@ +#!/usr/bin/env python3 + +from flipper.storage import FlipperStorage +import logging +import argparse +import os +import sys +import binascii +import posixpath + + +class Main: + def __init__(self): + # command args + self.parser = argparse.ArgumentParser() + self.parser.add_argument("-d", "--debug", action="store_true", help="Debug") + self.parser.add_argument("-p", "--port", help="CDC Port", required=True) + self.subparsers = self.parser.add_subparsers(help="sub-command help") + + self.parser_mkdir = self.subparsers.add_parser("mkdir", help="Create directory") + self.parser_mkdir.add_argument("flipper_path", help="Flipper path") + self.parser_mkdir.set_defaults(func=self.mkdir) + + self.parser_remove = self.subparsers.add_parser( + "remove", help="Remove file/directory" + ) + self.parser_remove.add_argument("flipper_path", help="Flipper path") + self.parser_remove.set_defaults(func=self.remove) + + self.parser_read = self.subparsers.add_parser("read", help="Read file") + self.parser_read.add_argument("flipper_path", help="Flipper path") + self.parser_read.set_defaults(func=self.read) + + self.parser_size = self.subparsers.add_parser("size", help="Size of file") + self.parser_size.add_argument("flipper_path", help="Flipper path") + self.parser_size.set_defaults(func=self.size) + + self.parser_receive = self.subparsers.add_parser("receive", help="Receive file") + self.parser_receive.add_argument("flipper_path", help="Flipper path") + self.parser_receive.add_argument("local_path", help="Local path") + self.parser_receive.set_defaults(func=self.receive) + + self.parser_send = self.subparsers.add_parser( + "send", help="Send file or directory" + ) + self.parser_send.add_argument( + "-f", "--force", help="Force sending", action="store_true" + ) + self.parser_send.add_argument("local_path", help="Local path") + self.parser_send.add_argument("flipper_path", help="Flipper path") + self.parser_send.set_defaults(func=self.send) + + self.parser_list = self.subparsers.add_parser( + "list", help="Recursively list files and dirs" + ) + self.parser_list.add_argument("flipper_path", help="Flipper path", default="/") + self.parser_list.set_defaults(func=self.list) + + # logging + self.logger = logging.getLogger() + + def __call__(self): + self.args = self.parser.parse_args() + if "func" not in self.args: + self.parser.error("Choose something to do") + # configure log output + self.log_level = logging.DEBUG if self.args.debug else logging.INFO + self.logger.setLevel(self.log_level) + self.handler = logging.StreamHandler(sys.stdout) + self.handler.setLevel(self.log_level) + self.formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s") + self.handler.setFormatter(self.formatter) + self.logger.addHandler(self.handler) + # execute requested function + self.args.func() + + def mkdir(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.logger.debug(f'Creating "{self.args.flipper_path}"') + if not storage.mkdir(self.args.flipper_path): + self.logger.error(f"Error: {storage.last_error}") + storage.stop() + + def remove(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.logger.debug(f'Removing "{self.args.flipper_path}"') + if not storage.remove(self.args.flipper_path): + self.logger.error(f"Error: {storage.last_error}") + storage.stop() + + def receive(self): + storage = FlipperStorage(self.args.port) + storage.start() + + if storage.exist_dir(self.args.flipper_path): + for dirpath, dirnames, filenames in storage.walk(self.args.flipper_path): + self.logger.debug( + f'Processing directory "{os.path.normpath(dirpath)}"'.replace( + os.sep, "/" + ) + ) + dirnames.sort() + filenames.sort() + + rel_path = os.path.relpath(dirpath, self.args.flipper_path) + + for dirname in dirnames: + local_dir_path = os.path.join( + self.args.local_path, rel_path, dirname + ) + local_dir_path = os.path.normpath(local_dir_path) + os.makedirs(local_dir_path, exist_ok=True) + + for filename in filenames: + local_file_path = os.path.join( + self.args.local_path, rel_path, filename + ) + local_file_path = os.path.normpath(local_file_path) + flipper_file_path = os.path.normpath( + os.path.join(dirpath, filename) + ).replace(os.sep, "/") + self.logger.info( + f'Receiving "{flipper_file_path}" to "{local_file_path}"' + ) + if not storage.receive_file(flipper_file_path, local_file_path): + self.logger.error(f"Error: {storage.last_error}") + + else: + self.logger.info( + f'Receiving "{self.args.flipper_path}" to "{self.args.local_path}"' + ) + if not storage.receive_file(self.args.flipper_path, self.args.local_path): + self.logger.error(f"Error: {storage.last_error}") + storage.stop() + + def send(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.send_to_storage( + storage, self.args.flipper_path, self.args.local_path, self.args.force + ) + storage.stop() + + # send file or folder recursively + def send_to_storage(self, storage, flipper_path, local_path, force): + if not os.path.exists(local_path): + self.logger.error(f'Error: "{local_path}" is not exist') + + if os.path.isdir(local_path): + # create parent dir + self.mkdir_on_storage(storage, flipper_path) + + for dirpath, dirnames, filenames in os.walk(local_path): + self.logger.debug(f'Processing directory "{os.path.normpath(dirpath)}"') + dirnames.sort() + filenames.sort() + rel_path = os.path.relpath(dirpath, local_path) + + # create subdirs + for dirname in dirnames: + flipper_dir_path = os.path.join(flipper_path, rel_path, dirname) + flipper_dir_path = os.path.normpath(flipper_dir_path).replace( + os.sep, "/" + ) + self.mkdir_on_storage(storage, flipper_dir_path) + + # send files + for filename in filenames: + flipper_file_path = os.path.join(flipper_path, rel_path, filename) + flipper_file_path = os.path.normpath(flipper_file_path).replace( + os.sep, "/" + ) + local_file_path = os.path.normpath(os.path.join(dirpath, filename)) + self.send_file_to_storage( + storage, flipper_file_path, local_file_path, force + ) + else: + self.send_file_to_storage(storage, flipper_path, local_path, force) + + # make directory with exist check + def mkdir_on_storage(self, storage, flipper_dir_path): + if not storage.exist_dir(flipper_dir_path): + self.logger.debug(f'"{flipper_dir_path}" not exist, creating') + if not storage.mkdir(flipper_dir_path): + self.logger.error(f"Error: {storage.last_error}") + else: + self.logger.debug(f'"{flipper_dir_path}" already exist') + + # send file with exist check and hash check + def send_file_to_storage(self, storage, flipper_file_path, local_file_path, force): + if not storage.exist_file(flipper_file_path): + self.logger.debug( + f'"{flipper_file_path}" not exist, sending "{local_file_path}"' + ) + self.logger.info(f'Sending "{local_file_path}" to "{flipper_file_path}"') + if not storage.send_file(local_file_path, flipper_file_path): + self.logger.error(f"Error: {storage.last_error}") + elif force: + self.logger.debug( + f'"{flipper_file_path}" exist, but will be overwritten by "{local_file_path}"' + ) + self.logger.info(f'Sending "{local_file_path}" to "{flipper_file_path}"') + if not storage.send_file(local_file_path, flipper_file_path): + self.logger.error(f"Error: {storage.last_error}") + else: + self.logger.debug( + f'"{flipper_file_path}" exist, compare hash with "{local_file_path}"' + ) + hash_local = storage.hash_local(local_file_path) + hash_flipper = storage.hash_flipper(flipper_file_path) + + if not hash_flipper: + self.logger.error(f"Error: {storage.last_error}") + + if hash_local == hash_flipper: + self.logger.debug( + f'"{flipper_file_path}" are equal to "{local_file_path}"' + ) + else: + self.logger.debug( + f'"{flipper_file_path}" are not equal to "{local_file_path}"' + ) + self.logger.info( + f'Sending "{local_file_path}" to "{flipper_file_path}"' + ) + if not storage.send_file(local_file_path, flipper_file_path): + self.logger.error(f"Error: {storage.last_error}") + + def read(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.logger.debug(f'Reading "{self.args.flipper_path}"') + data = storage.read_file(self.args.flipper_path) + if not data: + self.logger.error(f"Error: {storage.last_error}") + else: + try: + print("Text data:") + print(data.decode()) + except: + print("Binary hexadecimal data:") + print(binascii.hexlify(data).decode()) + storage.stop() + + def size(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.logger.debug(f'Getting size of "{self.args.flipper_path}"') + size = storage.size(self.args.flipper_path) + if size < 0: + self.logger.error(f"Error: {storage.last_error}") + else: + print(size) + storage.stop() + + def list(self): + storage = FlipperStorage(self.args.port) + storage.start() + self.logger.debug(f'Listing "{self.args.flipper_path}"') + storage.list_tree(self.args.flipper_path) + storage.stop() + + +if __name__ == "__main__": + Main()() From 5f6aff22558db8c43a5a8f51ccbf2b033c553d47 Mon Sep 17 00:00:00 2001 From: Albert Kharisov Date: Thu, 19 Aug 2021 03:18:42 +0300 Subject: [PATCH 16/18] [FL-1472, FL-1596, FL-1673] IRDA: stability improvements (#655) - Restrict with 31 bytes length for remote and signal name - Don't stuck for 0 PWM cycle timings - Support timings > 65535 PWM cycles - Fix remote file open error - Add IRDA TX debug redirect - Add remote parse error print, improve parsing, support tabs - Fix stucks with uncorrect RAW signal values, long strings in remote file, etc - Fix HAL signals capturing (save previous read value) - Fix leak in case of failed parsing --- applications/irda/cli/irda-cli.cpp | 30 +++- applications/irda/irda-app-brute-force.cpp | 14 +- applications/irda/irda-app-brute-force.h | 5 +- applications/irda/irda-app-file-parser.cpp | 153 +++++++++++++----- applications/irda/irda-app-file-parser.h | 15 +- applications/irda/irda-app-remote-manager.cpp | 17 +- applications/irda/irda-app-remote-manager.h | 20 +-- applications/irda/irda-app-signal.cpp | 2 +- applications/irda/irda-app.cpp | 12 ++ applications/irda/irda-app.h | 15 +- .../irda/scene/irda-app-scene-edit-rename.cpp | 13 +- .../scene/irda-app-scene-learn-enter-name.cpp | 2 +- firmware/targets/f6/furi-hal/furi-hal-irda.c | 143 ++++++++++------ .../targets/furi-hal-include/furi-hal-irda.h | 8 +- lib/app-scened-template/file-worker.c | 4 +- lib/irda/worker/irda_transmit.c | 15 +- lib/irda/worker/irda_worker.c | 46 +++--- lib/toolbox/args.h | 7 +- lib/toolbox/path.h | 3 +- 19 files changed, 347 insertions(+), 177 deletions(-) diff --git a/applications/irda/cli/irda-cli.cpp b/applications/irda/cli/irda-cli.cpp index 6cde9c95..1becdfbb 100644 --- a/applications/irda/cli/irda-cli.cpp +++ b/applications/irda/cli/irda-cli.cpp @@ -74,6 +74,12 @@ static void irda_cli_print_usage(void) { printf(" %s", irda_get_protocol_name((IrdaProtocol)i)); } printf("\r\n"); + printf("\tRaw format:\r\n"); + printf("\tir_tx RAW F: DC: ...\r\n"); + printf( + "\tFrequency (%d - %d), Duty cycle (0 - 100), max 512 samples\r\n", + IRDA_MIN_FREQUENCY, + IRDA_MAX_FREQUENCY); } static bool parse_message(const char* str, IrdaMessage* message) { @@ -115,6 +121,14 @@ static bool parse_signal_raw( *duty_cycle = (float)atoi(duty_cycle_str) / 100; str += strlen(frequency_str) + strlen(duty_cycle_str) + 10; + if((*frequency > IRDA_MAX_FREQUENCY) || (*frequency < IRDA_MIN_FREQUENCY)) { + return false; + } + + if((*duty_cycle <= 0) || (*duty_cycle > 1)) { + return false; + } + uint32_t timings_cnt_max = *timings_cnt; *timings_cnt = 0; @@ -131,13 +145,15 @@ static bool parse_signal_raw( ++*timings_cnt; } - printf("\r\nTransmit:"); - for(size_t i = 0; i < *timings_cnt; ++i) { - printf(" %ld", timings[i]); + if(*timings_cnt > 0) { + printf("\r\nTransmit:"); + for(size_t i = 0; i < *timings_cnt; ++i) { + printf(" %ld", timings[i]); + } + printf("\r\n"); } - printf("\r\n"); - return true; + return (parsed == 2) && (*timings_cnt > 0); } static void irda_cli_start_ir_tx(Cli* cli, string_t args, void* context) { @@ -150,8 +166,8 @@ static void irda_cli_start_ir_tx(Cli* cli, string_t args, void* context) { const char* str = string_get_cstr(args); uint32_t frequency; float duty_cycle; - uint32_t* timings = (uint32_t*)furi_alloc(sizeof(uint32_t) * 1000); - uint32_t timings_cnt = 1000; + uint32_t* timings = (uint32_t*)furi_alloc(sizeof(uint32_t) * 512); + uint32_t timings_cnt = 512; if(parse_message(str, &message)) { irda_send(&message, 1); diff --git a/applications/irda/irda-app-brute-force.cpp b/applications/irda/irda-app-brute-force.cpp index 42797d21..ab8c039b 100644 --- a/applications/irda/irda-app-brute-force.cpp +++ b/applications/irda/irda-app-brute-force.cpp @@ -1,8 +1,10 @@ #include "irda-app-brute-force.h" #include "irda/irda-app-file-parser.h" -#include "m-string.h" -#include + #include +#include +#include +#include void IrdaAppBruteForce::add_record(int index, const char* name) { records[name].index = index; @@ -16,7 +18,7 @@ bool IrdaAppBruteForce::calculate_messages() { file_parser = std::make_unique(); fs_res = file_parser->open_irda_file_read(universal_db_filename); if(!fs_res) { - file_parser.reset(nullptr); + file_parser.reset(); return false; } @@ -31,7 +33,7 @@ bool IrdaAppBruteForce::calculate_messages() { } file_parser->close(); - file_parser.reset(nullptr); + file_parser.reset(); return true; } @@ -43,7 +45,7 @@ void IrdaAppBruteForce::stop_bruteforce() { furi_assert(file_parser); current_record.clear(); file_parser->close(); - file_parser.reset(nullptr); + file_parser.reset(); } } @@ -81,7 +83,7 @@ bool IrdaAppBruteForce::start_bruteforce(int index, int& record_amount) { file_parser = std::make_unique(); result = file_parser->open_irda_file_read(universal_db_filename); if(!result) { - (void)file_parser.reset(nullptr); + file_parser.reset(); } } diff --git a/applications/irda/irda-app-brute-force.h b/applications/irda/irda-app-brute-force.h index 174f74f5..58736759 100644 --- a/applications/irda/irda-app-brute-force.h +++ b/applications/irda/irda-app-brute-force.h @@ -1,7 +1,8 @@ #pragma once -#include "furi/check.h" -#include + #include "irda-app-file-parser.h" + +#include #include class IrdaAppBruteForce { diff --git a/applications/irda/irda-app-file-parser.cpp b/applications/irda/irda-app-file-parser.cpp index 8cd0499b..f462919e 100644 --- a/applications/irda/irda-app-file-parser.cpp +++ b/applications/irda/irda-app-file-parser.cpp @@ -1,22 +1,16 @@ #include "irda-app-file-parser.h" -#include "furi/check.h" #include "irda-app-remote-manager.h" #include "irda-app-signal.h" -#include "m-string.h" + +#include +#include #include #include -#include -#include -#include #include #include +#include #include -uint32_t const IrdaAppFileParser::max_line_length = ((9 + 1) * 512 + 100); -const char* IrdaAppFileParser::irda_directory = "/any/irda"; -const char* IrdaAppFileParser::irda_extension = ".ir"; -uint32_t const IrdaAppFileParser::max_raw_timings_in_signal = 512; - bool IrdaAppFileParser::open_irda_file_read(const char* name) { std::string full_filename; if(name[0] != '/') @@ -158,18 +152,41 @@ std::unique_ptr IrdaProtocol protocol = irda_get_protocol_by_name(protocol_name); if(!irda_is_protocol_valid((IrdaProtocol)protocol)) { + size_t end_of_str = MIN(str.find_last_not_of(" \t\r\n") + 1, (size_t)30); + FURI_LOG_E( + "IrdaFileParser", + "Unknown protocol(\'%.*s...\'): \'%s\'", + end_of_str, + str.c_str(), + protocol_name); return nullptr; } int address_length = irda_get_protocol_address_length(protocol); uint32_t address_mask = (1LU << (4 * address_length)) - 1; if(address != (address & address_mask)) { + size_t end_of_str = MIN(str.find_last_not_of(" \t\r\n") + 1, (size_t)30); + FURI_LOG_E( + "IrdaFileParser", + "Signal(\'%.*s...\'): address is too long (mask for this protocol is 0x%08X): 0x%X", + end_of_str, + str.c_str(), + address_mask, + address); return nullptr; } int command_length = irda_get_protocol_command_length(protocol); uint32_t command_mask = (1LU << (4 * command_length)) - 1; if(command != (command & command_mask)) { + size_t end_of_str = MIN(str.find_last_not_of(" \t\r\n") + 1, (size_t)30); + FURI_LOG_E( + "IrdaFileParser", + "Signal(\'%.*s...\'): command is too long (mask for this protocol is 0x%08X): 0x%X", + end_of_str, + str.c_str(), + command_mask, + command); return nullptr; } @@ -195,34 +212,81 @@ const char* find_first_not_of(const char* str, char symbol) { return str; } +static int remove_args32(std::string_view& str, size_t num) { + int removed_length = 0; + + while(num--) { + char buf[32]; + + size_t index = str.find_first_not_of(" \t"); + if(index == std::string_view::npos) break; + removed_length += index; + str.remove_prefix(index); + + if(str.empty()) break; + + int parsed = std::sscanf(str.data(), "%31s", buf); + if(!parsed) break; + + size_t len = strlen(buf); + if(!len) break; + removed_length += len; + str.remove_prefix(len); + + if(str.empty()) break; + } + + return removed_length; +} + std::unique_ptr IrdaAppFileParser::parse_signal_raw(const std::string& string) const { uint32_t frequency; uint32_t duty_cycle; - int str_len = string.size(); std::string_view str(string.c_str()); auto irda_file_signal = std::make_unique(); int parsed = std::sscanf( str.data(), "%31s RAW F:%ld DC:%ld", irda_file_signal->name, &frequency, &duty_cycle); - if((parsed != 3) || (frequency > 42000) || (frequency < 32000) || (duty_cycle == 0) || - (duty_cycle >= 100)) { + if(parsed != 3) { return nullptr; } - char dummy[100] = {0}; - int header_len = 0; - header_len = sniprintf( - dummy, - sizeof(dummy), - "%.31s RAW F:%ld DC:%ld", - irda_file_signal->name, - frequency, - duty_cycle); + if((frequency < IRDA_MIN_FREQUENCY) || (frequency > IRDA_MAX_FREQUENCY)) { + size_t end_of_str = MIN(string.find_last_not_of(" \t\r\n") + 1, (size_t)30); + FURI_LOG_E( + "IrdaFileParser", + "RAW signal(\'%.*s...\'): frequency is out of bounds (%ld-%ld): %ld", + end_of_str, + string.c_str(), + IRDA_MIN_FREQUENCY, + IRDA_MAX_FREQUENCY, + frequency); + return nullptr; + } - furi_assert(header_len < str_len); - str.remove_prefix(header_len); + if((duty_cycle == 0) || (duty_cycle > 100)) { + size_t end_of_str = MIN(string.find_last_not_of(" \t\r\n") + 1, (size_t)30); + FURI_LOG_E( + "IrdaFileParser", + "RAW signal(\'%.*s...\'): duty cycle is out of bounds (0-100): %ld", + end_of_str, + string.c_str(), + duty_cycle); + return nullptr; + } + + int header_len = remove_args32(str, 4); + + size_t last_valid_ch = str.find_last_not_of(" \t\r\n"); + if(last_valid_ch != std::string_view::npos) { + str.remove_suffix(str.size() - last_valid_ch - 1); + } else { + FURI_LOG_E( + "IrdaFileParser", "RAW signal(\'%.*s\'): no timings", header_len, string.c_str()); + return nullptr; + } /* move allocated timings into raw signal object */ IrdaAppSignal::RawSignal raw_signal = { @@ -231,40 +295,59 @@ std::unique_ptr while(!str.empty()) { char buf[10]; - size_t index = str.find_first_not_of(' ', 1); + size_t index = str.find_first_not_of(" \t", 1); if(index == std::string_view::npos) { break; } str.remove_prefix(index); parsed = std::sscanf(str.data(), "%9s", buf); if(parsed != 1) { + FURI_LOG_E( + "IrdaFileParser", + "RAW signal(\'%.*s...\'): failed on timing[%ld] \'%*s\'", + header_len, + string.c_str(), + raw_signal.timings_cnt, + str.size(), + str.data()); result = false; - furi_assert(0); break; } str.remove_prefix(strlen(buf)); int value = atoi(buf); if(value <= 0) { + FURI_LOG_E( + "IrdaFileParser", + "RAW signal(\'%.*s...\'): failed on timing[%ld] \'%s\'", + header_len, + string.c_str(), + raw_signal.timings_cnt, + buf); + result = false; + break; + } + + if(raw_signal.timings_cnt >= max_raw_timings_in_signal) { + FURI_LOG_E( + "IrdaFileParser", + "RAW signal(\'%.*s...\'): too much timings (max %ld)", + header_len, + string.c_str(), + max_raw_timings_in_signal); result = false; - furi_assert(0); break; } raw_signal.timings[raw_signal.timings_cnt] = value; ++raw_signal.timings_cnt; result = true; - if(raw_signal.timings_cnt >= max_raw_timings_in_signal) { - result = false; - furi_assert(0); - break; - } } if(result) { /* copy timings instead of moving them to occupy less than max_raw_timings_in_signal */ irda_file_signal->signal.copy_raw_signal(raw_signal.timings, raw_signal.timings_cnt); } else { - (void)irda_file_signal.release(); + irda_file_signal.reset(); } delete[] raw_signal.timings; return irda_file_signal; @@ -306,13 +389,11 @@ bool IrdaAppFileParser::check_errors() { } std::string IrdaAppFileParser::file_select(const char* selected) { - TextStore* filename_ts = new TextStore(128); + auto filename_ts = std::make_unique(IrdaAppRemoteManager::max_remote_name_length); bool result; result = file_worker.file_select( irda_directory, irda_extension, filename_ts->text, filename_ts->text_size, selected); - delete filename_ts; - return result ? std::string(filename_ts->text) : std::string(); } diff --git a/applications/irda/irda-app-file-parser.h b/applications/irda/irda-app-file-parser.h index f3d42e49..b0c98ad6 100644 --- a/applications/irda/irda-app-file-parser.h +++ b/applications/irda/irda-app-file-parser.h @@ -1,8 +1,12 @@ #pragma once + +#include "irda-app-signal.h" + #include #include -#include "irda-app-signal.h" #include +#include +#include class IrdaAppFileParser { public: @@ -40,10 +44,11 @@ private: std::unique_ptr parse_signal_raw(const std::string& str) const; std::string make_full_name(const std::string& name) const; - static const char* irda_directory; - static const char* irda_extension; - static const uint32_t max_line_length; - static uint32_t const max_raw_timings_in_signal; + static inline const char* const irda_directory = "/any/irda"; + static inline const char* const irda_extension = ".ir"; + static inline const uint32_t max_raw_timings_in_signal = 512; + static inline const uint32_t max_line_length = + (9 + 1) * IrdaAppFileParser::max_raw_timings_in_signal + 100; FileWorkerCpp file_worker; char file_buf[128]; diff --git a/applications/irda/irda-app-remote-manager.cpp b/applications/irda/irda-app-remote-manager.cpp index cd98893e..b3f713ce 100644 --- a/applications/irda/irda-app-remote-manager.cpp +++ b/applications/irda/irda-app-remote-manager.cpp @@ -1,15 +1,14 @@ #include "irda-app-remote-manager.h" -#include -#include "furi.h" -#include "furi/check.h" -#include "gui/modules/button_menu.h" -#include "irda.h" -#include -#include -#include -#include #include "irda-app-file-parser.h" +#include + +#include +#include +#include +#include +#include + static const std::string default_remote_name = "remote"; std::string IrdaAppRemoteManager::find_vacant_remote_name(const std::string& name) { diff --git a/applications/irda/irda-app-remote-manager.h b/applications/irda/irda-app-remote-manager.h index 60993b30..b2a0197f 100644 --- a/applications/irda/irda-app-remote-manager.h +++ b/applications/irda/irda-app-remote-manager.h @@ -1,13 +1,15 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include + #include "irda-app-signal.h" +#include +#include + +#include +#include +#include +#include + class IrdaAppRemoteButton { friend class IrdaAppRemoteManager; std::string name; @@ -40,13 +42,13 @@ public: }; class IrdaAppRemoteManager { - static const char* irda_directory; - static const char* irda_extension; std::unique_ptr remote; std::string make_full_name(const std::string& remote_name) const; std::string make_remote_name(const std::string& full_name) const; public: + static inline const uint32_t max_button_name_length = 31; + static inline const uint32_t max_remote_name_length = 31; bool add_remote_with_button(const char* button_name, const IrdaAppSignal& signal); bool add_button(const char* button_name, const IrdaAppSignal& signal); diff --git a/applications/irda/irda-app-signal.cpp b/applications/irda/irda-app-signal.cpp index 0a9a7956..45ec3767 100644 --- a/applications/irda/irda-app-signal.cpp +++ b/applications/irda/irda-app-signal.cpp @@ -5,9 +5,9 @@ void IrdaAppSignal::copy_timings(const uint32_t* timings, size_t size) { furi_assert(size); furi_assert(timings); + payload.raw.timings_cnt = size; if(size) { payload.raw.timings = new uint32_t[size]; - payload.raw.timings_cnt = size; memcpy(payload.raw.timings, timings, size * sizeof(uint32_t)); } } diff --git a/applications/irda/irda-app.cpp b/applications/irda/irda-app.cpp index 5dd7c7b4..042d237c 100644 --- a/applications/irda/irda-app.cpp +++ b/applications/irda/irda-app.cpp @@ -48,6 +48,18 @@ int32_t IrdaApp::run(void* args) { return 0; }; +IrdaApp::IrdaApp() { + furi_check(IrdaAppRemoteManager::max_button_name_length < get_text_store_size()); + notification = static_cast(furi_record_open("notification")); + irda_worker = irda_worker_alloc(); +} + +IrdaApp::~IrdaApp() { + irda_worker_free(irda_worker); + furi_record_close("notification"); + for(auto& [key, scene] : scenes) delete scene; +} + IrdaAppViewManager* IrdaApp::get_view_manager() { return &view_manager; } diff --git a/applications/irda/irda-app.h b/applications/irda/irda-app.h index cc7611a4..904bead3 100644 --- a/applications/irda/irda-app.h +++ b/applications/irda/irda-app.h @@ -88,19 +88,12 @@ public: static void text_input_callback(void* context); static void popup_callback(void* context); - IrdaApp() { - notification = static_cast(furi_record_open("notification")); - irda_worker = irda_worker_alloc(); - } - ~IrdaApp() { - irda_worker_free(irda_worker); - furi_record_close("notification"); - for(auto& it : scenes) delete it.second; - } + IrdaApp(); + ~IrdaApp(); private: - static const uint8_t text_store_size = 128; - static const uint8_t text_store_max = 2; + static inline const uint8_t text_store_size = 128; + static inline const uint8_t text_store_max = 2; char text_store[text_store_max][text_store_size + 1]; bool learn_new_remote; EditElement element; diff --git a/applications/irda/scene/irda-app-scene-edit-rename.cpp b/applications/irda/scene/irda-app-scene-edit-rename.cpp index d821d03f..39fbf2ba 100644 --- a/applications/irda/scene/irda-app-scene-edit-rename.cpp +++ b/applications/irda/scene/irda-app-scene-edit-rename.cpp @@ -3,24 +3,31 @@ void IrdaAppSceneEditRename::on_enter(IrdaApp* app) { IrdaAppViewManager* view_manager = app->get_view_manager(); TextInput* text_input = view_manager->get_text_input(); + size_t enter_name_length = 0; auto remote_manager = app->get_remote_manager(); if(app->get_edit_element() == IrdaApp::EditElement::Button) { furi_assert(app->get_current_button() != IrdaApp::ButtonNA); auto button_name = remote_manager->get_button_name(app->get_current_button()); - strncpy(app->get_text_store(0), button_name.c_str(), app->get_text_store_size()); + char* buffer_str = app->get_text_store(0); + size_t max_len = IrdaAppRemoteManager::max_button_name_length; + strncpy(buffer_str, button_name.c_str(), max_len); + buffer_str[max_len + 1] = 0; + enter_name_length = max_len; + text_input_set_header_text(text_input, "Name the key"); } else { auto remote_name = remote_manager->get_remote_name(); strncpy(app->get_text_store(0), remote_name.c_str(), app->get_text_store_size()); + enter_name_length = IrdaAppRemoteManager::max_remote_name_length; + text_input_set_header_text(text_input, "Name the remote"); } - text_input_set_header_text(text_input, "Name the key"); text_input_set_result_callback( text_input, IrdaApp::text_input_callback, app, app->get_text_store(0), - app->get_text_store_size(), + enter_name_length, false); view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput); diff --git a/applications/irda/scene/irda-app-scene-learn-enter-name.cpp b/applications/irda/scene/irda-app-scene-learn-enter-name.cpp index 185e7fbc..aa22d620 100644 --- a/applications/irda/scene/irda-app-scene-learn-enter-name.cpp +++ b/applications/irda/scene/irda-app-scene-learn-enter-name.cpp @@ -26,7 +26,7 @@ void IrdaAppSceneLearnEnterName::on_enter(IrdaApp* app) { IrdaApp::text_input_callback, app, app->get_text_store(0), - app->get_text_store_size(), + IrdaAppRemoteManager::max_button_name_length, false); view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput); diff --git a/firmware/targets/f6/furi-hal/furi-hal-irda.c b/firmware/targets/f6/furi-hal/furi-hal-irda.c index 16e5b8dd..370fea42 100644 --- a/firmware/targets/f6/furi-hal/furi-hal-irda.c +++ b/firmware/targets/f6/furi-hal/furi-hal-irda.c @@ -17,6 +17,13 @@ #include #include +#define IRDA_TX_DEBUG 0 + +#if IRDA_TX_DEBUG == 1 +#define gpio_irda_tx gpio_irda_tx_debug +const GpioPin gpio_irda_tx_debug = {.port = GPIOA, .pin = GPIO_PIN_7}; +#endif + #define IRDA_TIM_TX_DMA_BUFFER_SIZE 200 #define IRDA_POLARITY_SHIFT 1 @@ -46,6 +53,9 @@ typedef struct { void* signal_sent_context; IrdaTxBuf buffer[2]; osSemaphoreId_t stop_semaphore; + uint32_t tx_timing_rest_duration; /** if timing is too long (> 0xFFFF), send it in few iterations */ + bool tx_timing_rest_level; + FuriHalIrdaTxGetDataState tx_timing_rest_status; } IrdaTimTx; typedef enum { @@ -62,7 +72,7 @@ static volatile IrdaState furi_hal_irda_state = IrdaStateIdle; static IrdaTimTx irda_tim_tx; static IrdaTimRx irda_tim_rx; -static bool furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift); +static void furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift); static void furi_hal_irda_async_tx_free_resources(void); static void furi_hal_irda_tx_dma_set_polarity(uint8_t buf_num, uint8_t polarity_shift); static void furi_hal_irda_tx_dma_set_buffer(uint8_t buf_num); @@ -72,6 +82,7 @@ static void furi_hal_irda_tx_dma_polarity_isr(); static void furi_hal_irda_tx_dma_isr(); static void furi_hal_irda_tim_rx_isr() { + static uint32_t previous_captured_ch2 = 0; /* Timeout */ if(LL_TIM_IsActiveFlag_CC3(TIM2)) { @@ -97,7 +108,7 @@ static void furi_hal_irda_tim_rx_isr() { if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC1S)) { /* Low pin level is a Mark state of IRDA signal. Invert level for further processing. */ - uint32_t duration = LL_TIM_IC_GetCaptureCH1(TIM2) - LL_TIM_IC_GetCaptureCH2(TIM2); + uint32_t duration = LL_TIM_IC_GetCaptureCH1(TIM2) - previous_captured_ch2; if (irda_tim_rx.capture_callback) irda_tim_rx.capture_callback(irda_tim_rx.capture_context, 1, duration); } else { @@ -113,6 +124,7 @@ static void furi_hal_irda_tim_rx_isr() { if(READ_BIT(TIM2->CCMR1, TIM_CCMR1_CC2S)) { /* High pin level is a Space state of IRDA signal. Invert level for further processing. */ uint32_t duration = LL_TIM_IC_GetCaptureCH2(TIM2); + previous_captured_ch2 = duration; if (irda_tim_rx.capture_callback) irda_tim_rx.capture_callback(irda_tim_rx.capture_context, 0, duration); } else { @@ -258,14 +270,10 @@ static void furi_hal_irda_tx_dma_isr() { if (irda_tim_tx.buffer[buf_num].last_packet_end) { LL_DMA_DisableIT_HT(DMA1, LL_DMA_CHANNEL_2); } else if (!irda_tim_tx.buffer[buf_num].packet_end || (furi_hal_irda_state == IrdaStateAsyncTx)) { - bool result = furi_hal_irda_tx_fill_buffer(next_buf_num, 0); + furi_hal_irda_tx_fill_buffer(next_buf_num, 0); if (irda_tim_tx.buffer[next_buf_num].last_packet_end) { LL_DMA_DisableIT_HT(DMA1, LL_DMA_CHANNEL_2); } - if (!result) { - furi_assert(0); - furi_hal_irda_state = IrdaStateAsyncTxStopReq; - } } else if (furi_hal_irda_state == IrdaStateAsyncTxStopReq) { /* fallthrough */ } else { @@ -291,7 +299,7 @@ static void furi_hal_irda_tx_dma_isr() { /* if it's not end of the packet - continue receiving */ furi_hal_irda_tx_dma_set_buffer(next_buf_num); } - if (irda_tim_tx.signal_sent_callback) { + if (irda_tim_tx.signal_sent_callback && irda_tim_tx.buffer[buf_num].packet_end && (furi_hal_irda_state != IrdaStateAsyncTxStopped)) { irda_tim_tx.signal_sent_callback(irda_tim_tx.signal_sent_context); } } @@ -309,6 +317,16 @@ static void furi_hal_irda_configure_tim_pwm_tx(uint32_t freq, float duty_cycle) LL_TIM_SetCounterMode(TIM1, LL_TIM_COUNTERMODE_UP); LL_TIM_EnableARRPreload(TIM1); LL_TIM_SetAutoReload(TIM1, __LL_TIM_CALC_ARR(SystemCoreClock, LL_TIM_GetPrescaler(TIM1), freq)); +#if IRDA_TX_DEBUG == 1 + LL_TIM_OC_SetCompareCH1(TIM1, ( (LL_TIM_GetAutoReload(TIM1) + 1 ) * (1 - duty_cycle))); + LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH1); + /* LL_TIM_OCMODE_PWM2 set by DMA */ + LL_TIM_OC_SetMode(TIM1, LL_TIM_CHANNEL_CH1, LL_TIM_OCMODE_FORCED_INACTIVE); + LL_TIM_OC_SetPolarity(TIM1, LL_TIM_CHANNEL_CH1N, LL_TIM_OCPOLARITY_HIGH); + LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH1); + LL_TIM_CC_EnableChannel(TIM1, LL_TIM_CHANNEL_CH1N); + LL_TIM_DisableIT_CC1(TIM1); +#else LL_TIM_OC_SetCompareCH3(TIM1, ( (LL_TIM_GetAutoReload(TIM1) + 1 ) * (1 - duty_cycle))); LL_TIM_OC_EnablePreload(TIM1, LL_TIM_CHANNEL_CH3); /* LL_TIM_OCMODE_PWM2 set by DMA */ @@ -317,6 +335,7 @@ static void furi_hal_irda_configure_tim_pwm_tx(uint32_t freq, float duty_cycle) LL_TIM_OC_DisableFast(TIM1, LL_TIM_CHANNEL_CH3); LL_TIM_CC_EnableChannel(TIM1, LL_TIM_CHANNEL_CH3N); LL_TIM_DisableIT_CC3(TIM1); +#endif LL_TIM_DisableMasterSlaveMode(TIM1); LL_TIM_EnableAllOutputs(TIM1); LL_TIM_DisableIT_UPDATE(TIM1); @@ -330,7 +349,11 @@ static void furi_hal_irda_configure_tim_cmgr2_dma_tx(void) { LL_C2_AHB1_GRP1_EnableClock(LL_C2_AHB1_GRP1_PERIPH_DMA1); LL_DMA_InitTypeDef dma_config = {0}; +#if IRDA_TX_DEBUG == 1 + dma_config.PeriphOrM2MSrcAddress = (uint32_t)&(TIM1->CCMR1); +#else dma_config.PeriphOrM2MSrcAddress = (uint32_t)&(TIM1->CCMR2); +#endif dma_config.MemoryOrM2MDstAddress = (uint32_t) NULL; dma_config.Direction = LL_DMA_DIRECTION_MEMORY_TO_PERIPH; dma_config.Mode = LL_DMA_MODE_NORMAL; @@ -399,7 +422,7 @@ static void furi_hal_irda_tx_fill_buffer_last(uint8_t buf_num) { irda_tim_tx.buffer[buf_num].packet_end = true; } -static bool furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift) { +static void furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift) { furi_assert(buf_num < 2); furi_assert(furi_hal_irda_state != IrdaStateAsyncRx); furi_assert(furi_hal_irda_state < IrdaStateMAX); @@ -418,28 +441,53 @@ static bool furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift } for (*size = 0; (*size < IRDA_TIM_TX_DMA_BUFFER_SIZE) && (status == FuriHalIrdaTxGetDataStateOk); ++(*size), ++polarity_counter) { - status = irda_tim_tx.data_callback(irda_tim_tx.data_context, &duration, &level); - if (status == FuriHalIrdaTxGetDataStateError) { - furi_assert(0); - break; + if (irda_tim_tx.tx_timing_rest_duration > 0) { + if (irda_tim_tx.tx_timing_rest_duration > 0xFFFF) { + buffer->data[*size] = 0xFFFF; + status = FuriHalIrdaTxGetDataStateOk; + } else { + buffer->data[*size] = irda_tim_tx.tx_timing_rest_duration; + status = irda_tim_tx.tx_timing_rest_status; + } + irda_tim_tx.tx_timing_rest_duration -= buffer->data[*size]; + buffer->polarity[polarity_counter] = irda_tim_tx.tx_timing_rest_level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW; + continue; } + status = irda_tim_tx.data_callback(irda_tim_tx.data_context, &duration, &level); + uint32_t num_of_impulses = roundf(duration / irda_tim_tx.cycle_duration); - if ((buffer->data[*size] + num_of_impulses - 1) > 0xFFFF) { - furi_assert(0); - status = FuriHalIrdaTxGetDataStateError; - break; + if (num_of_impulses == 0) { + if ((*size == 0) && (status == FuriHalIrdaTxGetDataStateDone)) { + /* if this is one sample in current buffer, but we + * have more to send - continue + */ + status = FuriHalIrdaTxGetDataStateOk; + } + --(*size); + --polarity_counter; + } else if ((num_of_impulses - 1) > 0xFFFF) { + irda_tim_tx.tx_timing_rest_duration = num_of_impulses - 1; + irda_tim_tx.tx_timing_rest_status = status; + irda_tim_tx.tx_timing_rest_level = level; + buffer->polarity[polarity_counter] = level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW; + buffer->data[*size] = 0xFFFF; + status = FuriHalIrdaTxGetDataStateOk; + } else { + buffer->polarity[polarity_counter] = level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW; + buffer->data[*size] = num_of_impulses - 1; } - - buffer->polarity[polarity_counter] = level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW; - buffer->data[*size] = num_of_impulses - 1; } buffer->last_packet_end = (status == FuriHalIrdaTxGetDataStateLastDone); buffer->packet_end = buffer->last_packet_end || (status == FuriHalIrdaTxGetDataStateDone); - return status != FuriHalIrdaTxGetDataStateError; + if (*size == 0) { + buffer->data[0] = 0; // 1 pulse + buffer->polarity[0] = IRDA_TX_CCMR_LOW; + buffer->size = 1; + } } static void furi_hal_irda_tx_dma_set_polarity(uint8_t buf_num, uint8_t polarity_shift) { @@ -505,10 +553,9 @@ static void furi_hal_irda_async_tx_free_resources(void) { irda_tim_tx.buffer[1].polarity = NULL; } -bool furi_hal_irda_async_tx_start(uint32_t freq, float duty_cycle) { - if ((duty_cycle > 1) || (duty_cycle < 0) || (freq > 40000) || (freq < 10000) || (irda_tim_tx.data_callback == NULL)) { - furi_assert(0); - return false; +void furi_hal_irda_async_tx_start(uint32_t freq, float duty_cycle) { + if ((duty_cycle > 1) || (duty_cycle <= 0) || (freq > IRDA_MAX_FREQUENCY) || (freq < IRDA_MIN_FREQUENCY) || (irda_tim_tx.data_callback == NULL)) { + furi_check(0); } furi_assert(furi_hal_irda_state == IrdaStateIdle); @@ -527,37 +574,31 @@ bool furi_hal_irda_async_tx_start(uint32_t freq, float duty_cycle) { irda_tim_tx.stop_semaphore = osSemaphoreNew(1, 0, NULL); irda_tim_tx.cycle_duration = 1000000.0 / freq; + irda_tim_tx.tx_timing_rest_duration = 0; - bool result = furi_hal_irda_tx_fill_buffer(0, IRDA_POLARITY_SHIFT); + furi_hal_irda_tx_fill_buffer(0, IRDA_POLARITY_SHIFT); - if (result) { - furi_hal_irda_configure_tim_pwm_tx(freq, duty_cycle); - furi_hal_irda_configure_tim_cmgr2_dma_tx(); - furi_hal_irda_configure_tim_rcr_dma_tx(); - furi_hal_irda_tx_dma_set_polarity(0, IRDA_POLARITY_SHIFT); - furi_hal_irda_tx_dma_set_buffer(0); + furi_hal_irda_configure_tim_pwm_tx(freq, duty_cycle); + furi_hal_irda_configure_tim_cmgr2_dma_tx(); + furi_hal_irda_configure_tim_rcr_dma_tx(); + furi_hal_irda_tx_dma_set_polarity(0, IRDA_POLARITY_SHIFT); + furi_hal_irda_tx_dma_set_buffer(0); - furi_hal_irda_state = IrdaStateAsyncTx; + furi_hal_irda_state = IrdaStateAsyncTx; - LL_TIM_ClearFlag_UPDATE(TIM1); - LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1); - LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_2); - delay_us(5); - LL_TIM_GenerateEvent_UPDATE(TIM1); /* DMA -> TIMx_RCR */ - delay_us(5); - LL_GPIO_ResetOutputPin(gpio_irda_tx.port, gpio_irda_tx.pin); /* when disable it prevents false pulse */ - hal_gpio_init_ex(&gpio_irda_tx, GpioModeAltFunctionPushPull, GpioPullUp, GpioSpeedHigh, GpioAltFn1TIM1); + LL_TIM_ClearFlag_UPDATE(TIM1); + LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1); + LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_2); + delay_us(5); + LL_TIM_GenerateEvent_UPDATE(TIM1); /* DMA -> TIMx_RCR */ + delay_us(5); + LL_GPIO_ResetOutputPin(gpio_irda_tx.port, gpio_irda_tx.pin); /* when disable it prevents false pulse */ + hal_gpio_init_ex(&gpio_irda_tx, GpioModeAltFunctionPushPull, GpioPullUp, GpioSpeedHigh, GpioAltFn1TIM1); - __disable_irq(); - LL_TIM_GenerateEvent_UPDATE(TIM1); /* TIMx_RCR -> Repetition counter */ - LL_TIM_EnableCounter(TIM1); - __enable_irq(); - - } else { - furi_hal_irda_async_tx_free_resources(); - } - - return result; + __disable_irq(); + LL_TIM_GenerateEvent_UPDATE(TIM1); /* TIMx_RCR -> Repetition counter */ + LL_TIM_EnableCounter(TIM1); + __enable_irq(); } void furi_hal_irda_async_tx_wait_termination(void) { diff --git a/firmware/targets/furi-hal-include/furi-hal-irda.h b/firmware/targets/furi-hal-include/furi-hal-irda.h index 6e490402..260180d2 100644 --- a/firmware/targets/furi-hal-include/furi-hal-irda.h +++ b/firmware/targets/furi-hal-include/furi-hal-irda.h @@ -7,8 +7,10 @@ extern "C" { #endif +#define IRDA_MAX_FREQUENCY 56000 +#define IRDA_MIN_FREQUENCY 10000 + typedef enum { - FuriHalIrdaTxGetDataStateError, /* An error occured during transmission */ FuriHalIrdaTxGetDataStateOk, /* New data obtained */ FuriHalIrdaTxGetDataStateDone, /* New data obtained, and this is end of package */ FuriHalIrdaTxGetDataStateLastDone, /* New data obtained, and this is end of package and no more data available */ @@ -103,10 +105,8 @@ void furi_hal_irda_async_tx_set_data_isr_callback(FuriHalIrdaTxGetDataISRCallbac * * @param[in] freq - frequency for PWM * @param[in] duty_cycle - duty cycle for PWM - * @return true if transmission successfully started, false otherwise. - * If start failed no need to free resources. */ -bool furi_hal_irda_async_tx_start(uint32_t freq, float duty_cycle); +void furi_hal_irda_async_tx_start(uint32_t freq, float duty_cycle); /** * Stop IR asynchronous transmission and free resources. diff --git a/lib/app-scened-template/file-worker.c b/lib/app-scened-template/file-worker.c index 3f1bb175..52427aed 100644 --- a/lib/app-scened-template/file-worker.c +++ b/lib/app-scened-template/file-worker.c @@ -1,5 +1,5 @@ #include "file-worker.h" -#include "m-string.h" +#include #include #include #include @@ -350,7 +350,7 @@ bool file_worker_read_until_buffered( } } - if(max_length_exceeded) string_clear(str_result); + if(max_length_exceeded) string_clean(str_result); return string_size(str_result) || *file_buf_cnt; } diff --git a/lib/irda/worker/irda_transmit.c b/lib/irda/worker/irda_transmit.c index e87de6ca..b27b18c0 100644 --- a/lib/irda/worker/irda_transmit.c +++ b/lib/irda/worker/irda_transmit.c @@ -38,7 +38,6 @@ FuriHalIrdaTxGetDataState irda_get_raw_data_callback (void* context, uint32_t* d void irda_send_raw_ext(const uint32_t timings[], uint32_t timings_cnt, bool start_from_mark, uint32_t frequency, float duty_cycle) { furi_assert(timings); - furi_assert(timings_cnt > 1); irda_tx_raw_start_from_mark = start_from_mark; irda_tx_raw_timings_index = 0; @@ -56,7 +55,7 @@ void irda_send_raw(const uint32_t timings[], uint32_t timings_cnt, bool start_fr } FuriHalIrdaTxGetDataState irda_get_data_callback (void* context, uint32_t* duration, bool* level) { - FuriHalIrdaTxGetDataState state = FuriHalIrdaTxGetDataStateError; + FuriHalIrdaTxGetDataState state = FuriHalIrdaTxGetDataStateLastDone; IrdaEncoderHandler* handler = context; IrdaStatus status = IrdaStatusError; @@ -65,7 +64,9 @@ FuriHalIrdaTxGetDataState irda_get_data_callback (void* context, uint32_t* durat } if (status == IrdaStatusError) { - state = FuriHalIrdaTxGetDataStateError; + state = FuriHalIrdaTxGetDataStateLastDone; + *duration = 0; + *level = 0; } else if (status == IrdaStatusOk) { state = FuriHalIrdaTxGetDataStateOk; } else if (status == IrdaStatusDone) { @@ -74,8 +75,7 @@ FuriHalIrdaTxGetDataState irda_get_data_callback (void* context, uint32_t* durat state = FuriHalIrdaTxGetDataStateLastDone; } } else { - furi_assert(0); - state = FuriHalIrdaTxGetDataStateError; + furi_check(0); } return state; @@ -90,8 +90,11 @@ void irda_send(const IrdaMessage* message, int times) { irda_reset_encoder(handler, message); irda_tx_number_of_transmissions = times; + uint32_t frequency = irda_get_protocol_frequency(message->protocol); + float duty_cycle = irda_get_protocol_duty_cycle(message->protocol); + furi_hal_irda_async_tx_set_data_isr_callback(irda_get_data_callback, handler); - furi_hal_irda_async_tx_start(IRDA_COMMON_CARRIER_FREQUENCY, IRDA_COMMON_DUTY_CYCLE); + furi_hal_irda_async_tx_start(frequency, duty_cycle); furi_hal_irda_async_tx_wait_termination(); irda_free_encoder(handler); diff --git a/lib/irda/worker/irda_worker.c b/lib/irda/worker/irda_worker.c index 041ea090..62d4363f 100644 --- a/lib/irda/worker/irda_worker.c +++ b/lib/irda/worker/irda_worker.c @@ -44,8 +44,9 @@ struct IrdaWorkerSignal{ size_t timings_cnt; union { IrdaMessage message; - uint32_t timings[MAX_TIMINGS_AMOUNT]; - } data; + /* +1 is for pause we add at the beginning */ + uint32_t timings[MAX_TIMINGS_AMOUNT + 1]; + }; }; struct IrdaWorker { @@ -125,7 +126,7 @@ static void irda_worker_process_timeout(IrdaWorker* instance) { static void irda_worker_process_timings(IrdaWorker* instance, uint32_t duration, bool level) { const IrdaMessage* message_decoded = irda_decode(instance->irda_decoder, level, duration); if (message_decoded) { - instance->signal.data.message = *message_decoded; + instance->signal.message = *message_decoded; instance->signal.timings_cnt = 0; instance->signal.decoded = true; if (instance->rx.received_signal_callback) @@ -137,7 +138,7 @@ static void irda_worker_process_timings(IrdaWorker* instance, uint32_t duration, } if (instance->signal.timings_cnt < MAX_TIMINGS_AMOUNT) { - instance->signal.data.timings[instance->signal.timings_cnt] = duration; + instance->signal.timings[instance->signal.timings_cnt] = duration; ++instance->signal.timings_cnt; } else { uint32_t flags_set = osEventFlagsSet(instance->events, IRDA_WORKER_OVERRUN); @@ -211,7 +212,7 @@ IrdaWorker* irda_worker_alloc() { furi_thread_set_stack_size(instance->thread, 2048); furi_thread_set_context(instance->thread, instance); - size_t buffer_size = MAX(sizeof(IrdaWorkerTiming) * MAX_TIMINGS_AMOUNT, sizeof(LevelDuration) * MAX_TIMINGS_AMOUNT); + size_t buffer_size = MAX(sizeof(IrdaWorkerTiming) * (MAX_TIMINGS_AMOUNT + 1), sizeof(LevelDuration) * MAX_TIMINGS_AMOUNT); instance->stream = xStreamBufferCreate(buffer_size, sizeof(IrdaWorkerTiming)); instance->irda_decoder = irda_alloc_decoder(); instance->irda_encoder = irda_alloc_encoder(); @@ -283,13 +284,13 @@ void irda_worker_get_raw_signal(const IrdaWorkerSignal* signal, const uint32_t** furi_assert(timings); furi_assert(timings_cnt); - *timings = signal->data.timings; + *timings = signal->timings; *timings_cnt = signal->timings_cnt; } const IrdaMessage* irda_worker_get_decoded_signal(const IrdaWorkerSignal* signal) { furi_assert(signal); - return &signal->data.message; + return &signal->message; } void irda_worker_rx_enable_blink_on_receiving(IrdaWorker* instance, bool enable) { @@ -328,21 +329,24 @@ static FuriHalIrdaTxGetDataState irda_worker_furi_hal_data_isr_callback(void* co furi_assert(level); IrdaWorker* instance = context; - IrdaWorkerTiming timing = {.state = FuriHalIrdaTxGetDataStateError} ; + IrdaWorkerTiming timing; + FuriHalIrdaTxGetDataState state; if (sizeof(IrdaWorkerTiming) == xStreamBufferReceiveFromISR(instance->stream, &timing, sizeof(IrdaWorkerTiming), 0)) { *level = timing.level; *duration = timing.duration; - furi_assert(timing.state != FuriHalIrdaTxGetDataStateError); + state = timing.state; } else { furi_assert(0); - timing.state = FuriHalIrdaTxGetDataStateError; + *level = 0; + *duration = 100; + state = FuriHalIrdaTxGetDataStateDone; } uint32_t flags_set = osEventFlagsSet(instance->events, IRDA_WORKER_TX_FILL_BUFFER); furi_check(flags_set & IRDA_WORKER_TX_FILL_BUFFER); - return timing.state; + return state; } static bool irda_get_new_signal(IrdaWorker* instance) { @@ -353,8 +357,8 @@ static bool irda_get_new_signal(IrdaWorker* instance) { uint32_t new_tx_frequency = 0; float new_tx_duty_cycle = 0; if (instance->signal.decoded) { - new_tx_frequency = irda_get_protocol_frequency(instance->signal.data.message.protocol); - new_tx_duty_cycle = irda_get_protocol_duty_cycle(instance->signal.data.message.protocol); + new_tx_frequency = irda_get_protocol_frequency(instance->signal.message.protocol); + new_tx_duty_cycle = irda_get_protocol_duty_cycle(instance->signal.message.protocol); } else { furi_assert(instance->signal.timings_cnt > 1); new_tx_frequency = IRDA_COMMON_CARRIER_FREQUENCY; @@ -366,7 +370,7 @@ static bool irda_get_new_signal(IrdaWorker* instance) { instance->tx.frequency = new_tx_frequency; instance->tx.duty_cycle = new_tx_duty_cycle; if (instance->signal.decoded) { - irda_reset_encoder(instance->irda_encoder, &instance->signal.data.message); + irda_reset_encoder(instance->irda_encoder, &instance->signal.message); } new_signal_obtained = true; } else if (response == IrdaWorkerGetSignalResponseSame) { @@ -390,8 +394,8 @@ static bool irda_worker_tx_fill_buffer(IrdaWorker* instance) { if (instance->signal.decoded) { status = irda_encode(instance->irda_encoder, &timing.duration, &timing.level); } else { - timing.duration = instance->signal.data.timings[instance->tx.tx_raw_cnt]; -/* raw always starts from Mark, but we fulfill it with space delay at start */ + timing.duration = instance->signal.timings[instance->tx.tx_raw_cnt]; +/* raw always starts from Mark, but we fill it with space delay at start */ timing.level = (instance->tx.tx_raw_cnt % 2); ++instance->tx.tx_raw_cnt; if (instance->tx.tx_raw_cnt >= instance->signal.timings_cnt) { @@ -532,16 +536,18 @@ void irda_worker_set_decoded_signal(IrdaWorker* instance, const IrdaMessage* mes furi_assert(message); instance->signal.decoded = true; - instance->signal.data.message = *message; + instance->signal.message = *message; } void irda_worker_set_raw_signal(IrdaWorker* instance, const uint32_t* timings, size_t timings_cnt) { furi_assert(instance); furi_assert(timings); - furi_assert(timings_cnt > 2); + furi_assert(timings_cnt > 0); + size_t max_copy_num = COUNT_OF(instance->signal.timings) - 1; + furi_check(timings_cnt <= max_copy_num); - instance->signal.data.timings[0] = IRDA_RAW_TX_TIMING_DELAY_US; - memcpy(&instance->signal.data.timings[1], timings, timings_cnt * sizeof(uint32_t)); + instance->signal.timings[0] = IRDA_RAW_TX_TIMING_DELAY_US; + memcpy(&instance->signal.timings[1], timings, timings_cnt * sizeof(uint32_t)); instance->signal.decoded = false; instance->signal.timings_cnt = timings_cnt + 1; } diff --git a/lib/toolbox/args.h b/lib/toolbox/args.h index 4d394092..e6c35e56 100644 --- a/lib/toolbox/args.h +++ b/lib/toolbox/args.h @@ -1,7 +1,8 @@ #pragma once -#include "m-string.h" -#include "stdint.h" -#include "stdbool.h" + +#include +#include +#include #ifdef __cplusplus extern "C" { diff --git a/lib/toolbox/path.h b/lib/toolbox/path.h index fbcf6349..da9b703d 100644 --- a/lib/toolbox/path.h +++ b/lib/toolbox/path.h @@ -1,5 +1,6 @@ #pragma once -#include "m-string.h" + +#include #ifdef __cplusplus extern "C" { From 227ef47e2db881a3cad9356a8a9f56d27b397913 Mon Sep 17 00:00:00 2001 From: gornekich Date: Thu, 19 Aug 2021 03:24:52 +0300 Subject: [PATCH 17/18] [FL-1641] File select fix #658 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- applications/gui/modules/file_select.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/gui/modules/file_select.c b/applications/gui/modules/file_select.c index 1b68e46f..f41b95c9 100644 --- a/applications/gui/modules/file_select.c +++ b/applications/gui/modules/file_select.c @@ -289,7 +289,7 @@ bool file_select_fill_strings(FileSelect* file_select) { storage_dir_close(directory); storage_file_free(directory); free(name); - return false; + return true; } while(1) { @@ -350,7 +350,7 @@ bool file_select_fill_count(FileSelect* file_select) { storage_dir_close(directory); storage_file_free(directory); free(name); - return false; + return true; } while(1) { From 54278b9adc156337fa21243a50c835c235d94e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Thu, 19 Aug 2021 12:56:42 +0300 Subject: [PATCH 18/18] Github: proper workflow handling for tags (#660) --- .github/workflows/build.yml | 1 + .github/workflows/lint_c.yml | 1 + .github/workflows/lint_python.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 19d4b5bf..baef8fe1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,7 @@ on: - dev - "release*" tags: + - '*' pull_request: env: diff --git a/.github/workflows/lint_c.yml b/.github/workflows/lint_c.yml index d9be8f80..828a7f70 100644 --- a/.github/workflows/lint_c.yml +++ b/.github/workflows/lint_c.yml @@ -6,6 +6,7 @@ on: - dev - "release*" tags: + - '*' pull_request: env: diff --git a/.github/workflows/lint_python.yml b/.github/workflows/lint_python.yml index 82f746ab..e665378b 100644 --- a/.github/workflows/lint_python.yml +++ b/.github/workflows/lint_python.yml @@ -6,6 +6,7 @@ on: - dev - "release*" tags: + - '*' pull_request: jobs: