From a30f557999501cb2a6d74f269caba7f084a43843 Mon Sep 17 00:00:00 2001 From: Cilly Leang Date: Fri, 23 Jan 2026 17:07:47 +1100 Subject: [PATCH] init --- .gitignore | 19 + LICENCE | 674 ++++++++++++++++++ README.md | 40 ++ build.gradle.kts | 10 + composeApp/build.gradle.kts | 87 +++ .../src/androidMain/AndroidManifest.xml | 22 + .../kotlin/moe/lava/neon/MainActivity.kt | 25 + .../kotlin/moe/lava/neon/Platform.android.kt | 9 + .../drawable-v24/ic_launcher_foreground.xml | 30 + .../res/drawable/ic_launcher_background.xml | 170 +++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../src/androidMain/res/values/strings.xml | 3 + .../drawable/compose-multiplatform.xml | 44 ++ .../commonMain/kotlin/moe/lava/neon/App.kt | 49 ++ .../kotlin/moe/lava/neon/Greeting.kt | 9 + .../kotlin/moe/lava/neon/Platform.kt | 7 + .../moe/lava/neon/ComposeAppCommonTest.kt | 12 + .../kotlin/moe/lava/neon/Platform.jvm.kt | 7 + .../src/jvmMain/kotlin/moe/lava/neon/main.kt | 13 + gradle.properties | 12 + gradle/libs.versions.toml | 45 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43764 bytes gradle/wrapper/gradle-wrapper.properties | 7 + gradlew | 251 +++++++ gradlew.bat | 94 +++ settings.gradle.kts | 35 + 37 files changed, 1684 insertions(+) create mode 100644 .gitignore create mode 100644 LICENCE create mode 100644 README.md create mode 100644 build.gradle.kts create mode 100644 composeApp/build.gradle.kts create mode 100644 composeApp/src/androidMain/AndroidManifest.xml create mode 100644 composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt create mode 100644 composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt create mode 100644 composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 composeApp/src/androidMain/res/drawable/ic_launcher_background.xml create mode 100644 composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png create mode 100644 composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png create mode 100644 composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png create mode 100644 composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 composeApp/src/androidMain/res/values/strings.xml create mode 100644 composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml create mode 100644 composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt create mode 100644 composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt create mode 100644 composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt create mode 100644 composeApp/src/commonTest/kotlin/moe/lava/neon/ComposeAppCommonTest.kt create mode 100644 composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt create mode 100644 composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt create mode 100644 gradle.properties create mode 100644 gradle/libs.versions.toml create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..adfa9bf --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +*.iml +.kotlin +.gradle +**/build/ +xcuserdata +!src/**/build/ +local.properties +.idea +.DS_Store +captures +.externalNativeBuild +.cxx +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcodeproj/project.xcworkspace/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings +node_modules/ diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENCE @@ -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 +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..98d7e7e --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +This is a Kotlin Multiplatform project targeting Android, Desktop (JVM). + +* [/composeApp](./composeApp/src) is for code that will be shared across your Compose Multiplatform applications. + It contains several subfolders: + - [commonMain](./composeApp/src/commonMain/kotlin) is for code that’s common for all targets. + - Other folders are for Kotlin code that will be compiled for only the platform indicated in the folder name. + For example, if you want to use Apple’s CoreCrypto for the iOS part of your Kotlin app, + the [iosMain](./composeApp/src/iosMain/kotlin) folder would be the right place for such calls. + Similarly, if you want to edit the Desktop (JVM) specific part, the [jvmMain](./composeApp/src/jvmMain/kotlin) + folder is the appropriate location. + +### Build and Run Android Application + +To build and run the development version of the Android app, use the run configuration from the run widget +in your IDE’s toolbar or build it directly from the terminal: +- on macOS/Linux + ```shell + ./gradlew :composeApp:assembleDebug + ``` +- on Windows + ```shell + .\gradlew.bat :composeApp:assembleDebug + ``` + +### Build and Run Desktop (JVM) Application + +To build and run the development version of the desktop app, use the run configuration from the run widget +in your IDE’s toolbar or run it directly from the terminal: +- on macOS/Linux + ```shell + ./gradlew :composeApp:run + ``` +- on Windows + ```shell + .\gradlew.bat :composeApp:run + ``` + +--- + +Learn more about [Kotlin Multiplatform](https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html)… \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..98ddb8c --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,10 @@ +plugins { + // this is necessary to avoid the plugins to be loaded multiple times + // in each subproject's classloader + alias(libs.plugins.androidApplication) apply false + alias(libs.plugins.androidLibrary) apply false + alias(libs.plugins.composeHotReload) apply false + alias(libs.plugins.composeMultiplatform) apply false + alias(libs.plugins.composeCompiler) apply false + alias(libs.plugins.kotlinMultiplatform) apply false +} \ No newline at end of file diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts new file mode 100644 index 0000000..f959073 --- /dev/null +++ b/composeApp/build.gradle.kts @@ -0,0 +1,87 @@ +import org.jetbrains.compose.desktop.application.dsl.TargetFormat +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.kotlinMultiplatform) + alias(libs.plugins.androidApplication) + alias(libs.plugins.composeMultiplatform) + alias(libs.plugins.composeCompiler) + alias(libs.plugins.composeHotReload) +} + +kotlin { + androidTarget { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_11) + } + } + + jvm() + + sourceSets { + androidMain.dependencies { + implementation(libs.compose.uiToolingPreview) + implementation(libs.androidx.activity.compose) + } + commonMain.dependencies { + implementation(libs.compose.runtime) + implementation(libs.compose.foundation) + implementation(libs.compose.material3) + implementation(libs.compose.ui) + implementation(libs.compose.components.resources) + implementation(libs.compose.uiToolingPreview) + implementation(libs.androidx.lifecycle.viewmodelCompose) + implementation(libs.androidx.lifecycle.runtimeCompose) + } + commonTest.dependencies { + implementation(libs.kotlin.test) + } + jvmMain.dependencies { + implementation(compose.desktop.currentOs) + implementation(libs.kotlinx.coroutinesSwing) + } + } +} + +android { + namespace = "moe.lava.neon" + compileSdk = libs.versions.android.compileSdk.get().toInt() + + defaultConfig { + applicationId = "moe.lava.neon" + minSdk = libs.versions.android.minSdk.get().toInt() + targetSdk = libs.versions.android.targetSdk.get().toInt() + versionCode = 1 + versionName = "1.0" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + buildTypes { + getByName("release") { + isMinifyEnabled = false + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } +} + +dependencies { + debugImplementation(libs.compose.uiTooling) +} + +compose.desktop { + application { + mainClass = "moe.lava.neon.MainKt" + + nativeDistributions { + targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) + packageName = "moe.lava.neon" + packageVersion = "1.0.0" + } + } +} diff --git a/composeApp/src/androidMain/AndroidManifest.xml b/composeApp/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..26403a7 --- /dev/null +++ b/composeApp/src/androidMain/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt b/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt new file mode 100644 index 0000000..5ca8117 --- /dev/null +++ b/composeApp/src/androidMain/kotlin/moe/lava/neon/MainActivity.kt @@ -0,0 +1,25 @@ +package moe.lava.neon + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + enableEdgeToEdge() + super.onCreate(savedInstanceState) + + setContent { + App() + } + } +} + +@Preview +@Composable +fun AppAndroidPreview() { + App() +} \ No newline at end of file diff --git a/composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt b/composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt new file mode 100644 index 0000000..d96b915 --- /dev/null +++ b/composeApp/src/androidMain/kotlin/moe/lava/neon/Platform.android.kt @@ -0,0 +1,9 @@ +package moe.lava.neon + +import android.os.Build + +class AndroidPlatform : Platform { + override val name: String = "Android ${Build.VERSION.SDK_INT}" +} + +actual fun getPlatform(): Platform = AndroidPlatform() \ No newline at end of file diff --git a/composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml b/composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/res/drawable/ic_launcher_background.xml b/composeApp/src/androidMain/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..e93e11a --- /dev/null +++ b/composeApp/src/androidMain/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png b/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a571e60098c92c2baca8a5df62f2929cbff01b52 GIT binary patch literal 3593 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 WV&P9cPId+c1_n=8KbLh*2~7Y{g#b(d literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png b/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..61da551c5594a1f9d26193983d2cd69189014603 GIT binary patch literal 5339 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 Oz~JfX=d#Wzp$Pz52`(1^ literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png b/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c41dd28531901b2c23927768c84bb6765ebcc1db GIT binary patch literal 2636 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 literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png b/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..db5080a752731b34d38d7c634732b2cd999125d0 GIT binary patch literal 3388 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 literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png b/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6dba46dab19242bf475ddf2e0a10042de6a0be16 GIT binary patch literal 4926 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 Y(pk%AnLV`?3=9kmp00i_>zopr05Lje*8l(j literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png b/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..da31a871c8dc461a1ea114510bfac640307b0a90 GIT binary patch literal 7472 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%0DJ=&Xru2T6c8)j`>!Wqws2mo zN`_}!C%dn^ae3!;3)#0J-;87D|6R`c;m=v^4ST=Y8akIP5KZM5bKyB$(pZrcHlc5w z!QQ=sZf{JF^X}GNs&`_8yxH|1H>=M1lr3GcjN532z2y&$b&hG)ujlEC9{P94drHmP z6{aB!eu0w(^j&35JDak$!}RrYyWAa-_olgTjhrMid$Zr3 z1ONP8j_l>R&|k*%_ViSyj3a9f&b?sd&a_>{QuXFvR`b=V%Y;msoJ6pC$IMu zFSsz#NazB~%X>l%2MCfVY*J7FE62#@0iVt_h+Pr6sZ(l2V_)8OmkA9KDyEuzx(ZGWVf;$C$l=mF? zBILNl+-H5ChCJK!+5<*q+&7NAZ;-sW&p^3N;o5qxGmrjA9#Ot_uxW|!gIU|AU#m?E zGF4$eu;z)wjH!nl)Q>T4NtR&bc@%TxN$?TtCcn1X5iEJh)5>OP_k5VYTW055&4>#z z->$i+S!7&%tbO)hl{xFtnlk~V`X2AMsq@(HpX90Qu|!;;x!!2`jLJLACH*?>2koN| zJW%Fo`;)}!+!q!4=!Q_&!u@)RO1qjbX1YsMC28{5X8IbwnNm9S4&O3yjdObKo#HWx zRXfC29_Nyf+qQ|zEoMWbpm=1<`X)ia)dvhNaf%&byXer}I9Ea{aJA!Oqwb9AW6zFT zG=*vjD%{)3^;3jXqsiLTea>I`%9HEX++N{0qb+aYp&h?B#b+JMvf#4n@7ef&<*Cg@ zSpuAkIc`{FKH;}J!}Z~GQQQ-L+kI06AM_~ee`=o}&3H`wZi1DhZp{hzp1zW{)&3Q7K;MfNFl+lm0y^+=~~-L@_E*1S zp~@OP*y+E`&F|^0`og3>LuXz4cWZ9BYoGl(?a5g-)7S|I zZ71GH=&RsLDodN2!t%h`Zr0rO=PM7iZ1&r8!hLhHOk5~K<&)&~>-8FJKD|tle$L{3 zX?wF{)9jE>nv>?Xc>H^i92R-@-({)%YuTAAPWMFZpFFZPB|mW0 zinF?2lQ%IX@?40eZktV;1HYJ+z8gienN9Lr54

FY>F@VNU!VOYOzdrY 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 literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png b/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f25a419744727fb48b4b4137b6c6a3a8f2620d51 GIT binary patch literal 10652 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 Bm4N^N literal 0 HcmV?d00001 diff --git a/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png b/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..e96783ccce844001359f968f5cd9d85b341bd3fb GIT binary patch literal 16570 zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*clic8a-VcLn>~)jb)Dz2^UvY zOL{L=-|M#cNZX<&E)I=tH>!Pl_9~S*2rdohZi+Z~Z}+i#q5_Uq5dzW*Hw3DMdfha? z*MC2I=G~i33cJr7YBIiGzE3n|`JVD~)!*-x-MKLQw_i6<~7grwmITF*|TrS){eUYVNOv8*B^~xUw@F(MWnq#I~io4(0^Y6)Y>C@UX@5NtQQhw^wJmL8{a{rGz*FV?uoELp&lCA%2)#{eX z=WoYOvYkKS{B{<3PCMZg;U@wN-7??G=il64dAjboS#{s#3O^h3IOg@O*NI`v#xe%j$zQn!en6()L2NXS8Wa!mC+g75$&S`?~tfI~gj{ zT=B%UN~P1r@k4s|mt5UtHutR3K26qrz0BsGkl(+*Z8c3cYv#Rc6V*Tev?5LB{JcLI z-eS#XH&yJg-0d*ozueJjIyT?C#Ge;^i0XRRxOaQOv$*Yj2dl%s_;k$+wb^&bIm!HU zU*k(@t#7q2(l6PUwtjB7BHH-(a!vd<|F5j9Ctl5eHrdl&{zpo`ANPsKIfX{YAHGz4 zG5yhEu?IUpN>%9YQDgisS9D)_XZbIlCy^g!ez>{s%b!OdMJ+a8S@ztr>qSPHZ&Xgs ztT!(cr#+E$&3X5~;+ti=&SsTyH@@G{|`4mG=8-Cl*M(fTP`+U3uhJw>JoL88*U$L)(6H# z7G=$1DB@(Auh}_QHf6r#?F8v|Kxg?Ty979_q%*^A9}H>13K9e)z+d(3yFX$BQGKnI_-_31wsq(Gnlu{zur}nj-PV+YxhkO&&ZDzW-#M z_g_8Dd9OXxYadOtpM31l&2yrx3+6DS{Oj+OD}4Kl^S0FOn85fBcftN&%f8zjpXBE` zRkbcpI$p#y~n7QeCRo+_%H6wL7rWrQncX~aQ?+2t^5ocWx$EY!fcaqI|Y4sgtV!ld@ zzH*m;zY|+hc;B;Q{+d5d(=-@Nxg5-{bFh9qr*g4!R)&!1v_B7`j_Dk|9DX%0Uc})d zr^59dhhHb3^xfuK+pN4#)O7*V&tBo!>`5=b%!paG?3AoB*Mbg~104$9N=+`)AG00& zoYk$Qao{1>L7t!aJ70VVlH8P$SEpzlF5)1_)gZ5@s${VDvDkIR9LM51`R?|ZCGFWW z^2+b_|*k69Mxe6 zW4W>2jK6&UcCQ;|J={e#dzB{i{kh-c5p8zvcb@Ycm_R{@lN@x++0oQvLaO!3}?XBbHs>eApq4`QXNXsRD26r5R6q zu&;jnC+@u8fqUi;H$1(Xx^<3xzst1=e^dG&MErfk^rlLf z?cMpll~4cZy>w4F{yKm|;Yr|eEY9DUZ@!O9iTUnSpEsXxdfvY0-y3!L_i7PJF?H##i~NS2X)=$AA4Wc z_S--GT;;-8bChX^zqdu&tUG0_i#uA6bGq-F`q)RaindMjWTx#%~MitB$ce32MAIZKdO~^X6?6xuqtw zSExw-{hTQg$gqe(WR_F;MUhRlx6)p(P*XiDKfy0J^@Q^qy%%QOz4KU?EbFh0b^2A!YFO*S z*ukXXF_p82t8|Zz{m!quI(bdQS$uwW8>xN26Q&V;)KR2Cqd|X$Q{=JhGLHWb-T8XL zaNU)zXKTNySxL@XTCwkc&=q%)1`UQ(7Ki&+D$mRED8KoaTb&SOE+u*^Auw#R%>Dd` z{<tO{mVb6eJ)6qi4SC0#4tr~qmv!4vY6BE z!(xvo79ZX3bY{t#y2}YiJGj!m-#r{E`PY@PgDD_Q>_E@OzUj}7U7ME@)H;*3%P@D= z*2AY}sO|C#D*YnPs=(!N^7^i(M3r+)m!BzpFNt-}5P$t*eRY9bYEkjW%G9c?Nep7? za~QhYqZgKM+OEMMx9i^b7Dml|245eFeW)pmDNbiFQ)=1F@R2p|?~V=iyjI*I?jar0 ze|v?w%zuebWmv;ex#<3Khq5xWmi^vJi|=LyGU%k)-s9~5SIzoAwYF_Recr*GPn(x< zIT&#Z#5?5gZxt=ta6;K>-J2Kr@3P|RUM*fLDCWPd@#y5YGoRdFz_n)H8^-_B8#lZ< z$~xm;h4qT6d4D$i3^mwu`i}?egqd?$r~mU4`10q*M(H@##`~X(vv$_A%#&W_rCgL9+@g>*4=UKE1&*@mZTk@cM8t=q3w4`tz*Bj{Q<{I;;(kpzlna6{3iQN zap?JG{m;kFS6<(CV9DaR8M;x&ww?%UUt0M8J)8RPxl*&Xad8;6+eC1#O45m*#LsQ~ zch)W`uHtoj8ZPUlGZh|~e|!lmN727de)B`0o~LJA)GEDW&jfC2au(XH`TzOL<=HX0 zO}R_^euIjrWBZQT>7Us-p_o~C@50}byB!X>zEz4Ae~?qZc!sOmo$i&Nt8G`RSstv@ zKX>@``S&Vw{~Ep)mYmvGJJrtN`tP`uu$~s3B)+1zjk(RaOD_6txbv#u_=L*&rQ7@7 z#+C>w9=rDI+LLX!Zyj=}>vCqW_$8yZ?85RjKAy|(|DC|c92{0t$~40*=Vkc({}Z<` zZ{ys?yDiXDph3l5;~L{F*_r#AmwB(g&7V+QcdEq3e(}PWwcp!SeHk*$`@C;6T>oFI z@v@?%qkJFN(uD`syE5FJJk6nJj%CH)`zE){r1lCd(@?3pEy|;JuJ%^a#|vp${Tv&a zer)^ftImCLcj8UeSCf<&V%{9g{yY2Y{3W07Pgp7M-B-`c^unp--IO{ByL9jLgWs3v zZuqk6*m{=dqC&jenfLCUoHKEDmiN>&=lLC*mX+T z=1oe#MivD54t|JCuTv-oQHgl*WO3{_3Tk4VaMkjl*o1W%pyY8}%o$2mVQKi(AV zzVPh)M!f90nnN#m zZoT84_h$L^09S?^+cXL?Z+te^sVi&R=IANTkj^H_61D&Gcj?=)1;!^7rptlm!CGKC|JcTG)QUz^zbx(ct8 ze;<9mZ*(X~RAQ}{y3@|T4>?QYobTUd^;hCKbI)b@UWLt}^`Ew1d_Ot$oV07*H1)(z zQHJ1HD|X>0J>`+Rl*1#>ai#xzQ1rRs_i2BQ+KJ5F3qxlpv+D^woi5nPoo*rZ zUfJoO%ck>80?$azg=p`e=09gW8)7Qg)R=5qAO`;U$1Deh}n)VhC?9>W@y>u(<& zDoOr+F_*=-`NrfLbE|vruQ#sLcF6c0A6(Y*FipTN@Pb>JhdoQ}%lWcfV3nbAu7AFw}I6mfpF--YbYb2LxfJoKC` zv25;Y%X193gx~$vPi38;TXHz#)U*?&DJ)MXb51_|Bb!x~SKsb0?|b7^*WJ&Kwoclu zzJuZ6g?k@c{M&PwGukwYwg*Tq%6TO1_|sEUT5luM39YqE2mT+P8>l+G6SJ1{c(@cJ98e>98>gUr5S^m?* z7$5X(dzmUwdo9R{IfYl@xoq7@<-L0^H*7PJ3X!mH_*-<-E__b4f8`!kX;y`lAHl*b z4P{2hZX5nPA1|u6_CWfP^iuWQi@|zDA(vPi?zr^z^+Zg&n|QTl;)%P5elW)Tw0!%| zTivcJXMG!0@i^kd|QP|Gj@+b?EoA%g;YN=lJf7h%Hk%6tdr} zHBBf>FxwZrz~<=&uh)!crte#wduh+91;6(#TZN*|Uk^v7 zQo@zpDIaR zovqv@?Y5jXC7H!BBf)N0_%TjTSJu*))u*V>f9mE^{Xg$-3IC6MHtgO;e$OnH$+InN zjO?tw-*Wie^@Up+TWrji@#m{t{{8uUeJ6{)f|1?crKXcNylr{I4Xad33pg#iV&)3% zl{#a7eny*&**3XA$4K`X!VW(d7J9E)ZhwWC zUnk`p&+q+pv^7ZfcDT5KqQG}Ij+^2)w%<5@^k?6Z(qcptW%56-mKJJkgnokGB}-TB(BX5<**5elqM3 zXv+@!`&it0b?#$x<@QKDZFL4+=2sRWuWAlw%5x=rTC5wX>dGK-X|}uD?CDBBxp{pA zj$C=E*Qz5Oe1z$QR7JMrmb=zJMT%xT-6X^$;aJ@8!F#H&P^|tX$p;UY2^ljdygYDx zsm1c;FRpXN9e8o2VUi-lp};L+Y~sx(H)Jp7)d8Pu43fUv5#<(e&R_C*AItywsJ%M zjUAag)#RA#%=W(iwn2r1VLQvaN?El@p=S?F*tDuPWD1kSq(|((($j4JCORE2JCT|y zljz6rGq_Q zJtlnSw0HzV49Aw%{~F9im$uK+V>t8vph*101+L8@k3{-|7Ea3wXC68Db~zd0}@?r*Y1`^E2l^ymS>}qm%37M7&Q5AM{#Y z^N;`1zmpBo`IjENyX`*V<9q27r-W9l-DI43Zh}$j)9w(4BUvv6GXBOV->$2ja601Z zh679)2Xth^uiQ30*mH(qzG)~!gyGwj4xD-U_WzjwUGG2mK$!2s&jUUNb_UFCbBo&M zZr2Y`nriZC`Tly=?)C4R4>qn#D7q!JYu?sYL&bXq{|b3hxKy%qw14gv3jNX*#URU^ zYc%`D_jmm<>+%gZBssDMxG6Q{3ZL{Wt_ZcYKIdRNB{d&RKb)5^g zS5FeDR&(6FH~4^FPI9O8&wB1}On-%qBhE}Y@MDW;&W`G+4cT+6WZ7fiWxnD`_!{ZQ zzt&uqx>s5Q|133zo?i)lT>+}zNyhJ*9@?FbdGh>1-Tjaq-;`D!;dt=m zFh}c?>-HxX{I0aF__p4_v3dLadyP-;`X-cJkNuq1;B6)^ee>JP_Lwx^1x=g{e;<44 zUi+WuWaXPKIVHz&TGE8G+-Tz(_+ z*gEFL9J^~=1FkR`SlEAGFR!z^JUohF4(F9KwGPpr9L}3$$}Y(7@?ZD;uUHuy$BsIg zTW@F1QU578@8a&x^$UJ#iv3TmV`{(gwsMkuqw#@%><63T%s<>THQ?RCS`+9R_bgzd ze#_jMe?J{BY+L3v+hGnv-K^Vdcb=5p9^xz1!2HvC;prK7YX5e))qYa4SNas0)cKLI z>2m%P&pMaw++`nr{N;9B|Fi9k&E=$Pi*6q5a5(4_aAl>yTmLgPLHQoi%u87pTn%Rz zKcsc__4R!dU*=wS@fBp4X51Nic#-%yrrAP%jTa9}?(E3lP%mZCmM^MP5+QP6EBEy5 z-3MQMxfAo`ebqs+Z=5#2iY=zgd9z+nydc%1B>qguaiZE`)wK;}^?v@VQoj^??@~Xo zr|@SJcf(yC=YZv(b*F3i3NnNh{9CZBW`4bWeaqvM3k{x3Q5J1dJg9$M{J^#7^oL*D zCvD%zR@*4+DZa3Nf$@wvbKMO;oeJ79LvH=H(%$`cd)pfqzPs>nl4xsT&)y!(kR>lK zl-D}EKX7Gs%VGNfz1Od@w6z&Zq_U*%7wlTW$z`%* z&9nTpNRG9NnDC{w!85rOuGRIcz2T7lm#{VB z_|aj}tIK}WZJc)@>#cnB#KSt%rwSd|ZdJ=$sGoXvU!&jW?%g_E*Vgq28hp`o+H3LG zg6mlP*NIAZrYEpQsI6iDFW%@HB$k@1)V!IFFgEe zoJ4lgj`+TfzgI+_c=)XO1Y-J)}bN@S|Zr|)j!8-5RZ~V84Q3>N@TDMwfe|d}5ff@<++fA-d zvSvuW<+n|~yKjc|lAywvLl-?)N+0|)m|n_}=RywYehh*CF1+nxmN;(7p~bY$=GTwi{}MK3 zyYW1H*FWWOFZVtUHBp9W@s65nZ^a*P+_~e_;>X!u#@-*+ty#Zq+l%^o=j973g+7&Y z&10XdufKq4hUi(21(#DlSu?sG;7mC4b!x(v!cU1$^iC({hOz`~YjYI-^Xa?odHpS^ zX$_*5u7CRsW~*1bI!z7W>5frS-0#8=Xv5fYrrj_6*=2#10!j(@1*aJs9g^mm)*IDz zC)F}0ERylVb*3!o+&Ly0pBC%RXS4et`bYIay<8Hh%(HwR$Rl7#IzuK#o``@6&zfNd<%azGrg#CUdrCnJ$>P;MI%(lW*5%6@Rfk=qcy=ZQg@AO}j@-5uC?<_E;G3 zZe09iI)_4(AA`=#tR2zD(+nF z);#y;{^RpbjOYJ1?rpO=P|vn?uKj1>niC=qq-M%1{ym&6A-Opw>9w{{gVLwqn9w{m z2gVsHyP9r3yxCv>W?6RAoKRCHmDyswW+79xww~B8{ZHs=*%A%b3*YCNuPsOr-sIO* zsrWA_=Ap7ee#<)c_Z@p5$p2N}5p&nA-t7$k$>Y@hnsfj@;s{Cu`N{bjm9?5!ny6z zw^cv*+~B|cZeDxn_Wpy1X5SW7PCP!nkb9%>o4nk1x$wCuED4gE{gfJPPU;Ib%9iYV z_r+DPfNw)!k8Q~L{3dUp66NnGpE~spOmvN^C}GJDr?tS zVqxQJ_;1S;$KT4+E_~f#>SOtwck#I@hu@1YOUgWc_=AUYiD`A(ljyyUO_zC&vFWj% zPOyJbSI3z5gROb9&79ej)ve~t*FMTBSMXb@-8<}p^$E^rZNCq{xRAQ1rp_)$q)GnO zlQ*^J-b~~yZPS~=^_c001U-8{PYtQ)R?cOU;CH5moi^a@gxAHWt$?}FGtOZS?4v8o9)frUwJ27(j z)E(KOFpq&nZNCeHAY%}tNZX&EoCn7@5TnE z4P+NvVA$-= zWb`PQanAR)i#3cK9(A1zdh1)>iN9e{x9|HA#8|jh?^y@7W7pGk%qhm^FL0iiN%SC7z&VdIGbY-}Xmo zxz=elEao%#siMum=w5g3-g#Aq#*^nc5@v=lFinnkV@SN$G}HD^fVz5v<;O}61^Z9M z4uW?Irgb#TvM;~0p+D}r>?(T(%c!MC`M2Kq@qc@(XoHFImNZ|U_D9m+>t0D1{bwov z_(-F-!x&=>;3&u}mXi?f9!f;xWaYf@Fi$~t98v+VG1vAE!v90#-V>mPeWSOYL zoc&3RA`|||SlusRy1YB*i+Yye3$`AF*VlS2( zJ#96rPdTfgyH-n7`r5kww1D4>jjwIk?68ruAzIym>6v?-%*S@Q;w4Nkj)^yP@vUEE zQGb2127|m7L+J#0&w0}sS`_RT<#%vLxIPtY(BfOa$W>3|z?UBkZVZCwv?kBzY7n^J z!NI^jJ58>+Oi?{DFHG>#pOdL>6C1y^$lGTfAS-K$4{KRrc-al&&k?SOG5Wnm9Fg)4a~H%)xRZw)Vzq_@AK&+S$iTbI*RuA zM)P|c`!)XFoctmCRo2vVh99mOy(r7FE3vf+7ppgtsJS4&E8X7L7C1kDmM)G$+a6MUQX<>$=9w=`{;)XGUwDyW#ZRn0tvu_lD$xzV^>$ z7asp{ViT{}(GlTd`1w@U2Hx8Y&dqlg9$)HuVe+AQjtcyad|Vf`Zv=LowrQ~l?BR)K z>)UucvFb@w)WOF7dkgh~T0RzB4ecrjeEGzu7|ku_@E~AZO=X~x$}LiOZcvTS^Qu|6@!lc zub_1CMm7HCr3v+R3}W%O*uv7o4_z@n9Z_-k%4VB6pV_#(o^G;u&wSY;=0RgjcXR23 zs1JNMdFM^v-kAD;OS9=u!Y&r=r5tGn%!QRxMHE+SrUk80Trxc=@<`l=ZYvh}I%cXcpu8eFk7pLDothV;<`nrZATcWfB%ePqwzm0vBvcFj=w zpw+a)Y8(2J6P!0jc2%%_7P!96qp(){Xw&Q4iFfA)Z}|64vS80n>1X%vs5RyuD$~sK z+^A64F0#Em=*HcfGjrYR<`o=K-u=1fpz(xmQR%De+V6-YeSF>BofH+i()dopf}1BU z9G$*=Np72F|F%@$+AX3XjaMhzKKO4W5Vm&*!)5t=_R#aqGYZmWd92@aHTT^N=5doL zZ;(u{Nx0a`AW?pbn{9qUO2MRq0!K8L$4FF3Jv{S(=a6gHW<7(R!fr3YKi-eOA3ii=?FaWA=FJ@W5~3Spx;*&o479qM^?UlB zDYhNvl91It`eVn`2bJ0OI=(hMV%Ps9`s|TEdgI5`pqR%Ge`#?ZyX&xK+5E@(>rVdC zO))Hq&lU8wxY1NJ(euWd1$>{?!}A2Jq(r5z9NKi*x9*!{UZ>&BLqC{WzcLp6WHFz! za_!mvZ#>rTT-^WWx#zNM{Q1;*ZU$RqjFR1f)}u`~|9q10uW67x!sGPWonv;qTKQD5(>_xZ90 zL%bV9mV&+Lfu~P{KoxZ-LsA5zh|;ae*SXgBFf59hqHcfeU-FyHRxulzrr9a46MVOI zk<6Mi(;UJdznFhp^4g_UVGHYgMI3_Xsvb_0IBxl5#Vob8e2fL0B_1{_8TNECJma+b zRD4mclR-}}3|vEVC=^V5@Z`AQ{`aEcZVZBUT1S8GpK?1{D3RZI-TLKBFC?F?68Wi_ z^rra5i~Z?Ee$AP&ZzfcWzPkQnVpx6f;?J|E8^?IAE_!N}^L6dCU+L-W7iBF|#0)}< z?3eFiQJBfe!Pq{xU|HWf7Y3$D@k$L2&}PTN>?KSB6aEA-=Co{_!@y!t{bQk@A48bA znKx@dz$f8Hk6+{$l<{qeFtcfr{ac^n{@?3WN!{ld$z!qK*Zf_2`O3QQ7DbEatNb=L zbzzv}|KYZ(zZ=8xXPka@S`EfFpqjITQ_&6_f?5p$;Tt+rSrrU^igGPzcw(;h#JsEY zgjrV%OVw@lnqP@c6IF}WIi2O=y}3&DX?NC_^P)maH#_|N)O%4p&%5jtWypnXbW4OU4)T=dhl&WuL!z;`~ohy*Dq;m;a?>#8`07pk6E^>OKEsySDIW z_QypyQ;S-m+5&Y0lxzca$OR&A4T%dNk8@&E2cD*J0ZrtI@x zQ*$@V_e6T}UEk!tJsYkq7Lrcu@?zMLU}kc$eUiV&C*@sppK?0zK3UGRYSuyd^{lR(d(8pfE?=1Lnz4$rzyhP+QK6WD)BF28Qa&f1`uE&IHY zePVD_=;@aMeWHbT_Ad}rjOkpxGITN1I_^I)+saI9nxsF$4I>U}qCaor? zyyPb=4bs=II@Za2v}8<3TmGQ5dIiHBRVIO1e?k~8_PH=fOEMnW_0;#Dgh_3|(Q>^l zAEXQS=d9(LJ0Upg>S^;uGRZr_QVRb!onyL{V|VQP(^ny`OSfg@T&;CFe)_Xr(kz#{ zz=e-Q7(^YJ4BOA0)xF}UC&DmIXCj9KFUX=p*B#F%upjIWQ&eHk0b(J@d}{7{f*IwpH zY;HT&a8cxxvR23)rUbKF)`3E+cFlB!6n+jjxK=W-=ta4*3cT|Ro~a5dDTEkRPH;8& z*FBb4`SNnvepZvn8|Bvt3KX{YG$R`;58kJ{(t((TSR6$ z%~D{geUgYP4=l?+K0W%ica-#sgoub0TT z>YruDQ~v7oOuN)ACO=N(a%Edv97yWcfSsJ>^uLDkD`?5qLW3pzBJz2a?7BKf1lLkA54=%IDJJLj>zmv ziCu6-rj9S|^A!7<#Me44DrS<9-yKx&$(X4iiKQS~iy`^g%d?r) z2bgAAeYJ0rxp-;W$vpdyi|nNGe?6J5b6jVF;kFp>lAJGPejIOFQjOm2ym(^5GA;)# zrq%k(%oBDV+QXs{@^X^r!#XZj5aZuO7l!NGy;v0#K#5kIq4&oT>$L6GMzXUid3lxZ zWGqiOxO$J8TkRCX)`E+R*zU`(xV2;5#C!WR3)_}3Uevsn!WbZ^vMVU*+4e)-TdM*X z9zSJKNVzNL$|SHVBUF!(!{=WNQ-`{-!yMPN|@-{s~7JUuS8Ea$}J&A+ox=vGYC zVAMDz@$@(Iu2Mszk_(^qd2V6msoJ1)TJx{}hU#7NRjT@|#Y#*I4PSrciz<5h{mNFY z+Wpy0(h{tKMsw$$ejvlH{i5U^S5@qmxw0IqjZ>s}HKw2sU%@eKVOK-=rbuA@3z{xLtYcZ_63ScOAHML^q+jn*Gb}eHN=P zM`~w0{r$UHN>=Ktt6#?TRd*((e;3bQwtUwg#$BzOKK;*nRJQF}Zrg0$pO2^9PA=&( z+rMkh&X1u2XXCzZF>f(ActQDogMp zfz^^Or<1bINNFZr_eu~v?)=A!>-Ov031{a{-coXMOZIDyKZ&zvc^=J&AUj*f3jv05hI=IYPS)%R7uIpP0pj)-Z6UQdg4 zR5tkDWuEr1#b^58gscvcu!a9N*c91UxV>TO*4AFi5vzL8#6_b0YC`2y_98#N%gPlU zG1><={b1hk>X+azroEDZuO(d8H_yEIk0+_3gLgtg*qf>uqQ{+W+IbCLOEuqQ=`%0C zxG40r5dYyf($bpG?%Ys0>T73q_zsI)Uhc#LT7|1cwlAGgUTwXmxEM}^A&1qS>tq>}h!*WYNilwZgf)MDv%;jI?`L%*GZ zjRkFjhW8%K*ubr`p4DNyNBRq~r#yET$1Lf1rg$v0D?+m>V25GHx69UT z_hgHCkxu)2_Zj#V#Jy&D(Nc6y&+1?X+rpoV`xb?EoIJuaOIVg+?>Y<4xGh{4?N15k z%NmNE%6{mH3v?n~U0 zT=rYo_~Jv~i!U8>>ule?&wjD-$@*|9CA(Ixej$^UR~pPZ;&d0Q+1}2XD{$TL2Aj{j z9ZxwvvPqS4Hh3;5UdHnFAXkFZiK49&;*}a^e7&H3#q-0WP>V;}A`Xft{KG3A%M@*3 za{sJ)IPc1p>^tngcU<~@)$run&X^s+ySGe^53JZCwEJMAAfvT#$d7%?Hoj}S=*V_t z%7MVJtCPB26&a$~H7`y*_H1Jcr(4Yx$2zTs6QKsvg&Q26a{Vl<6FJb-@-~Q3B=5=j zL;H_P&9mRl%eD4Ht*EfqKdGr-DxR!AS@dAF;{HXxCN+W{HBFmRPrus!;cw~se=l#I z`JKqE$yCb4VEAC0xuO3xW2OM+pM_iID+xAij(YWtr{h}^>xNwcX7-ch!++g=GlRod z=9lcTeJMHrymBKpyU+V`zs~o`d4HC#Ph2ka^~l}(<(^h^;MnrtoFQMhujn=$)T~RG zzia-a5LwXhe;M-^u3|AzjaK z+06dGTD?9_>4D7SV^LGLMrUSb2Me0a%Cig3|Nf-?h4_qnrRM{m9<6azWQaLCZ}zU{ zNujc()ddH=l^7bk!vYzP2r%Ax#OWaUY4KivmWJD2(QE#^E!=zYSlE<5x1w@0;*A#i zoqH&Ha(;jEnN|JlQWl_J82Qn#mqBZ!TEDlJK{}{BC61;>`<| zdaqyz+ssrD=zVuyV-2Iol8n$TC0CATzj!;7$-bJ0bN$7If%b2VFO|Q|NK@Z@;%KYY z&WwJKe>E-#bf;b9628^*c!|5z*1dhV75nZ7UVZamDX8^5c*5VUHkoP7jWxRy-|Pof@e{Xx|9Zpj_sqA4cje5l z6J6-HQ0(-ojg^WK%t7s?3s!Kv>NlHnCGGN#=o=rlyz!dk{%m?$^CB?@aoI&m0xPPR zpM8t?$f8j4Qb?=eh-?t!lhDX&Eou->9ylso1uKE*w?$k+ngem zZ>di`we6@~(&0Jw8*0N{^|rgK>=#nfIKJ%YwJ8?IqoU4Q>}PPF!}hpm*@Tzoa^<;+ z#}{}mIiaJa$5>#@D71Bh^o^Aak2)9*#a;>8?yl4zon16p{`KeNscA*}KY~6z^KOq_ zZ@y)(>bJ%t_tIB2m^^c>(%M|BF)7|v@Po3;)yU{cvs_Y^Wa`f3JvHs^hs~c4T&=QJ zPfc)TkD4JqH|1VWz#OI%-YloyJvpVy(C9rqfbq^fO+kjwW@Sc?jti(yui1ZB&^u#m zR*KtVOWSJ`&E6l8{u=$+XWp)y_>aoAN%oT4ghtBl*RC0<(*6I{ z<2G~f{m0L$@0@H^auC_hU{Ty5+^BU`+F<#7!G_hK+}HCst>NmK+Y*IW)b}5^vR!N5 zTfP4AjsF$8kC!=DEVf%_Vv_#5$+&XWr#H2Rmlm__UtlEd{ZC#x@xsMRZub`?RhOAv zSZ}}T@{?(+-PyKV=lq<|bddmXdQl)%~yh&3!8l ze(TM6FW%^Rq}A)^W=CVGs?{#84y_*!ix{sC%l_Aq^Z)r5pPKhmA0KW8jg)p~E_rkM zPm4gq5gDbHP_w0ytO;|cGlZz@SM;uv`N)1$|KuTq7bm>uE!bY0lxDnsVW54F;iiWj z{kf}SJ)`@#e*L+)&NR+xcE%@>z!g*Mr3>~s1{+ClS&|mG)a&hymA4pLFI3PsjFeY|Eh?j9*YKR7d>dE{Qg7(MkW*e5iDYk08>C``Y zn?YIs<>PtY$J;j@F`qEQI^%Wryqd0OMW zb)J!DYu)br&Wu~{dt|4qmUqppV+&5NduEn)dkdfbA!Ye{A}8a|Y;N2W`Nj6U{Q{>I zEB4iyYjcw%Q=kN6!83s_h5e#&oeWBM7YHlb zu?pEA(pw(<h{#fD5QAUTg4u)4S3Lhd6(Y0d;1uie?! z@9+DU-?Fhh`Q*i%`rUCc47N&h7M3@OfANmv`x{)l@IUkXoKG`b=OAk_WnzLJn6J6pMLRrdl`TEql1#W+zn#kNShv}bF*sP7%t=?|<5nlgv#*%A#&VJ@wUp$Lj?fm%Qn&8s{^7CifSW92c zJh%B{y#~Wa*H6PCzVvh3VJp83%jMgvt(CC?B<`Lnw-S!*Dmi9bxF{kU7KOcOvLX^iciQoDA&Ds~6j(!Sl4}JV@YxJk; zj(3L~tLx`oI=r`T|2E-|_Y8Df^6!PL@tfCZT)5@sF_FA2&(F;HzcDwkH&=S%kEJmj zb2gu8_5Zoq$yw5Hf$y1Fo}$^|kAL&LtyIo#|5TbaW8uv!MO%KJF}ucWGwa6p@A>a6 z-xPS?7o1-5*WLAHo<#NPug?lStE|=Sa(3sxnq2mKdD<51jE|e{CY}y|`+v^Au7AH9 zT-|Q}4W9qv?W{i=zFzz2xt7^Y-Q=^J*w@Xk7j#>7|B}x#S-yM!I#+-Hxet#SU!0>E zzr09X?&jCZ?^o9;3CSIv-cxxwsP7B!Q@3ipIVUZ*D}CJ0q*yci_?m#pTkBtcOlw=V zCizBF&w{m*jt1Y1=PGJ>E%K@fEHFs$ytT5XS1T>F^wrmO3;#bpFl+8?p7oilj2A7d zJbhpD!~G}aKk9#&|Ja_hDUyBO-F5T3--zBk;p=LWU$AtVKwR`{)4k!(=FR@(_N(g6 z=BsCtxBL%N`FCC1^wD{)ry?B-`LdP%9JqC|#?io-<<_Mg<&wb$9R??SE-p;kdrNkO zMS;pR(T<`6?Wqo&1FXF9lzFSUhL?dYM$!blcpmXz2QiXYdWuzfbN!q+J=%-cnqGM zWB*+J?){7MEt#_lwZFya-Y7OtUVnAU-ZJHHaj!me#CPv~z6xYPoXp#!iw`7Sc=nTL zj=~PfMP}JyfBH=g>k>}>Q1(7^OviKf2bV(+(=9*zU$6Ol?))3YCQ0XSPT1>a`)$_! z&EF67evo-+IXf;|Wp9N@7*7|=!LtIQk((EBc^`PSCONWOHBENflG4aSMNSU`=Cl4U zzjOa;>i+0<+i=})cdp*d4ozGiJJI}*w$dJts*eILJfE5ZRJuOtNNRsb>p5jJG34o4 zg{}jC>qYN<*ZSxY*SNP$X%j@PhEd=N?q*^4$ax-HDw6_P{@wqu|97mMi}*=BIVtsy rJx2o7_%~`OmCmg3&=ZO~@c2JZ+c_3ZX;nrB1_lOCS3j3^P6 + Neon + \ No newline at end of file diff --git a/composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml b/composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml new file mode 100644 index 0000000..1ffc948 --- /dev/null +++ b/composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt new file mode 100644 index 0000000..42bb105 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/moe/lava/neon/App.kt @@ -0,0 +1,49 @@ +package moe.lava.neon + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.safeContentPadding +import androidx.compose.material3.Button +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import org.jetbrains.compose.resources.painterResource + +import neon.composeapp.generated.resources.Res +import neon.composeapp.generated.resources.compose_multiplatform + +@Composable +@Preview +fun App() { + MaterialTheme { + var showContent by remember { mutableStateOf(false) } + Column( + modifier = Modifier + .background(MaterialTheme.colorScheme.primaryContainer) + .safeContentPadding() + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Button(onClick = { showContent = !showContent }) { + Text("Click me!") + } + AnimatedVisibility(showContent) { + val greeting = remember { Greeting().greet() } + Column( + modifier = Modifier.fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Image(painterResource(Res.drawable.compose_multiplatform), null) + Text("Compose: $greeting") + } + } + } + } +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt new file mode 100644 index 0000000..e9df53a --- /dev/null +++ b/composeApp/src/commonMain/kotlin/moe/lava/neon/Greeting.kt @@ -0,0 +1,9 @@ +package moe.lava.neon + +class Greeting { + private val platform = getPlatform() + + fun greet(): String { + return "Hello, ${platform.name}!" + } +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt b/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt new file mode 100644 index 0000000..525fa35 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/moe/lava/neon/Platform.kt @@ -0,0 +1,7 @@ +package moe.lava.neon + +interface Platform { + val name: String +} + +expect fun getPlatform(): Platform \ No newline at end of file diff --git a/composeApp/src/commonTest/kotlin/moe/lava/neon/ComposeAppCommonTest.kt b/composeApp/src/commonTest/kotlin/moe/lava/neon/ComposeAppCommonTest.kt new file mode 100644 index 0000000..2173ad4 --- /dev/null +++ b/composeApp/src/commonTest/kotlin/moe/lava/neon/ComposeAppCommonTest.kt @@ -0,0 +1,12 @@ +package moe.lava.neon + +import kotlin.test.Test +import kotlin.test.assertEquals + +class ComposeAppCommonTest { + + @Test + fun example() { + assertEquals(3, 1 + 2) + } +} \ No newline at end of file diff --git a/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt b/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt new file mode 100644 index 0000000..f94e8f1 --- /dev/null +++ b/composeApp/src/jvmMain/kotlin/moe/lava/neon/Platform.jvm.kt @@ -0,0 +1,7 @@ +package moe.lava.neon + +class JVMPlatform: Platform { + override val name: String = "Java ${System.getProperty("java.version")}" +} + +actual fun getPlatform(): Platform = JVMPlatform() \ No newline at end of file diff --git a/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt b/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt new file mode 100644 index 0000000..8145dc4 --- /dev/null +++ b/composeApp/src/jvmMain/kotlin/moe/lava/neon/main.kt @@ -0,0 +1,13 @@ +package moe.lava.neon + +import androidx.compose.ui.window.Window +import androidx.compose.ui.window.application + +fun main() = application { + Window( + onCloseRequest = ::exitApplication, + title = "Neon", + ) { + App() + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..2dc57ad --- /dev/null +++ b/gradle.properties @@ -0,0 +1,12 @@ +#Kotlin +kotlin.code.style=official +kotlin.daemon.jvmargs=-Xmx3072M + +#Gradle +org.gradle.jvmargs=-Xmx3072M -Dfile.encoding=UTF-8 +org.gradle.configuration-cache=true +org.gradle.caching=true + +#Android +android.nonTransitiveRClass=true +android.useAndroidX=true \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..c55f102 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,45 @@ +[versions] +agp = "8.13.2" +android-compileSdk = "36" +android-minSdk = "24" +android-targetSdk = "36" +androidx-activity = "1.12.2" +androidx-appcompat = "1.7.1" +androidx-core = "1.17.0" +androidx-espresso = "3.7.0" +androidx-lifecycle = "2.9.6" +androidx-testExt = "1.3.0" +composeHotReload = "1.0.0" +composeMultiplatform = "1.10.0" +junit = "4.13.2" +kotlin = "2.3.0" +kotlinx-coroutines = "1.10.2" +material3 = "1.10.0-alpha05" + +[libraries] +kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" } +kotlin-testJunit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin" } +junit = { module = "junit:junit", version.ref = "junit" } +androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } +androidx-testExt-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-testExt" } +androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-espresso" } +androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } +compose-uiTooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "composeMultiplatform" } +androidx-lifecycle-viewmodelCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } +androidx-lifecycle-runtimeCompose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } +compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "composeMultiplatform" } +compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "composeMultiplatform" } +compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" } +compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "composeMultiplatform" } +compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "composeMultiplatform" } +compose-uiToolingPreview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "composeMultiplatform" } +kotlinx-coroutinesSwing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines" } + +[plugins] +androidApplication = { id = "com.android.application", version.ref = "agp" } +androidLibrary = { id = "com.android.library", version.ref = "agp" } +composeHotReload = { id = "org.jetbrains.compose.hot-reload", version.ref = "composeHotReload" } +composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" } +composeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } +kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..1b33c55baabb587c669f562ae36f953de2481846 GIT binary patch literal 43764 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH="\\\"\\\"" + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..5eed7ee --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH= + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..00784d4 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,35 @@ +rootProject.name = "Neon" +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + +pluginManagement { + repositories { + google { + mavenContent { + includeGroupAndSubgroups("androidx") + includeGroupAndSubgroups("com.android") + includeGroupAndSubgroups("com.google") + } + } + mavenCentral() + gradlePluginPortal() + } +} + +dependencyResolutionManagement { + repositories { + google { + mavenContent { + includeGroupAndSubgroups("androidx") + includeGroupAndSubgroups("com.android") + includeGroupAndSubgroups("com.google") + } + } + mavenCentral() + } +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" +} + +include(":composeApp") \ No newline at end of file